computed
computed<
TResult>(fn,options?):LiveQueryDef<TResult>
Defined in: packages/@livestore/livestore/src/live-queries/computed.ts:60
Creates a derived query that computes a value from other queries or signals.
Computed queries are memoized—they only re-evaluate when their dependencies change, and if the new result equals the previous result, downstream dependents won’t re-run. Use them for expensive calculations, aggregations, or transformations.
The get function inside computed establishes reactive dependencies automatically.
When any dependency updates, the computed re-evaluates.
Type Parameters
Section titled “Type Parameters”TResult
Section titled “TResult”TResult
Parameters
Section titled “Parameters”(get) => TResult
Pure function that computes the result. Use get() to read dependencies.
options?
Section titled “options?”DepKey
Explicit dependency keys (required on Expo/React Native where fn.toString() returns [native code])
label?
Section titled “label?”string
Human-readable label for debugging and devtools
Returns
Section titled “Returns”LiveQueryDef<TResult>
A query definition usable with store.query(), store.subscribe(), and as a dependency in other queries
Examples
Section titled “Examples”// Derive a count from a database queryconst todos$ = queryDb(tables.todos.all())const todoCount$ = computed((get) => get(todos$).length, { label: 'todoCount' })
// Use in a componentconst count = store.query(todoCount$) // 5// Combine multiple queries into derived statsconst stats$ = computed((get) => { const todos = get(todos$) const completed = todos.filter((t) => t.completed).length return { total: todos.length, completed, remaining: todos.length - completed, percentComplete: todos.length > 0 ? (completed / todos.length) * 100 : 0, }}, { label: 'todoStats' })// Chain computed queriesconst hasCompletedTodos$ = computed( (get) => get(stats$).completed > 0, { label: 'hasCompletedTodos' })