Status
datadata is early-stage software. It runs real applications, but it is being actively reshaped and backwards compatibility is explicitly not a goal yet.
Maturity at a glance
Section titled “Maturity at a glance”This table rates how solid the things datadata does are, with a last row for the headline gaps. The fuller catalogue of gaps and deliberate non-goals lives in Limitations.
| Area | State |
|---|---|
| Core client/server sync, optimistic updates | Solid, exercised daily |
| JSON Patch changes with guarded writes | Solid, with known RFC issues |
Domain commands (named mutators, doc:command) |
New; registry shared by client and server, re-executed prediction, per-command access rules, refusals with codes; not yet journaled offline; see Domain commands |
| Yjs rich-text integration | Solid; two independent sync lanes, Yjs updates cross the wire as binary frames |
| Staged session (staging, conflict preview, commit) | Converging; bindable staged editors, crash-safe commits, bases resolved from the event log |
| Schemas as documents, migrations | Solid; schema evolution and migrations are explicit |
| Document lifecycle (delete, restore, rename, purge) | Solid; soft delete with a live trash listing, restore, rename, and purge |
| Cloudflare Durable Object backend | Production shape for our apps |
| Node + Postgres backend | New; the same engine over a Postgres storage adapter (PGlite driver so far) and a Node WebSocket host, passing every conformance suite; not yet in production; see Node + Postgres deployment |
| Projection layer (per-document views) | Reads work over the full synced document; writable lenses very alpha |
| Presence + Yjs awareness (live and staged) | Solid after several hardening rounds |
| Offline reconnect replay | Both lanes replay (JSON last-writer-wins, Yjs by CRDT merge); an opt-in persisted write queue carries the buffer across a page reload |
| Authorization (write rules, read filtering, capabilities) | Fully declarative — schema rules, per-document sys:access entries, read filtering, scope caps; see Authorization |
| Durable offline write queue | New; IndexedDB-backed, every tab journals and a dead tab’s queue is adopted; see Offline persistence |
| Offline reads (persisted doc cache) | New; offline reloads render cached documents with pending writes re-projected, offline-cached sync status; see Offline persistence |
| Offline tab-to-tab sync | New; two offline tabs converge through the shared store (Yjs content CRDT-merges via the cache; pending JSON writes mirror read-only, offline creates listed); see Offline persistence |
| Blobs (files as immutable handles) | New; R2, S3-compatible and filesystem stores, integrity gate and read gate conformance-tested on every backend, garbage collection scheduled by both hosts; see Blobs |
| Log compaction | Not yet — see Limitations |
Not open source (yet)
Section titled “Not open source (yet)”The source isn’t public yet — partly because the API is still moving, and partly because good docs felt like the right first artifact. This site documents how datadata works and why, so that:
- application developers can evaluate the model before betting on it, and
- sync-engine developers can compare notes on the design.
If you want to look closer, try it, or argue with a design decision, get in touch.
How gaps are documented
Section titled “How gaps are documented”Every page on this site flags its own gaps inline, and the Known issues & open questions section aggregates them with full write-ups. If something reads as more finished than it is, that’s a bug in the docs — tell us.