{"id":20564617,"url":"https://github.com/yjs/docs","last_synced_at":"2026-03-10T10:03:48.494Z","repository":{"id":39648471,"uuid":"275173718","full_name":"yjs/docs","owner":"yjs","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-04T11:57:05.000Z","size":340,"stargazers_count":31,"open_issues_count":7,"forks_count":50,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-08-04T15:48:31.449Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"dmonad","patreon":null,"open_collective":"y-collective","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-06-26T14:21:20.000Z","updated_at":"2025-08-04T11:57:10.000Z","dependencies_parsed_at":"2023-02-13T04:31:10.962Z","dependency_job_id":"cdfcb585-a37b-4e7d-8197-627441a72b5f","html_url":"https://github.com/yjs/docs","commit_stats":{"total_commits":163,"total_committers":34,"mean_commits":4.794117647058823,"dds":0.2576687116564417,"last_synced_commit":"dcad21cb937c3a51d5814dad8a8b62d93dfdfc8b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yjs/docs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjs%2Fdocs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjs%2Fdocs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjs%2Fdocs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjs%2Fdocs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yjs","download_url":"https://codeload.github.com/yjs/docs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yjs%2Fdocs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30329698,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-16T04:28:10.838Z","updated_at":"2026-03-10T10:03:43.481Z","avatar_url":"https://github.com/yjs.png","language":null,"funding_links":["https://github.com/sponsors/dmonad","https://opencollective.com/y-collective"],"categories":[],"sub_categories":[],"readme":"---\ndescription: \u003e-\n  Modular building blocks for building collaborative applications like Google\n  Docs and Figma.\n---\n\n# Introduction\n\n{% hint style=\"info\" %}\nThis documentation website is a work in progress. The best source of information is still the [Yjs README](https://github.com/yjs/yjs) and the [yjs-demos](https://github.com/yjs/yjs-demos) repository.\n{% endhint %}\n\nYjs is a high-performance [CRDT](https://en.wikipedia.org/wiki/Conflict-free\\_replicated\\_data\\_type) for building collaborative applications that sync automatically.\n\nIt exposes its internal CRDT model as _shared data types_ that can be manipulated concurrently. Shared types are similar to common data types like `Map` and `Array`. They can be manipulated, fire events when changes happen, and automatically merge without merge conflicts.\n\n## Quick Start\n\nThis is a working example of how shared types automatically sync. We also have a [getting-started guide](getting-started/a-collaborative-editor.md), API documentation, and lots of [live demos with source code](https://github.com/yjs/yjs-demos).\n\n```javascript\nimport * as Y from 'yjs'\n\n// Yjs documents are collections of\n// shared objects that sync automatically.\nconst ydoc = new Y.Doc()\n// Define a shared Y.Map instance\nconst ymap = ydoc.getMap()\nymap.set('keyA', 'valueA')\n\n// Create another Yjs document (simulating a remote user)\n// and create some conflicting changes\nconst ydocRemote = new Y.Doc()\nconst ymapRemote = ydocRemote.getMap()\nymapRemote.set('keyB', 'valueB')\n\n// Merge changes from remote\nconst update = Y.encodeStateAsUpdate(ydocRemote)\nY.applyUpdate(ydoc, update)\n\n// Observe that the changes have merged\nconsole.log(ymap.toJSON()) // =\u003e { keyA: 'valueA', keyB: 'valueB' }\n```\n\n## Editor Support\n\nYjs supports several popular text and rich-text editors. We are working with different projects to enable collaboration-support through Yjs.\n\n{% content-ref url=\"ecosystem/editor-bindings/prosemirror.md\" %}\n[prosemirror.md](ecosystem/editor-bindings/prosemirror.md)\n{% endcontent-ref %}\n\n{% content-ref url=\"ecosystem/editor-bindings/tiptap2.md\" %}\n[tiptap2.md](ecosystem/editor-bindings/tiptap2.md)\n{% endcontent-ref %}\n\n{% content-ref url=\"ecosystem/editor-bindings/monaco.md\" %}\n[monaco.md](ecosystem/editor-bindings/monaco.md)\n{% endcontent-ref %}\n\n{% content-ref url=\"ecosystem/editor-bindings/quill.md\" %}\n[quill.md](ecosystem/editor-bindings/quill.md)\n{% endcontent-ref %}\n\n{% content-ref url=\"ecosystem/editor-bindings/codemirror.md\" %}\n[codemirror.md](ecosystem/editor-bindings/codemirror.md)\n{% endcontent-ref %}\n\n{% content-ref url=\"ecosystem/editor-bindings/remirror.md\" %}\n[remirror.md](ecosystem/editor-bindings/remirror.md)\n{% endcontent-ref %}\n\n## Network Agnostic 📡\n\nYjs doesn't make any assumptions 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.\n\nYou can [integrate Yjs into your existing communication infrastructure](tutorials/creating-a-custom-provider.md) or use one of the [several existing network providers](ecosystem/connection-provider/) that allow you to jump-start your application backend.\n\nScaling shared editing backends is not trivial. Most shared editing solutions depend on a single source of truth - a central server - to perform conflict resolution. Yjs doesn't need a central source of truth. This enables you to 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](tutorials/untitled-3.md).\n\nIf you don't want to maintain your own backend, a number of providers offer Yjs as a service, including [Liveblocks](https://liveblocks.io/yjs), [Y-Sweet](https://jamsocket.com/y-sweet), and [Tiptap](https://tiptap.dev/product/collaboration).\n\nYjs is truly network agnostic and can be used as a data model for decentralized and [Local-First software](https://www.inkandswitch.com/local-first.html).\n\nJust start somewhere. Since the \"network provider\" is clearly separated from Yjs and the various integrations, it is pretty easy to switch to different providers.\n\n## Rich Ecosystem 🔥\n\nYjs 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.\n\nWe 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.\n\n## Unmatched Performance🚀\n\nYjs is the fastest CRDT implementation by far.\n\n{% embed url=\"https://github.com/dmonad/crdt-benchmarks\" %}\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyjs%2Fdocs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyjs%2Fdocs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyjs%2Fdocs/lists"}