Roadmap
Shipped
Section titled “Shipped”- v0.1 — Core sync (schema DSL, mutators, IndexedDB engine, Worker sync handler, D1 executor, live queries, WebSocket poke).
- v0.2 — Presence, cascading auth,
serverLiveSelect, pull pagination, audit hooks. - v0.3 — File sync (
file()column, R2 storage adapter,usePlasmaFile, contiguous-prefix push, GC). - v1.0 — IVM aggregate targeted refold, CRDT columns
(
crdtCounter/crdtPnCounter/crdtLwwRegister/crdtOrSet), envelope automation, offline-only extras, multi-region wiring (SequencerDO, causal cookie), PQ hybrid encryption, Devtools protocol.
Queued (v1.1 candidates)
Section titled “Queued (v1.1 candidates)”Query / DSL
Section titled “Query / DSL”- Relational query sugar (
db.query.todos.findMany({ with: {...} })). db.increment(col, delta)high-level CRDT counter API to close the read/write type asymmetry.
CRDT / collaboration
Section titled “CRDT / collaboration”- Sequence CRDT (
crdtRga<T>()or similar) — order-preserving concurrent list. Playlist reorder, drag-sortable tasks, tree outlines. - Text CRDT (
crdtText()— RGA / YATA / Fugue shape). Live collaborative text editing. Alternative: first-class Yjs / Automerge adapter that stores the CRDT doc in afile()column and streams updates through a supplementary path. - Ephemeral live channel — first-class API for cursor / typing /
presence-adjacent state that changes many times per second.
Today users need to stand up a separate DO; a dedicated
broadcastChannelprimitive is the goal.
Encryption
Section titled “Encryption”- Args-boundary envelope walker so
.encrypted()E2EE stops requiringencryptField()inside mutator bodies.
Client / server
Section titled “Client / server”client.setOffline(bool)runtime toggle.- Per-table blob storage adapter selection.
- Full per-region pull predicate wiring.
- Rate-limit shape on
SyncHandlerOptions(per-clientGroup push / pull budgets).
Every item lands with the same public-API coverage bar the
docs:check-public-api script enforces.