State · App-wide state

Expo + Zustand

Zustand in an Expo SDK 57 app for iOS and Android, wired by one command and checked by doctor.

Zustand gives you small global stores with a hook-shaped API and a persist middleware already pointed at your storage adapter. I'd pick it over jotai when you think in stores and selectors rather than in atoms, and over none as soon as two screens need to share state. It doesn't replace the built-in stores: theme mode and onboarding stay on createPersistedStore in core.

When to pick Zustand

Zustand: The default. Pick it when you think in stores and selectors; persist is already wired to your storage adapter.

At a glance

Runs in Expo Go
Yes
Files added
5
npm packages
1
Keys to paste
None
Included in
Free, Starter and Pro
Tests included
1

Set it up

bun run setup --state zustand

Setup copies the module in, installs SDK-matched versions and removes the options you did not pick. Then bun run doctor lists every key still missing, with a link to where you get it. The step-by-step guide is in the Zustand docs.

Wiring it by hand instead? Read the guide: Expo zustand: persist a store across restarts.

Zustand vs other state options

OptionExpo Gonpm packagesKeys to pasteIncluded in
ZustandYes10Free, Starter and Pro
JotaiYes10Starter and Pro

Questions

Can I use Zustand in Expo Go?

Yes. This module runs in Expo Go, so you can try it before you make a development build.

What do I need to set up Zustand in an Expo app?

Only bun run setup --state zustand. There are no API keys to paste; bun run doctor checks the result.

Which other modules does Zustand need?

It needs a Storage option (expo-sqlite/kv-store, MMKV or AsyncStorage). Pick those in the same setup run.

Does the ReadyNative free tier include Zustand?

Yes. It is the state option in the free tier, which is MIT-licensed on GitHub. Starter and Pro add the stack picker, EAS store builds and doctor.

Can I build the app without Zustand?

Yes. Pick none for state (bun run setup --state none) - built-in useSyncExternalStore stores only.

Zustand or Jotai for Expo?

Zustand: The default. Pick it when you think in stores and selectors; persist is 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.

Which Zustand version does it install?

For Expo SDK 57: zustand ^5.0.15. Setup installs Expo packages with expo install, so they match the SDK.

Get it

Zustand is part of the free tier: clone it on GitHub. Starter and Pro add the stack picker, EAS store builds and doctor.