Reactive queries turn local writes into UI updates
RxDB stores application data locally and exposes queries as observables. A screen can subscribe to a query or a document field and receive changes as writes arrive, including changes produced by replication. The database uses JSON schemas, collections, documents, migrations, conflict handling, and attachments. That makes it closer to an application data layer than a convenience wrapper around browser storage.
The same API can sit over LocalStorage, IndexedDB through Dexie, OPFS, SQLite, memory, LokiJS, FoundationDB, or DenoKV, subject to adapter and license choices. RxDB also documents browser, Node.js, Electron, React Native, Capacitor, NativeScript, Deno, and Flutter routes. This range is useful for products sharing data code across clients, but the free tier's 13-collection ceiling and each runtime's persistence behavior need checking first.
Replication keeps your backend, but you own the contract
RxDB's generic sync engine asks an existing backend for 3 pieces: a pull handler, a push handler, and an event stream for live changes. The project also documents adapters for GraphQL, CouchDB, WebSocket, WebRTC, Supabase, Firestore, NATS, and Google Drive. Local writes can therefore work while disconnected and move later without adopting a single vendor's hosted database.
Those 3 endpoints transfer design work to the application team. Checkpoints must advance correctly, writes need stable ordering, conflicts need an explicit policy, and authentication belongs to the service around the endpoints. A quick local collection does not exercise those conditions. For a product buying offline behavior mainly to avoid building sync, RxDB may solve the client half while leaving the hardest distributed-system decisions in your code.
What happened when we ran it
Our sandbox installed commit bc1e652 in 291 seconds. npm added 1,737 packages, and the checkout occupied 1,241 MB after installation. The repository itself contained 1,561 files, about 136,103 lines of source, and 20.3 MB checked out. The build succeeded in 14 seconds on 3 CPUs with 8 GB of RAM.
The test command exited with code 1 after 60 seconds. Mocha completed 1,447 tests with 1,447 passing and 0 failing, then npm reported that the test:browser script was missing. The log does not say why that script was absent, so we cannot call the browser suite broken or skipped by design. We can say the repository's aggregate test step did not finish cleanly in our fresh Node 22 container.
Our npm audit found 0 known vulnerabilities across the installed tree: 0 critical, high, moderate, or low findings. The repository had 9 CI workflow files and a tests directory, but no Dockerfile. Those facts describe the measured commit and environment. They do not measure query speed, sync throughput, browser compatibility, or the security of an application's replication endpoints.
The open core has a 13-collection ceiling
The Apache-2.0 core includes schemas, queries, hooks, replication, migrations, and default storage options. RxDB's current pricing page limits the free tier to 13 open collections at once. It reserves specific OPFS, IndexedDB, SQLite, filesystem, WebCrypto encryption, and full-text search plugins for Pro, while Pro Plus adds worker, sharding, query optimization, and server adapter features.
This split deserves an architecture review before adoption. The public price shown for Pro starts at $99 per month billed annually, and Pro Plus starts at $239 per month billed annually. The FAQ says premium access has no free trial because it requires a signed agreement. A team can test the core at no charge, but it cannot assume the production storage path it wants is covered by that test.
Node.js 20 is now the contributor baseline
Release 17.5.0 was published on August 20, 2026 and raised the required Node.js version from 18 to 20. The release also changed GraphQL dependencies, fixed leaked Dexie connections, addressed several schema-migration cleanup paths, and fixed a React live-query unsubscribe problem. These are the kinds of defects that appear in a database spanning many runtimes, and the detailed release notes make upgrade review practical.
GitHub recorded 23,368 stars, 18 open issues and pull requests combined, and a last push on August 27, 2026. Recent open reports include stale React hook data after a key or query change and an intermittent React Native filesystem count result. That activity argues for maintenance, while the reports still warrant regression tests around the exact adapter and framework combination an app will ship.
RxDB earns its complexity when offline sync is product-critical
A team choosing RxDB should prototype the real shape of its application: the target storage, at least 1 migration, a lost connection, concurrent edits, and the intended replication backend. The 14-second build and 1,447 passing Mocha cases make the codebase credible, while the 1,241 MB install and unfinished aggregate command show that contributing is a substantial setup.
For a shared JavaScript data layer across web and native clients, RxDB offers more useful machinery than a plain IndexedDB wrapper. For a small browser tool with a few tables and no sync, Dexie is easier to explain and operate. The free tier permits up to 13 open collections, so RxDB is the better choice only when reactive local state and offline replication justify both its technical and licensing decisions.

