Melon-dbMelon-db
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@alpha

Or with Bun:

bun add @melon-db/db-sqlite@alpha

Bun / Node

import { createSqliteAdapter } from '@melon-db/db-sqlite';

const adapter = createSqliteAdapter({ filename: 'app.db' });

React Native: Expo Go vs development build

PathImportExpo Go
Default@melon-db/db-sqlite/expo + expo-sqliteYes
Native@melon-db/db-sqlite/rn + @melon-db/db-sqlite-nativeNo — 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:compare

Author & license

Copyright (c) 2026 Nate Nichols. MIT License.