
A CRDT framework with a powerful abstraction of shared data
Yjs is a CRDT implementation that exposes its internal
data structure as shared types. Shared types are common data types like Map
or Array with superpowers: changes are automatically distributed to other
peers and merged without merge conflicts.
Yjs is network agnostic (p2p!), supports many existing rich text
editors, offline editing, version snapshots, undo/redo and
shared cursors. It scales well with an unlimited number of users and is well
suited for even large documents.
:construction_worker_woman: If you are looking for professional support, please
consider supporting this project via a "support contract" on
GitHub Sponsors. I will attend your issues
quicker and we can discuss questions and problems in regular video conferences.
Otherwise you can find help on our community discussion board.
Please contribute to the project financially - especially if your company relies
on Yjs. 
Professional Support
- Support Contract with the Maintainer -
By contributing financially to the open-source Yjs project, you can receive
professional support directly from the author. This includes the opportunity for
weekly video calls to discuss your specific challenges.
- Synergy Codes - Specializing in
consulting and developing real-time collaborative editing solutions for visual
apps, Synergy Codes focuses on interactive diagrams, complex graphs, charts, and
various data visualization types. Their expertise empowers developers to build
engaging and interactive visual experiences leveraging the power of Yjs. See
their work in action at Visual Collaboration
Showcase.
Who is using Yjs
- AFFiNE A local-first, privacy-first, open source
knowledge base. :star2:
- Cargo Site builder for designers and artists :star2:
- Gitbook Knowledge management for technical teams :star2:
- Evernote Note-taking app :star2:
- Lessonspace Enterprise platform for virtual
classrooms and online training :star2:
- Ellipsus - Collaborative writing app for storytelling etc.
Supports versioning, change attribution, and "blame". A solution for the whole
publishing process (also selling) :star:
- Dynaboard Build web apps collaboratively. :star:
- Relm A collaborative gameworld for teamwork and
community. :star:
- Huly - Open Source All-in-One Project Management Platform
- Room.sh A meeting application with integrated
collaborative drawing, editing, and coding tools. :star:
- Nimbus Note A note-taking app designed by
Nimbus Web. :star:
- Pluxbox RadioManager A web-based app to
collaboratively organize radio broadcasts. :star:
- modyfi - Modyfi is the design platform built for
multidisciplinary designers. Design, generate, animate, and more — without
switching between apps. :star:
- Sana A learning platform with collaborative text
editing powered by Yjs.
- Serenity Notes End-to-end encrypted
collaborative notes app.
- PRSM Collaborative mind-mapping and system visualisation.
(source)
- Alldone A next-gen project management and
collaboration platform.
- Living Spec A modern way for product teams to collaborate.
- Slidebeamer Presentation app.
- BlockSurvey End-to-end encryption for your forms/surveys.
- Skiff Private, decentralized workspace.
- JupyterLab Collaborative computational Notebooks
- JupyterCad Extension to
JupyterLab that enables collaborative editing of 3d FreeCAD Models.
- JupyterGIS Collaborative GIS
(Geographic Information System) editor in Jupyter
- Hyperquery A collaborative data workspace for
sharing analyses, documentation, spreadsheets, and dashboards.
- Nosgestesclimat The french carbon
footprint calculator has a group P2P mode based on yjs
- SupaKit Spaces for every idea, task, or project.
- LegendKeeper Collaborative campaign planner and
worldbuilding app for tabletop RPGs.
- IllumiDesk Build courses and content with A.I.
- btw Open-source Medium alternative
- AWS SageMaker Tools for building Machine
Learning Models
- linear Streamline issues, projects, and product roadmaps.
- Arkiter - Live interview software
- Appflowy - They use Yrs
- Multi.app - Multiplayer app sharing: Point, draw and edit
in shared apps as if they're on your computer. They are using Yrs.
- AppMaster A No-Code platform for creating
production-ready applications with source code generation.
- Synthesia - Collaborative Video Editor
- thinkdeli - A fast and simple notes app powered by AI
- ourboard - A collaborative whiteboard
application
- Ellie.ai - Data Product Design and Collaboration
- GoPeer - Collaborative tutoring
- screen.garden - Collaborative backend for PKM apps.
- NextCloud - Content Collaboration Platform
- keystatic - git-based CMS
- QDAcity - Collaborative qualitative data analysis platform
- Kanbert - Project management software
- Eclipse Theia - A cloud & desktop
IDE that runs in the browser.
- ScienHub - Collaborative LaTeX editor in the browser.
- Open Collaboration Tools - Collaborative
editing for your IDE or custom editor
- Typst - Compose, edit, and automate technical documents
- Kedyou - Digital workspaces for tutoring
- Lightpage - Personal living notebook
- reearth-flow -
Collaboratively calculate and convert various data
- ProtonMail | Proton Docs - E2E encrypted
collaborative documents in Proton Drive.
- Theneo - AI-powered API docs with live team collaboration.
- ToolJet - Build full-stack enterprise internal apps in
minutes.
Table of Contents
Overview
This repository contains a collection of shared types that can be observed for
changes and manipulated concurrently. Network functionality and two-way-bindings
are implemented in separate modules.
Bindings
Utilities
Tools that extend the core functionality of Yjs.
y-utility
Library with
YMultiDocUndoManager (undo/redo across Yjs docs) and
YKeyValue (optimized key-value store).
yjs-orderedtree 🌳
Class for ordered trees via Y.Map. Handles
insert,
delete, and
move operations for folder-like
hierarchies.
Providers
Setting up the communication between clients, managing awareness information,
and storing shared data for offline usage is quite a hassle. Providers
manage all that for you and are the perfect starting point for your
collaborative app.
This list of providers is incomplete. Please open PRs to add your providers to
this list!
Connection Providers
y-websocket
A module that contains a simple websocket backend and a websocket client that
connects to that backend.
y-redis,
y-sweet,
ypy-websocket,
yrs-warp and
Hocuspocus (see below) are alternative
backends to y-websocket.
y-webrtc
Propagates document updates peer-to-peer using WebRTC. The peers exchange
signaling data over signaling servers. Publicly available signaling servers
are available. Communication over the signaling servers can be encrypted by
providing a shared secret, keeping the connection information and the shared
document private.
Hocuspocus 🌟
A standalone extensible yjs server with sqlite persistence, webhooks, auth and more.
Velt YJs ⭐
Velt
A managed Yjs backend with realtime WebSocket sync and persistent storage - no
server setup required. Includes offline support with automatic reconnection,
version history, end-to-end custom encryption. Additionally it also provides Yjs
webhook events, REST API to read and update Yjs documents, and a browser
DevTools extension.
@liveblocks/yjs ⭐
Liveblocks Yjs
provides a fully hosted WebSocket infrastructure and persisted data
store for Yjs documents. No configuration or maintenance is required. It
also features Yjs webhook events, REST API to read and update Yjs
documents, and a browser DevTools extension.
teleportal
Build your own Y.js sync server: any storage, any JS runtime, any transport.
y-sweet
A standalone yjs server with persistence to S3 or filesystem. They offer a
cloud service as well.
@superviz/yjs
SuperViz Yjs Provider comes with a secure, scalable real-time infrastructure
for Yjs documents, fully compatible with a set of real-time
collaboration components offered by SuperViz. This solution ensures
synchronization, offline editing, and real-time updates, enabling
multiple users to collaborate effectively within shared workspaces.
PartyKit
Cloud service for building multiplayer apps.
@pluv/crdt-yjs
Use
pluv.io as a
full-featured backend for Yjs. pluv.io can either be be used on its
fully-managed WebSocket infrastructure, or self-hosted on Cloudflare Workers
and Node.js runtimes. Offers a typesafe API with authentication, webhooks,
rooms, and more.
y-libp2p
Uses
libp2p to propagate updates via
GossipSub.
Also includes a peer-sync mechanism to catch up on missed updates.
y-dat
[WIP] Write document updates efficiently to the dat network using
multifeed. Each client has
an append-only log of CRDT local updates (hypercore). Multifeed manages and sync
hypercores and y-dat listens to changes and applies them to the Yjs document.
Matrix-CRDT
Use
Matrix as an off-the-shelf backend for
Yjs by using the
MatrixProvider.
Use Matrix as transport and storage of Yjs updates, so you can focus building
your client app and Matrix can provide powerful features like Authentication,
Authorization, Federation, hosting (self-hosting or SaaS) and even End-to-End
Encryption (E2EE).
yrb-actioncable
An ActionCable companion for Yjs clients. There is a fitting
redis extension as well.
y-atproto
A Yjs provider that syncs documents over the
AT Protocol (the decentralized protocol
behind Bluesky). Documents are stored as ATProto records and real-time updates
are delivered via
Jetstream.
ypy-websocket
Websocket backend, written in Python.
Tinybase
The reactive data store for local-first apps. They support multiple CRDTs and
different network technologies.
y-webxdc
Provider for sharing data in
webxdc chat apps.
secsync
An architecture to relay end-to-end encrypted CRDTs over a central service.
y-electric
Sync Yjs over
ElectricSQL.
yjs-cf-ws-provider
Cloudflare provider for Yjs based on durable objects.
nostr-crdt
Sync Yjs over
nostr.
Persistence Providers
y-indexeddb
Efficiently persists document updates to the browsers indexeddb database.
The document is immediately available and only diffs need to be synced through the
network provider.
y-mongodb-provider
Adds persistent storage to a server with MongoDB. Can be used with the
y-websocket provider.
y-fire
A database and connection provider for Yjs based on Firestore.