// the find
YousefED/Matrix-CRDT
Use Matrix as a backend for local-first applications with the Matrix-CRDT Yjs provider.
Matrix-CRDT is a Yjs sync provider that uses Matrix rooms as the transport and storage layer for collaborative local-first applications. Instead of building your own sync server, you get auth, access control, federation, and E2EE from the Matrix ecosystem for free. It's for developers who want real-time collaboration without operating a bespoke backend.
The snapshot mechanism is well thought out — periodic snapshots stored as Matrix events mean clients don't have to replay the entire room history on load, which would otherwise get catastrophically slow for long-lived documents. The 500ms write throttle on ThrottledMatrixWriter is a practical default that prevents flooding the room with individual keystroke events. Test infrastructure includes a real Synapse instance via docker-compose rather than mocking the Matrix SDK, which catches integration issues that pure unit tests miss. E2EE comes for free by being a Matrix room, which is genuinely hard to get right in a custom backend.
Last push was March 2024 and the repo has only 32 forks — this is effectively unmaintained. The WebRTC awareness/presence path is still labeled experimental and depends on a Matrix spec PR that as of 2024 still hadn't landed, so real-time cursor presence is a dead end unless you accept the experimental flag. The matrix-js-sdk dependency is notoriously heavy and has polyfill issues in non-webpack bundlers; the README acknowledges this but the fix is per-project boilerplate that will bite you. Encoding every Yjs update as a base64 Matrix event means your room history is opaque garbage — debugging sync issues in any Matrix client is painful.