How Notion handles concurrent editing with CRDTs
Sep 19, 2026Angelique Nehmzow, Emma Guo

Summary
This post details Notion's transition from a 'last write wins' system to a CRDT-based approach for concurrent text editing. It introduces the core concepts of CRDTs, explains the use of Replicated Growable Array (RGA) with unique text item IDs (session ID + Lamport clock) and tombstones for handling insertions and deletions. It further elaborates on supporting rich text annotations using Peritext, including extendable and non-extendable annotations and their anchor points. Finally, it describes the mechanism for handling concurrent text splitting across blocks using 'text slices' and 'text slice trees' to maintain data consistency.