Sign in

Loro

@loro.dev
210 followers 6 following 10 posts

Reimagine state management with CRDTs github.com/loro-dev/loro

PostsRepliesMedia
Loro @loro.dev · 09/06/2026
Blog: loro.dev/blog/mergeab...
loro.dev
Mergeable Containers: Fixing Concurrent Child Creation – Loro
Mergeable Containers let Loro peers concurrently create the same child container under a Map key and still merge into one shared child, by deriving identity from the logical parent/key/type instead of...
000
Loro @loro.dev · 09/06/2026
The fix: make the child ID independent of the creation OpId. We reuse Loro’s Root Container idea: identity from a unique string. For mergeable children, that string encodes the parent LoroMap + key, so both peers derive the same ID.
100
Loro @loro.dev · 09/06/2026
Root cause: normal child Container IDs include an OpId. So if two peers create a child container concurrently, they get different IDs. When both write to the same LoroMap key, one child can overwrite the other.
100
Loro @loro.dev · 09/06/2026
New in Loro: Mergeable Containers! Concurrent Map child container creations no longer overwrite. This surprising overwrite issue existed in Loro, Yjs, and Automerge. Happy to finally ship a solution!
1111
Loro @loro.dev · 30/10/2025
It’s also compatible with Yjs and includes experimental support for end-to-end encrypted LoroDoc synchronization. Learn more here: loro.dev/blog/loro-pr... GitHub: github.com/loro-dev/pro...
loro.dev
Loro Protocol – Loro
The Loro Protocol multiplexes CRDT sync workloads over one WebSocket connection and ships the open-source loro-websocket, loro-adaptors, plus Rust client and server implementations that speak the same...
000
Loro @loro.dev · 30/10/2025
The Loro Protocol repo is now open source! It contains documentation for the wire protocol, along with TypeScript and Rust implementations of WebSocket clients and servers. The protocol allows reusing a single connection to join multiple CRDT rooms, such as Loro documents or the Ephemeral Store.
182
Reposted by Loro
zx @zxch3n.com · 30/04/2025
Loro Inspector is here! Now you can directly browse the current state and complete edit history of your Loro documents in the browser. You can also use this tool to time travel to any version in the history of your Loro document.
1214
Loro @loro.dev · 09/01/2025
github.com/loro-dev/lor...
github.com
Release loro-crdt@1.3.0 · loro-dev/loro
Minor Changes ddafb7e: feat: diff, applyDiff, and revertTo #610 Add new version-control-related primitives: diff(from, to): calculate the difference between two versions. The returned results ha...
000
Loro @loro.dev · 09/01/2025
New version control primitives have been added to Loro: - diff(from, to): calculate the differences between any two versions - revertTo(version): Generate ops to revert to the target version - applyDiff(diff): Apply differences You can use them to implement functions like git squash and revert.
1143
Reposted by Loro
zx @zxch3n.com · 26/11/2024
The slides for the talk are available here: loro-slidev.vercel.app
0124
Loro @loro.dev · 24/11/2024
🙌
040
Reposted by Loro
zx @zxch3n.com · 06/11/2024
You may experience data loss due to the following issues caused by incorrect usage of CRDTs libraries, regardless of whether you're using Loro, Automerge, or Yjs. Here is how to avoid them:
Container Overwrites
When initializing child containers in parallel, overwrites can occur instead of automatic merging. For example:

const doc = new LoroDoc();
const map = doc.getMap("map");
 
// Parallel initialization of child containers
const docB = doc.fork();
const textA = doc.getMap("map").setContainer("text", new LoroText());
textA.insert(0, "A");
const textB = docB.getMap("map").setContainer("text", new LoroText());
textB.insert(0, "B");
 
doc.import(docB.export({ mode: "update" }));
// Result: Either { "meta": { "text": "A" } } or { "meta": { "text": "B" } }
This behavior can lead to serious data loss issues. If a container holds significant data or even the entire document's content, overwriting it could result in unexpected loss of important information. While the complete editing history is preserved and allows for potential recovery of user data, the recovery process can be complex.
2101
Loro @loro.dev · 06/11/2024
🦋
072
Reposted by Loro
zx @zxch3n.com · 23/10/2024
Loro 1.0 is here! Introducing stable binary document format, blazing-fast import speed, Git-like shallow clone, enhanced version control, and more. loro.dev/blog/v1.0
loro.dev
Loro 1.0
Announcing Loro 1.0: Introducing a stable encoding schema, 10-100x faster document import, advanced version control, and more for efficient real-time collaboration and local-first software development...
3429