Yjs vs Loro (new CRDT lib)

@Gin-Quin Gin Quin
Fri, 14 Nov 2025 15:02:43 +0000

Having a fast CRDT algorithm is very important of course, especially to have scalable servers that can handle many documents at once.

But for me, the main difference between YJS and Loro is not performance (both libraries appear to be in the same order of magnitude), but Loro’s support for movable lists and trees.

My project has a folder structure (i.e. a movable tree), and I coded it using YJS… but it has been a nightmare.

Since there is no “move” operation, you have to “delete” + “insert”. It works fine on the main client, but on any other synced client you then get a empty reference to a document that you have to reload. This can be done, but then there is a small period of time where your document is present but “empty”, which will likely cause your application to crash.

I’ve tried to think of many workarounds, but everything is so painful, hacky and bug-prone. If you have a folder/tree structure, don’t do the same mistakes as I, and choose Loro. Moving elements around NEED a move operation, not a dirty delete + insert.

And if you want the fastest CRDT, you might look at JSON JOY, which claims to be 100x faster than YJS and Loro: json-joy