Store
A small reactive core for state that should stay local.
Store is a framework-agnostic signals implementation with immutable updates, derived values, batching, and adapters that let components select only the state they render.
uiStore.setState()
derived store
visibleRows = 3
Docs
Examples
API
Each control updates one slice. Only the component selecting that slice increments its render count.
Infrastructure, not architecture
Small enough to sit underneath the product.
Store powers state inside framework-agnostic TanStack libraries and can stand alone in an application. It provides the reactive primitive without prescribing a product-wide state architecture.
Store
Four focused primitives
Write, derive, batch, and select.
The core stays intentionally direct: update a value, compute from other stores, group related writes, and subscribe at the granularity the renderer needs.
A value with an explicit update path.
const count = createStore(0)
count.setState((value) => value + 1)state: 1
vanilla core ยท renderer-specific binding
Framework adapters
The binding changes. The state model does not.
Use the same framework-agnostic core from vanilla TypeScript, then connect it to React, Preact, Solid, Vue, Angular, Svelte, or Lit through a thin adapter.
Use the smallest state tool
Store owns one clear part of the stack.
Reach for Store when state is local to the client and benefits from reactive derivation. Keep navigation, remote resources, and relational API data in the tools designed for them.
Store
client signal
Focused reactive state, derived values, and selected subscriptions.
Router
URL state
Shareable, bookmarkable state that belongs in navigation.
Query
server state
Asynchronous resources, caching, freshness, and synchronization.
DB
reactive data graph
Collections, joins, live queries, and optimistic API data.