# yjs/yjs

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/yjs-yjs).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

22,069 stars · 782 forks · JavaScript · NOASSERTION

## Links

- GitHub: https://github.com/yjs/yjs
- Homepage: https://docs.yjs.dev
- awesome-repositories: https://awesome-repositories.com/repository/yjs-yjs.md

## Topics

`collaboration` `collaborative-editing` `crdt` `decentralized` `offline-first` `p2p` `peer-to-peer` `realtime` `shared-editing` `yjs`

## Description

Yjs is a CRDT framework and real-time state synchronization engine providing shared data types for collaborative software. It functions as a shared data type library of collaborative maps, arrays, and text structures that converge automatically across distributed clients, serving as a local-first data store and a collaborative editor backend.

The system distinguishes itself through a synchronization engine that encodes document changes into commutative binary updates. It employs state-vector based differencing to transmit only missing incremental updates between peers and uses relative-position addressing to preserve content and cursor locations during remote edits.

The framework covers broad capability areas including network synchronization and local data persistence for offline-first applications. It includes utilities for document version control, authorship metadata attribution, and bindings to connect shared data structures to external rich-text editor interfaces.

## Tags

### Networking & Communication

- [Conflict-Free Replicated Data Types](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/synchronization-strategies/conflict-free-replicated-data-types.md) — Provides conflict-free replicated data types that ensure all distributed clients converge to the same state automatically.
- [Commutative Binary Updates](https://awesome-repositories.com/f/networking-communication/binary-data-encoding/commutative-binary-updates.md) — Encodes document changes into commutative binary updates that can be applied in any order to reach the same state. ([source](https://github.com/yjs/yjs#readme))
- [State Vector Synchronization](https://awesome-repositories.com/f/networking-communication/state-vector-synchronization.md) — Exchanges encoded state vectors between clients to transmit only the missing incremental updates required for convergence. ([source](https://github.com/yjs/yjs/blob/main/INTERNALS.md))
- [Custom Network Transport Layers](https://awesome-repositories.com/f/networking-communication/networking-libraries/custom-network-transport-layers.md) — Provides modular interfaces for plugging in various network transport layers to synchronize document updates. ([source](https://github.com/yjs/yjs#readme))

### Software Engineering & Architecture

- [Shared Collaborative Data Types](https://awesome-repositories.com/f/software-engineering-architecture/shared-collaborative-data-types.md) — Provides a library of collaborative maps, arrays, and text structures that converge automatically across distributed clients.
- [Relative Position Addressing](https://awesome-repositories.com/f/software-engineering-architecture/anchored-content-edits/relative-position-addressing.md) — Preserves cursor locations and content positions during remote edits by anchoring to unique identifiers instead of absolute indices.
- [Conflict-Free Replicated Data Types](https://awesome-repositories.com/f/software-engineering-architecture/conflict-free-replicated-data-types.md) — Implements conflict-free replicated data types to synchronize shared state across distributed clients without conflicts. ([source](https://github.com/yjs/yjs/blob/main/README.md))
- [Relative Position Addressing](https://awesome-repositories.com/f/software-engineering-architecture/relative-position-addressing.md) — Anchors cursor locations and selection ranges to specific elements to preserve accuracy during remote edits. ([source](https://github.com/yjs/yjs#readme))
- [Shared State Management](https://awesome-repositories.com/f/software-engineering-architecture/shared-state-management.md) — Uses collaborative arrays and maps to keep document state synchronized across multiple users. ([source](https://github.com/yjs/yjs#readme))
- [State Vector Differencing](https://awesome-repositories.com/f/software-engineering-architecture/state-vector-differencing.md) — Uses state-vector based differencing to transmit only the missing incremental updates required to synchronize peers.
- [State Snapshots](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/persistence-and-serialization/state-serialization/state-snapshots.md) — Reconstructs document states by applying historical updates filtered by specific client clock points.
- [Atomic Transaction Grouping](https://awesome-repositories.com/f/software-engineering-architecture/atomic-transaction-grouping.md) — Collects multiple updates into a single atomic unit to generate compressed messages for broadcasting. ([source](https://github.com/yjs/yjs/blob/main/INTERNALS.md))
- [Authorship Attribution](https://awesome-repositories.com/f/software-engineering-architecture/authorship-attribution.md) — Links unique identifiers to authorship and timestamps to track the history of shared document edits. ([source](https://github.com/yjs/yjs/blob/main/attributing-content.md))
- [Causal Ordering Timestamps](https://awesome-repositories.com/f/software-engineering-architecture/causal-ordering-timestamps.md) — Implements logical client clocks to ensure operations are applied in the correct causal order across distributed peers.
- [State Version Restoration](https://awesome-repositories.com/f/software-engineering-architecture/document-state-managers/state-version-restoration.md) — Reconstructs previous document versions by filtering items based on client clocks and state vectors. ([source](https://github.com/yjs/yjs/blob/main/INTERNALS.md))
- [Transaction Batching](https://awesome-repositories.com/f/software-engineering-architecture/transaction-batching.md) — Batches multiple atomic changes into single transactions to reduce network overhead and observer notifications.
- [Undo-Redo Management](https://awesome-repositories.com/f/software-engineering-architecture/undo-redo-management.md) — Tracks changes to shared types to enable undo and redo operations while filtering by transaction origin. ([source](https://github.com/yjs/yjs/blob/main/README.md))

### Business & Productivity Software

- [Collaborative Editors](https://awesome-repositories.com/f/business-productivity-software/team-collaboration-events/collaboration-communication-tools/collaboration-software/collaborative-editors.md) — Serves as a data layer for editors that handles concurrent edits and maintains relative cursor positions.
- [Editor Model Bindings](https://awesome-repositories.com/f/business-productivity-software/terminal-file-managers/editor-model-bindings.md) — Binds shared collaborative data types to external rich-text editor interfaces for real-time synchronization. ([source](https://github.com/yjs/yjs#readme))

### Data & Databases

- [Binary Serialization Formats](https://awesome-repositories.com/f/data-databases/binary-serialization-formats.md) — Encodes document changes into a compact binary format for efficient network transmission and storage.
- [Local-First Persistence](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/data-storage/client-side-persistence/local-first-persistence.md) — Provides a system for persisting document updates locally to enable offline editing and instant loading.
- [Real-Time Synchronization Engines](https://awesome-repositories.com/f/data-databases/database-management-systems/real-time-synchronization-engines.md) — Encodes document changes into binary updates to maintain real-time state consistency across distributed peers.
- [Real-time Data Synchronization](https://awesome-repositories.com/f/data-databases/real-time-data-synchronization.md) — Keeps local data stores in sync with distributed network state in real-time for collaborative editing. ([source](https://github.com/yjs/yjs/blob/main/package.json))
- [Document Versioning](https://awesome-repositories.com/f/data-databases/document-versioning.md) — Tracks historical changes in shared documents to enable undo/redo functionality and authorship tracking.

### Development Tools & Productivity

- [Real-time Synchronization](https://awesome-repositories.com/f/development-tools-productivity/change-tracking/real-time-synchronization.md) — Implements real-time synchronization to maintain consistent document state across multiple clients during collaborative sessions. ([source](https://github.com/yjs/yjs/blob/main/README.md))

### DevOps & Infrastructure

- [Local-First Synchronization](https://awesome-repositories.com/f/devops-infrastructure/local-first-synchronization.md) — Enables offline editing with automatic merging of changes when clients reconnect via local-first synchronization.

### Web Development

- [Collaborative Editing Frameworks](https://awesome-repositories.com/f/web-development/collaborative-editing-frameworks.md) — Provides the infrastructure for real-time multi-user text editing with instant synchronization and conflict resolution.
- [Change Observers](https://awesome-repositories.com/f/web-development/change-observers.md) — Triggers callbacks whenever a shared type or its children are modified by local or remote users. ([source](https://github.com/yjs/yjs/blob/main/README.md))

### Security & Cryptography

- [Custom Attribution Tracking](https://awesome-repositories.com/f/security-cryptography/custom-attribution-tracking.md) — Maps metadata to document changes to identify which user created, deleted, or formatted shared content. ([source](https://github.com/yjs/yjs/blob/main/renderer.md))

### User Interface & Experience

- [Collaborative Rich Text Binding](https://awesome-repositories.com/f/user-interface-experience/rich-text-editors/collaborative-rich-text-binding.md) — Connects collaborative data types to rich text editors to enable multi-user writing with synchronized cursors.

### Part of an Awesome List

- [Collaborative Editing](https://awesome-repositories.com/f/awesome-lists/devtools/collaborative-editing.md) — High-performance CRDT implementation for shared data synchronization.
