Y-Octo

July 29, 2026 · View on GitHub

test docs crates codecov

Y-Octo is a high-performance CRDT implementation compatible with yjs.

Introduction

Y-Octo is a tiny, ultra-fast CRDT collaboration library built for all major platforms. Developers can use Y-Octo as the Single source of truth for their application state, naturally turning the application into a local-first collaborative app.

Y-Octo also has interoperability and binary compatibility with yjs. Developers can use yjs to develop local-first web applications and collaborate with Y-Octo in native apps alongside web apps.

Who are using

AFFiNE is using y-octo in production. There are Electron app and Node.js server using y-octo in production.

Mysc is using y-octo in the Rust server, and the iOS/Android client via the Swift/Kotlin bindings (Official bindings coming soon).

Performance

Tasksautomerge v0.10.0 (2026-06-05)loro v1.13.7 (2026-07-15)diamond-types v1.0.0 (2022-08-25)y-octo v0.1.0 (2026-07-27)yrs v0.27.3 (2026-07-13)
automerge - apply3862.98 ± 3.78 ms45.66 ± 0.06 ms9.28 ± 0.02 ms203.74 ± 0.43 ms2387.79 ± 12.86 ms
automerge - decode time206.94 ± 1.17 ms73.09 ± 0.95 us1.49 ± 0.00 ms37.51 ± 0.05 ms2.32 ± 0.01 ms
automerge - encode time1.71 ± 0.05 ms219.52 ± 3.05 us672.47 ± 7.71 us9.70 ± 0.02 ms459.53 ± 0.91 us
concurrent list inserts93.09 ± 0.45 ms164.31 ± 0.41 ms34.10 ± 0.06 ms7.88 ± 0.02 ms7.55 ± 0.03 ms
list_random_insert_1k248.13 ± 0.25 ms10.22 ± 0.10 ms2.61 ± 0.00 ms2.06 ± 0.01 ms3.16 ± 0.00 ms
parallel applying automerge edits57192.59 ± 464.50 ms10216.50 ± 120.33 ms96.83 ± 0.37 ms1157.47 ± 14.51 ms5416.23 ± 54.97 ms

The parallel workload applies the full Automerge trace to two replicas in random batches of 1–1000 local edits, synchronizes after each pair of batches, and verifies replica convergence.

Ref: https://github.com/darkskygit/crdt-bench-native

Features

  • ✅ Collaborative Text
    • ✅ Read and write styled Unicode compatible data.
    • ✅ Add, modify and delete text styles.
    • 🚧 Embedded JS data types and collaborative types.
    • ✅ Collaborative types of thread-safe.
  • Collaborative Array
    • ✅ Add, modify, and delete basic JS data types.
    • ✅ Recursively add, modify, and delete collaborative types.
    • ✅ Collaborative types of thread-safe.
    • 🚧 Recursive event subscription
  • Collaborative Map
    • ✅ Add, modify, and delete basic JS data types.
    • ✅ Recursively add, modify, and delete collaborative types.
    • ✅ Collaborative types of thread-safe.
    • 🚧 Recursive event subscription
  • 🚧 Collaborative Xml (Fragment / Element)
  • ✅ Collaborative Doc Container
    • ✅ YATA CRDT state apply/diff compatible with yjs
    • ✅ State sync of thread-safe.
    • ✅ Store all collaborative types and JS data types
    • ✅ Update event subscription.
    • 🚧 Sub Document.
  • ✅ Yjs binary encoding
    • ✅ Awareness encoding.
    • ✅ Primitive type encoding.
    • ✅ Sync Protocol encoding.
    • ✅ Yjs update v1 encoding.
    • 🚧 Yjs update v2 encoding.

Testing & Linting

Put everything to the test! We've established various test suites, but we're continually striving to enhance our coverage:

  • Rust Tests
  • Node Tests
  • Smoke Tests
  • Eslint, Clippy
  • OctoBase: The open-source embedded database based on Y-Octo.
  • yjs: Shared data types for building collaborative software in web.

Maintainers

Why not yrs

See Why we're not using yrs

License

Y-Octo are MIT licensed.