Yjs is a high-performance CRDT for building collaborative applications that sync automatically.
It exposes its internal CRDT model as shared types. Shared types are just common data types like
Array. They can be manipulated like regular data types, they fire events when changes happen, and you can always merge them without merge conflicts. Always!
Yjs supports many of the most popular text and rich-text editors. And the list keeps growing!
Yjs doesn't make any assumption about the network technology you are using. As long as all changes eventually arrive, the documents will sync. The order in which document updates are applied doesn't matter.
You can integrate Yjs into your existing communication infrastructure, or use one of the several existing network providers that allow you to jump-start your application backend.
Scaling shared editing backends is not trivial. Most shared editing solutions depend on a single source of truth - a central server - to perform conflict resolution. Since Yjs doesn't need a central source of truth, we can design the backend using ideas from distributed system architecture. In fact, Yjs can be scaled indefinitely as it is shown in the y-redis section.
And why not design an application using P2P technologies without sharing data with a server? Yjs is perfectly capable of doing that. We include several examples of how Yjs can be used without a backend and without any setup
Yjs is a modular approach that allows the community to make any editor collaborative using any network technology. It has thought-through solutions for almost all shared-editing related problems.
We built a rich ecosystem of extensions around Yjs. There are ready-to-use editor integrations for many popular (rich-)text editors, adapters to different network technologies (like WebRTC, WebSocket, or Hyper), and persistence providers that store document updates in a database.
Yjs is the fastest CRDT implementation, by far.