Skip to content

clientOnly

const clientOnly: <TName, TType, TEncoded>(args) => EventDef<TName, TType, TEncoded>

Defined in: packages/@livestore/common/dist/schema/EventDef/define.d.ts:143

Creates a client-only event definition.

Client-only events are synced within the same client’s sessions (e.g., across browser tabs) but are never sent to the sync backend. Use this for local UI state like selected items, filter settings, or draft content.

Note: Client-only events still require materializers and are stored in the local eventlog, they just don’t participate in server-side sync.

TName extends string

TType

TEncoded = TType

object & Omit<DefineEventOptions<TType, false>, "derived" | "clientOnly">

EventDef<TName, TType, TEncoded>

import { Events } from '@livestore/livestore'
import { Schema } from 'effect'
const uiStateSet = Events.clientOnly({
name: 'UiStateSet',
schema: Schema.Struct({
selectedTodoId: Schema.NullOr(Schema.String),
filterMode: Schema.Literal('all', 'active', 'completed'),
}),
})
// Update local UI state
store.commit(uiStateSet({ selectedTodoId: 'abc', filterMode: 'active' }))