Skip to content

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.

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

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.

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.