Skip to content

SignalDBReactive Local-First JavaScript Database

Signals for instant UI updates, plus real-time sync when you need it.

SignalDB Logo

Local-first Sync, Visualized

Two clients keep a shared list in sync automatically. Toggle offline to pause push/pull, create edits on either side, and watch field-level conflicts resolve while the server view updates below.

Client A

Push: β€”Pull: β€”
Pending: 0

Client B

Push: β€”Pull: β€”
Pending: 0

Server

  • Sketch offline edits
    order: 1.00
  • Resolve field conflicts
    order: 2.00
  • Reorder with drag & drop
    order: 3.00

Event log

No events yet

What is SignalDB? ​

SignalDB is an open-source, reactive local JavaScript database. Your app keeps its data in collections on the client, queries them with a MongoDB-like API, and gets results that update automatically through the signals of the framework you already use. Data is persisted locally (IndexedDB, OPFS, localStorage) and synchronized with any backend in the background.

js
import { Collection } from '@signaldb/core'
import createIndexedDBAdapter from '@signaldb/indexeddb'

const posts = new Collection({
  persistence: createIndexedDBAdapter('posts'),
})

posts.insert({ title: 'Hello SignalDB', published: true })
posts.find({ published: true }).fetch() // reactive inside your framework's effects

When to use a local-first JavaScript database ​

A client-side database like SignalDB is a good fit when:

  • the UI should react instantly to user actions (optimistic UI) instead of waiting for the server;
  • the app should keep working offline and sync later (offline-first, local-first);
  • several views show the same data and must stay consistent without manual cache updates;
  • you want real-time updates from your existing REST, GraphQL or WebSocket API without changing the backend.

How SignalDB compares ​

SignalDB focuses on signal-based reactivity, a familiar MongoDB-style query API and backend-agnostic sync. See the JavaScript database comparison for how it relates to RxDB, Dexie.js, PouchDB, WatermelonDB, TinyBase and TanStack DB, or read JavaScript Signals Explained for the reactivity model behind it.

Get started β†’

Released under the MIT License.