FrameworkStyle

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

VideoJS