useSnapshot
Hook to subscribe to a State container's current value
useSnapshot subscribes to a State container and returns its current value, re-rendering when the value changes. It has two overloads:
Full state — returns the entire state object.
function Display({ state }) {
const value = useSnapshot(state);
return <span>{value.count}</span>;
}With selector — returns a derived value from the state, re-rendering only when the selected value changes. Pass a custom comparator as the third argument when needed.
function Count({ state }) {
const count = useSnapshot(state, (s) => s.count);
return <span>{count}</span>;
}State containers vs stores
A State container is a reactive primitive that holds an object value and notifies subscribers on change. Stores are built on top of State containers but add features, actions, and lifecycle.
| Hook | Input | Subscribes to |
|---|---|---|
useSnapshot | State<T> | Raw state container |
useStore | Store instance | Store-backed state with features |
Use useSnapshot when working with standalone State containers outside the player store system — for example, custom state in component libraries. For player state, use usePlayer or useStore .
useSnapshot is built on useSelector and uses shallowEqual by default. The HTML equivalent is SnapshotController.
API Reference
Without Selector
Subscribe to a State container's current value.
Parameters
| Parameter | Type | Default | |
|---|---|---|---|
state* | State<object> | — |
Return Value
object
With Selector
Select a value from state. Re-renders when the selected value changes.
Parameters
| Parameter | Type | Default | |
|---|---|---|---|
state* | State<object> | — | |
selector* | Selector<object, R> | — | |
| |||
isEqual | Comparator<R> | — | |
| |||
Return Value
R