Summary
Conflict-free replicated data types merge concurrent edits without central lock — eventual consistency. Used in Figma-like editors, Yjs, Automerge. Trade memory/size for merge correctness. UI shows merged state; not same as operational transform server authority.
Code example
// G-Counter merge: take max per node
function mergeGCounter(a, b) {
const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
const result = {};
for (const k of keys) {
result[k] = Math.max(a[k] ?? 0, b[k] ?? 0);
}
return result;
}
Key points
- Conflict-free replicated data types merge concurrent edits without central lock — eventual consistency.
- Used in Figma-like editors, Yjs, Automerge.
- Trade memory/size for merge correctness.
- UI shows merged state; not same as operational transform server authority.