Storage · On-device storage

Expo + expo-sqlite/kv-store

expo-sqlite/kv-store in an Expo SDK 57 app for iOS and Android, wired by one command and checked by doctor.

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.

When to pick expo-sqlite/kv-store

expo-sqlite/kv-store: The default (expo-sqlite/kv-store). Expo Go and sync reads on native, so stores hydrate before first paint.

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-store

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 expo-sqlite/kv-store docs.

Wiring it by hand instead? Read the guide: AsyncStorage vs MMKV vs expo-sqlite/kv-store.

expo-sqlite/kv-store vs other storage options

OptionExpo Gonpm packagesKeys to pasteIncluded in
expo-sqlite/kv-storeYes10Free, Starter and Pro
MMKVDev build20Starter and Pro
AsyncStorageYes10Starter and Pro

Questions

Can I use expo-sqlite/kv-store 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 expo-sqlite/kv-store in an Expo app?

Only bun run setup --storage kv-store. There are no API keys to paste; bun run doctor checks the result.

Does the ReadyNative free tier include expo-sqlite/kv-store?

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

expo-sqlite/kv-store or MMKV for Expo?

expo-sqlite/kv-store: The default (expo-sqlite/kv-store). Expo Go and sync reads on native, so stores hydrate before first paint. MMKV: The fastest, memory-mapped and fully synchronous. Needs a dev build.

expo-sqlite/kv-store or AsyncStorage for Expo?

expo-sqlite/kv-store: The default (expo-sqlite/kv-store). Expo Go and sync reads on native, so stores hydrate before first paint. AsyncStorage: Pick it when a library hard-requires AsyncStorage. Async only.

Which expo-sqlite/kv-store version does it install?

For Expo SDK 57: expo-sqlite ~57.0.3. Setup installs Expo packages with expo install, so they match the SDK.

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.