Skip to content

CRDTs — Notes#

When you actually need them#

  • Offline-first apps that sync later.
  • Multi-leader / multi-region writes without a coordinator.
  • Collaborative editors (Docs, Figma, Notion, whiteboards).
  • Mobile sync (CouchDB / Couchbase Lite).
  • Edge clouds (Cloudflare Durable Objects, Cloudflare D1 alt).

CRDT vs OT (Operational Transformation)#

  • OT transforms incoming ops against local concurrent ops; requires server with global order (Google Docs original).
  • CRDTs decentralize but at higher memory / metadata cost.
  • Modern collab tools (Yjs, Automerge) use CRDTs; Google Docs / Quill moved partially.

Practical concerns#

  • Garbage collection: tombstones and old version metadata must be GC'd once all replicas have observed them — needs causal stability tracking.
  • Bandwidth: state-based diffing is hard; delta-CRDTs ship only deltas.
  • Permissions / ACL: CRDTs don't model authorization; layer on top.

Where they show up in this repo#

  • Google Docs, Figma, Notion, Online Whiteboard, Collab editor.
  • Distributed cache (counters), shopping cart (Dynamo).
  • Multi-region key-value stores (Riak, Redis Enterprise).

Refs#

  • Shapiro, Preguiça et al.: "Conflict-free Replicated Data Types" (SSS '11).
  • Almeida et al.: "Delta-CRDTs."
  • Yjs / Automerge papers and docs.
  • Riak DT docs; Akka Distributed Data; Cassandra LWW limits.