Packages
@melon-db/db-sqlite
SQLite StorageAdapter for Bun, Node, and Expo.
Status: Shipped · Depends on: @melon-db/db · API: Reference
Compiles QueryAst to parameterized SQL and implements StorageAdapter for production local storage. Includes predicate-aware observeQuery (Phase 27): reactive queries re-fetch only when a write can affect their WHERE clause.
Install (alpha)
npm install @melon-db/db-sqlite@alphaOr with Bun:
bun add @melon-db/db-sqlite@alphaBun / Node
import { createSqliteAdapter } from '@melon-db/db-sqlite';
const adapter = createSqliteAdapter({ filename: 'app.db' });React Native: Expo Go vs development build
| Path | Import | Expo Go |
|---|---|---|
| Default | @melon-db/db-sqlite/expo + expo-sqlite | Yes |
| Native | @melon-db/db-sqlite/rn + @melon-db/db-sqlite-native | No — requires expo prebuild + dev build (iOS + Android) |
Expo Go
import { createExpoSqliteAdapter } from '@melon-db/db-sqlite/expo';
import * as SQLite from 'expo-sqlite';
const database = await SQLite.openDatabaseAsync('app.db');
const adapter = createExpoSqliteAdapter({ database });Native (development build, iOS + Android)
import { Paths } from 'expo-file-system';
import { createJsiSqliteAdapter, isJsiSqliteAvailable } from '@melon-db/db-sqlite/rn';
if (!isJsiSqliteAvailable()) {
throw new Error('Use expo-sqlite or run a development build');
}
const adapter = createJsiSqliteAdapter({
filename: 'app.db',
basePath: Paths.document.uri.replace(/^file:\/\//, ''),
});See @melon-db/db-sqlite-native for native setup.
Node (better-sqlite3)
import { createNodeSqliteAdapter } from '@melon-db/db-sqlite/node';Benchmarks
bun run bench
bun run bench:compareAuthor & license
Copyright (c) 2026 Nate Nichols. MIT License.
