Building the product · Edition No. 13 · 7 Sep 2026

yjs/yjs

The CRDT everyone uses — several people editing one document at once, offline edits merging cleanly later.

← Building the productRead the whole edition →

22.8k stars · MIT · v14.0.0-rc.20 (2026-06-22) — a RELEASE CANDIDATE; the stable series is v13 · Track this in Scout

The CRDT everyone uses — several people editing one document at once, offline edits merging cleanly later.

▶Repo detailsthe review · specs · pros & cons · install

What it is

A CRDT library. That is a data structure which lets several people edit one document at the same time without locking, and lets one person's edits survive going offline and merge in cleanly later.

What it is good for. Any app whose promise is that a long conversation becomes a shape you can see runs into the same wall. The moment a map is worth looking at, it is worth showing to somebody. Without this, the best on offer is a screenshot (Ed. 8 #8) or a Mermaid diagram (Ed. 12 #10). Both are dead copies with the app itself cropped out. A live shared map is a different product. It also makes notes on individual nodes possible without inventing your own conflict rules, which is not a thing anyone wants to invent.

Stars22.8k
LicenceMIT
Latestv14.0.0-rc.20 (2026-06-22) — a RELEASE CANDIDATE; the stable series is v13checked 7 Sep 2026
Written inJavaScript
NeedsPostgreSQL, Redis and MongoDB
RunsOn Cloudflare — hosted, not your own server
Setup effort
4 / 5
Payoff
4 / 5
Good
  • MIT licence, mature, and the standard answer here. The editor and canvas tools already work with it.
  • Works offline and merges afterwards, which matters on the phone.
  • One document can drive both the React Flow canvas and the react-arborist tree (Ed. 7 #11) at the same time.
Watch for
  • Live collaboration is a product decision with a websocket service behind it. It is not an afternoon's work.
  • Saving and access control are yours to build. A shared document is a sign-in problem, so Logto (Ed. 11 #4) comes first.
  • The current line is version 14.0.0-rc, which is a test version. The stable line is 13. Decide on purpose which line to build on.
Works well with

npm install yjs Then a small Node websocket service next to FastAPI, with the document saved into the PostgreSQL you already run.

Install
npm install yjs
Screenshots
yjs/yjs: GitHub preview card

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.