Expo SQLite Storage
Important
This package will become useless once Expo SDK 50 is released.
The new SDK introduces changes to their official expo-sqlite
and they upgraded to a more recent SQLite version that will support JSON function such as json_extract
.
Implements the original expo-sqlite with an updated version of android.database.sqlite from requery.sqlite-android which adds support for:
- JSON1 extension
- Common Table expressions
- Indexes on expressions
- Full Text Search 5
- Generated Columns
- DROP COLUMN support
This cannot be used in Expo GO, see the related error section.
RxDB Premium compatible
It's compatible with RxDB Premium SQLite storage:
import {
getRxStorageSQLite,
getSQLiteBasicsExpoSQLite,
} from "rxdb-premium/plugins/storage-sqlite";
import * as ExpoSqliteStorage from "expo-sqlite-storage";
import { createRxDatabase } from "rxdb";
const storage = getRxStorageSQLite({
sqliteBasics: getSQLiteBasicsExpoSQLite(ExpoSqliteStorage.openDatabase),
});
const db = await createRxDatabase({
name: storage.name,
storage,
multiInstance: false,
ignoreDuplicate: true,
});
iOS | Android |
---|---|
Installation in managed Expo project
Add the package to your npm dependencies
npm install expo-sqlite-storage
or
yarn add expo-sqlite-storage
build your native apps
npx expo run:android|ios
run only the app
npx expo start --dev-client
Error
{"name":"TypeError","message":"null is not an object (evaluating 'SQLiteDatabase.exec')
Will not work inside Expo GO until the Expo team updates their SQLite database to a more recent version.
Installation in bare React Native projects
For bare React Native projects, you must ensure that you have installed and configured the expo
package before continuing.
Add the package to your npm dependencies
npm install expo-sqlite-storage
or
yarn add expo-sqlite-storage
Configure for iOS
React-Native above 0.60:
Run npx pod-install
after installing the npm package.