CRDT (Conflict-free Replicated Data Types) — класс data structures, которые можно независимо обновлять на разных replicas и затем merge deterministically без conflict resolution. Основа collaborative editors (Notion, Figma, Linear). Типы: G-Counter (grow-only counter), LWW-Set (last-write-wins), RGA (replicated growable array для text). Библиотеки: Yjs, Automerge.
Ниже: подробности, пример, смежные термины, FAQ.
// Yjs collaborative text
const ydoc = new Y.Doc();
const ytext = ydoc.getText('content');
ytext.insert(0, 'Hello');
// Syncs over WebSocket — other users see updateOT (Google Docs) — server-authoritative, transforms operations. CRDT — peer-to-peer compatible, merging без server. CRDT выигрывает для offline-first.
Yjs handles thousands edits/sec. Automerge медленнее но более featureful. Both в production (Linear, Figma).
Нет — overhead. CRDT имеет смысл начиная с collaborative editing или true offline-first UX.