// the find
pubkey/client-side-databases
An implementation of the exact same app in Firestore, AWS Datastore, PouchDB, RxDB and WatermelonDB
A single chat app implemented six times across different local-first database libraries — Firestore, AWS Datastore, PouchDB, RxDB (two storage backends), and WatermelonDB — with automated benchmark metrics. Built by the author of RxDB, so treat the framing with appropriate skepticism. Useful as a starting point for evaluating offline-first options, not as a neutral benchmark.
The automated metrics script is genuinely useful — headless Chrome running real operations rather than synthetic microbenchmarks. The feature comparison table (offline-first, multi-tab, observable queries, custom conflict handling) covers the questions that actually matter when picking a storage layer. The LokiJS speed explanation is honest about the tradeoff: in-memory is fast but you lose data on ungraceful shutdown. The codebase is structured so you can read the same app logic side-by-side across implementations.
RxDB is the author's own project, which means the two RxDB implementations get more attention and the PouchDB implementation deliberately uses the old, slower IndexedDB adapter — the README acknowledges this but hasn't fixed it. WatermelonDB has no backend sync in this repo at all, making its metrics largely meaningless for any real use case. The benchmark runs on a single developer's machine and the README says so, but there's no CI-published baseline so the table in the README may be stale relative to the code. Angular-only means you're reading through framework boilerplate to get to the database layer, which isn't ideal as reference material.