Collaborative Text Editing without CRDTs or OT Matthew Weidner | May 21st, 2025 Home | RSS Feed Keywords: text editing, server reconciliation, Articulated Collaborative text editing is arguably the hardest feature to implement in a collaborative app. Even if you use a central server and a fully general solution to optimistic local updates (server reconciliation), text editing in particular requires fancy algorithms - specifically, the core of a text-editing CRDT or OT. Or rather, that’s what I thought until recently. This blog post describes an alternative, straightforward approach to collaborative text editing, without Conflict-free Replicated Data Types (CRDTs) or Operational Transformation (OT). By making text editing flexible and easy to DIY, I hope that the approach will let you create rich collaborative apps that are challenging to build on top of a black-box CRDT/OT library. This post builds off of my previous post, Architectures for Central Server Collaboration, though I’ll recap ideas as needed to keep it self-contained. In particular, I’ll generally assume that your collaborative app has a central server. A later section extends the approach to decentralized/server-optional collaboration, revealing surprising links to several text-editing CRDTs. As usual for collaborative text editing, any technique in this post can also be applied to general collaborative lists: ingredients in a recipe, a powerpoint filmstrip, spreadsheet rows and columns, etc. Sources: I learned the main idea of this approach from a Hacker New comment by Wim Cools from Thymer. I do not know of an existing public description of the approach - in particular, I have not found it in any paper on crdt.tech - but given its simplicity, it seems likely that others have used the approach before. The extension to decentralized collaboration is based on OpSets: Sequential Specifications for Replicated Datatypes by Martin Kleppmann, Victor B. F. Gomes, Dominic P. Mulligan, and Alastair R. Beresford ...
First seen: 2025-05-21 17:21
Last seen: 2025-05-22 09:24