State
State for an Expo app, compared: Zustand, Jotai, or none - Expo Go support and what each option installs.
Hey - here's how state works in ReadyNative. This category is about state shared between screens.
Local useState is always fine, and the built-in stores (src/stores/create-store.ts, a tiny
useSyncExternalStore helper) already back theme mode and onboarding - they never depend on
your choice here.
What stays the same: persistence goes through the storage adapter you picked in the storage
category, under readynative:* keys, and with --with-examples every option ships src/stores/example-store.ts plus the
/examples/store route as the shape to copy. Swap with bun run setup --state <option>.
- zustand - the default. Pick it when you think in stores and selectors;
persistis already wired to your storage adapter. - jotai - pick it when your state is lots of small independent values and you want derived state for free.
- none - keep the built-in stores and nothing else.
Options
One option per category - --state <option> picks it:
bun run setup --state zustand