Loro Blog
loro.dev · Company blog · on HN since 2023
The Loro team writes about its open source CRDT library, covering rich text, movable trees, version control, and sync protocols.
What HN saysHN commenters praise Loro's performance, features, and documentation as an intro to CRDTs, though one notes it is document-based and lacks a good query engine.
15HN people shared it
11linked it in comments
11stories submitted
556story points
5 months agolast shared
2023people per year2026
Most-shared posts
- 1Homepage7 people · first shared 2024
- 2Loro 1.0: A High-Performance CRDTs Library with Version Control5 people · 40 points · first shared 2024 · 1 comments on HN
- 3Loro Protocol: a wire protocol designed for real-time CRDT sync2 people · 5 points · first shared 2025 · discussion on HN
- 4Movable tree CRDTs and Loro's implementation1 people · 296 points · first shared 2024 · 29 comments on HN
- 5Loro's rich text CRDT1 people · 207 points · first shared 2024 · 47 comments on HN
- 6Loro Mirror: Make UI State Collaborative & Local-First by Mirroring to CRDTs1 people · 3 points · first shared 2025 · discussion on HN
- 7Loro: Reimagine state management with CRDTs1 people · 3 points · first shared 2023 · discussion on HN
- 8CRDTs merge concurrent edits. Why not concurrent creation?1 people · 2 points · first shared 2026 · discussion on HN
- 9Crdt richtext1 people · first shared 2025
- 10Event graph walker1 people · first shared 2025
- 11Get started1 people · first shared 2023
- 12Event graph walker1 people · first shared 2024
- 13Time travel1 people · first shared 2024
- 14Native1 people · first shared 2023
What HN people wrote when they linked it
metmac · 2026-03-23
https://loro.dev/
Relevant. Loro a lovely CRDT library, explored implementing VCS semantics with CRDTs.
satvikpendem · 2025-11-30
Well yeah, who expected them not to be a full blown CRDT? Similarly, I like Loro (https://loro.dev) but the fundamental problem remains that they're document based without a good query engine, ie you have to literally target a specific nested entry in the CRDT to get the data you want.
fellowniusmonk · 2025-10-23
Loro is the open source project I am most excited about, their documentation is also stellar as an intro to the subject.
As an aside, I find FugueMax to be amazing to solve interleaving issues.
I've found for collaborative editing fuguemax for resolving intraline edits and h-lseq for the lines themselves has been amazing.
https://loro.dev/blog/crdt-richtext
babymode · 2025-03-17
And Loro [1], relatively new player which recently hit 1.0, with solid performance and some features the others don’t have
[1]: https://loro.dev/
oDot · 2024-12-18
I'll add Loro[0] to the author's list. While I utilise Yjs heavily for another project, Loro is fairly featureful and so I picked it to build a screenplay editor[1], which requires things like Peritext or tree structures. It's fairly young, though.
I'll also commend the author's attempt at DIY! Even if your case does not require a custom solution, it's healthy to understand how your tools work.
[0] https://loro.dev
[1] https://www.weedonandscott.com/tech/project-realm
danielvaughn · 2024-08-27
Figma uses a CRDT-ish approach. I'm working on one at the moment, but it'll be a while before it's publicly available. At the moment, I'm using Loro: https://loro.dev
czx111331 · 2025-09-22
I believe that in the right contexts—specifically where eventual consistency is acceptable—the local-first paradigm is highly valuable and will gradually become mainstream. A major factor limiting adoption today is that existing local-first solutions are incomplete: when building such applications, developers must handle many problems that are trivial under strong-consistency or traditional models. This raises the learning cost and creates significant friction for paradigm shifts.
Our recent work on Loro CRDTs aims to bridge this gap by combining them with common UI state patterns. In React, developers can keep using `setState` as usual, while we automatically compute diffs and apply them to CRDTs; updates from CRDTs are then incrementally synced back into UI state [1]. This lets developers follow their existing habits without worrying about consistency between UI state and CRDT state. Paired with the synchronization protocol and hosted sync service, collaboration can feel as smooth as working with a purely local app. We’ve built a simple, account-free collaborative example app[2]. It only has a small amount of code related to synchronization; the rest looks almost the same as a purely local React app.
[1]: https://loro.dev/blog/loro-mirror
[2]: https://github.com/loro-dev/loro-todo
mmerlin · 2025-03-31
vladstudio · 2025-04-02
in case anyone finds this useful, here's the slowly growing collection of links to similar tools:
https://tinybase.org/
https://www.evolu.dev/
https://replicache.dev/
https://fireproof.storage/
https://vlcn.io/
https://www.instantdb.com/
https://loro.dev/
https://electric-sql.com/
https://docs.y-sweet.dev/
https://syncedstore.org/docs/
https://collabs.readthedocs.io/en/latest/
https://remotestorage.io/
https://rxdb.info/offline-first.html
https://github.com/siriusastrebe/jsynchronous
https://www.powersync.com/
https://pouchdb.com/
https://jazz.tools/
https://www.triplit.dev/
https://automerge.org/
https://www.dxos.org/
I hope one day to try them all :-) Or read a summary from someone who does.
mkl · 2024-12-07
It seems that they might, but perhaps not in a good way yet, and they have it as a goal.
From https://loro.dev/blog/v1.0#next-steps-for-loro:
> When merging extensive concurrent edits, CRDTs can automatically merge changes, but the result may not always meet expectations. Fortunately, Loro stores the complete editing history. This allows us to offer Git-like manual conflict resolution at the application layer when needed.
From https://loro.dev/docs/tutorial/time_travel:
> once we have a more refined version control API in place.
I'm interested to hear your opinion of their partial adoption of Eg-walker: https://loro.dev/blog/v1.0#leveraging-the-potential-of-the-eg-walker
anentropic · 2023-11-13
the docs show installing and using a wasm version from JS: https://www.loro.dev/docs/tutorial/get_started