Yjs
Decentralized Data Protocol
Comunidade
Links
Detalhes
Licença Permissive (MIT) — https://github.com/yjs/yjs; y-protocols and the provider/binding ecosystem also MIT
Status de Dev 🟢 Ativo
Proprietário Kevin Jahns — independent open-source developer and sole principal maintainer; the yjs GitHub organization hosts the core library and the provider and binding ecosystem
Órgão de Governança None (single principal maintainer, Kevin Jahns; no foundation or governing body. Recent v14 work funded by ZenDiS and DINUM as funders, not governors)
País Germany (maintainer based in Germany)
Ano de Início 2015
Stack JavaScript/TypeScript core with a highly optimised binary encoding; Yrs is a Rust port maintained separately, used where native performance or non-JS embedding is needed
Financiamento Independent open source with project-specific public funding — recent versioning and track-changes work funded via the BlockNote collaboration by ZenDiS (OpenDesk) and DINUM (La Suite Docs); otherwise sponsorship and consulting
Última Investigação 1 de jul. de 2026
Decentralized Data Protocol Atributos
Origins Collaborative text editing — built to make real-time collaborative editing practical in the browser without operational transformation's server-coordination requirement, then generalised into a broad shared-data-type framework
Database N/A as a store — Yjs is an in-memory CRDT with pluggable persistence; y-indexeddb, y-leveldb and similar providers supply storage
Query Language N/A — shared types are accessed as native JavaScript objects; no query language
Data Formats Highly optimised binary update encoding (document state and incremental updates); y-protocols defines the sync and awareness message formats; shared types Y.Map, Y.Array, Y.Text, Y.XmlFragment and Y.XmlElement
Collaborative Live Editing Collaborative real-time editing (CRDTs) — the library's primary purpose, with an awareness protocol carrying ephemeral presence state such as cursors and selections alongside document updates
Rich Text Editing Rich text editing — Y.Text and Y.XmlFragment support formatted content, with official and community bindings for ProseMirror, TipTap, Quill, Slate, CodeMirror and Monaco; v14 adds versioning and track changes
Mobile Support Library-level — runs in mobile browsers and React Native; Yrs enables native mobile embedding
Web Support Yes — the browser is Yjs's primary environment and the source of most of its adoption
Native Apps Library-level — via Yrs (Rust) for native embedding, or Electron and similar for JS applications
Terms Free / open source (MIT), described by the project as free forever. No hosted service is required; sync providers may be self-hosted
Funds Unknown — no consolidated figures published; funding is per-engagement rather than a raised total
Based On YATA (Yet Another Transformation Approach) — the sequence CRDT algorithm underlying Yjs, published by Kevin Jahns; original work rather than a derivative implementation. y-protocols layers sync and awareness on top
P2P Architecture Transport-agnostic, provider-based — Yjs itself defines only the merge semantics and update encoding; connectivity comes from separate provider modules supporting WebSocket (client-server or relay), WebRTC (direct peer-to-peer), and BroadcastChannel (same-device tabs). Peers converge regardless of topology
Overlay Network Store-wide — sync is scoped to a document shared between connected peers or through a room on a provider; no global network exists
Content Addressing No — documents are identified by document ID with changes referenced by hash internally, not addressed by content hash externally
Local-First Local-First — full offline editing against a local replica with automatic convergence on reconnection, provided a persistence provider such as y-indexeddb is used
E2EE Provider-dependent — Yjs does not encrypt documents itself; some providers (notably y-webrtc) support encrypting updates with a shared room key, but confidentiality is not a property of the core library
CRDTs Lib Yjs — this entry is the library. JavaScript/TypeScript core, with Yrs as the Rust port
Byzantine Fault Tolerance No — CRDT merge is designed for cooperating peers; a malicious peer can inject arbitrary valid-looking changes. Authentication and authorization are left to the surrounding system
Signature N/A — updates are not signed by the library; authenticity is the embedding application's responsibility
Permissions N/A — no access-control model in the core; any peer with document access can modify it. Authorization is enforced by the provider or surrounding application
Semantic Web Compatibility N/A — custom binary/document model with no RDF, JSON-LD or SPARQL layer
Smart Contract N/A — no ledger or contract component
Protocol Stack Position Application-layer (built on TCP/IP) — transport-agnostic; sync runs over WebSocket, WebRTC, BroadcastChannel or any duplex channel
Asset / Value Embedding None — no token or value-transfer mechanism
Protocol Maturity / Standardization De facto standard, implementation-defined — extremely widely deployed and the update encoding is stable and interoperable across the ecosystem, but the normative definition remains the JavaScript implementation plus y-protocols rather than an independent specification document. Yrs demonstrates the encoding is reimplementable, though it was written by porting rather than from a spec. No standards-body involvement