// the find
tinyplex/tinybase
A reactive data store & sync engine.
TinyBase is a reactive in-memory data store for local-first JavaScript/TypeScript apps, combining key-value and tabular storage with built-in CRDT sync, persistence adapters, and UI framework bindings. It targets developers building offline-capable apps — todo lists, collaborative tools, games — where data needs to feel instant without a round-trip to a server. At v9.2 with active development, it's not a toy.
The CRDT implementation (MergeableStore) handles conflict resolution without you writing merge logic, and it works over WebSockets or BroadcastChannel out of the box. The module architecture is genuinely thoughtful — the core store is 6.4kB gzipped with zero dependencies, and you only pay for what you add. The persistence layer is unusually broad: IndexedDB, SQLite, PGlite, Expo SQLite, Turso, PowerSync, Yjs, Automerge — most local-first libraries force you to pick one and commit. Built-in Checkpoints give you an undo/redo stack for free, which most state libraries make you implement yourself.
TinyQL, the query API, is a JavaScript builder pattern rather than actual SQL — it works, but anyone expecting to write joins and aggregations the way they already know them will hit a learning cliff that isn't obvious from the marketing. The storage model is entirely in-memory with sync-to-persistence, which means cold start on a large dataset requires loading everything before the app is usable — fine for small data, painful at scale. The ecosystem integration list (16+ storage targets, 6 schema libraries, 3 UI frameworks) creates real versioning surface area; a breaking change in any adapter dependency can block upgrades. Documentation is thorough but the architectural options guide is load-bearing — without reading it, you will wire the wrong pieces together.