This is the default storage adapter: Expo's SQLite-backed key/value store behind src/lib/storage.ts. I'd keep it unless you have a reason not to - it runs in Expo Go and gives you sync reads on native, so the built-in stores hydrate before first paint. Pick mmkv if you're already on a dev build and want the fastest possible reads, and async-storage only when a library hard-requires it. Whichever one you choose, callers only ever import storage from @/lib/storage; the StorageAdapter interface and createMemoryStorage() for tests live in core src/lib/storage-adapter.ts.
At a glance
- Runs in Expo Go
- Yes
- Files added
- 1
- npm packages
- 1
- Keys to paste
- None
- Included in
- Free, Starter and Pro
Set it up
bun run setup --storage kv-storeSetup 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 expo-sqlite/kv-store docs.
Other storage options
- MMKV - fastest sync key/value (Nitro) · dev build required (no Expo Go)
- AsyncStorage - async-only key/value, the community standard · Expo Go OK
Get it
expo-sqlite/kv-store is part of the free tier: clone it on GitHub. Starter and Pro add the stack picker, EAS store builds and doctor.