A JavaScript graph-sync engine and toolkit for building decentralized, offline-first, end-to-end encrypted apps that sync peer to peer.
loro-dev/loro
A Rust CRDT library (with JS/WASM and Swift bindings) for making JSON-like app data collaborative, mergeable and version-controlled.
- Stars
- 6,237
- Forks
- 193
- Open issues
- 66
- Last commit
- 29 minutes ago
What is it?
Loro is a CRDT (Conflict-free Replicated Data Type) library for building local-first and collaborative applications. Documents can be edited offline on each peer, then merged automatically when peers sync, without a central server deciding conflicts.
The library provides several data types: text editing based on the Fugue algorithm, a rich text CRDT, a movable tree, a movable list, and a last-write-wins map. Documents support delta updates, fast loading, time travel through history, and shallow snapshots that behave like a Git shallow clone.
Loro is written in Rust and can be used from Rust directly, from JavaScript through WebAssembly (the loro-crdt npm package), and from Swift. Other languages are covered by the loro-ffi project.
Key features
- 01Automatic merging of concurrent edits across peers
- 02Text editing and rich text CRDTs built on Fugue
- 03Movable tree and movable list data types
- 04Time travel through document history
- 05Shallow snapshots similar to Git shallow clones
- 06Delta updates for syncing only changes
Use cases
- Adding real-time collaboration to a JSON-based app without a central merge server
- Building offline-first note or document editors that sync later
- Versioning structured application data with history browsing
- Collaborative rich text editing in web or Swift apps
Quick start
- 1
Open the Getting Started tutorial linked in the README
- 2
In a JS project, import LoroDoc and LoroList from the loro-crdt package, as in the README example
In collections
Topics
FAQ
- What is loro?
- A Rust CRDT library (with JS/WASM and Swift bindings) for making JSON-like app data collaborative, mergeable and version-controlled. Loro is a CRDT (Conflict-free Replicated Data Type) library for building local-first and collaborative applications. Documents can be edited offline on each peer, then merged automatically when peers sync, without a central server deciding conflicts.
- Is loro free to use? What license does it have?
- loro is open source under the MIT license. Check the license terms before using it in commercial products.
- Is loro still maintained?
- Actively maintained. The last commit to loro was on Oct 22, 2026.
- What can I use loro for?
- Adding real-time collaboration to a JSON-based app without a central merge server Building offline-first note or document editors that sync later Versioning structured application data with history browsing Collaborative rich text editing in web or Swift apps
- How do I install loro?
- Open the Getting Started tutorial linked in the README In a JS project, import LoroDoc and LoroList from the loro-crdt package, as in the README example
- Where can I get loro?
- The source code and installation instructions are on GitHub: https://github.com/loro-dev/loro
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
An open-source, local-first knowledge base that merges docs, whiteboard canvas and tables in one workspace, as an alternative to Notion and Miro.
A local-first, reactive NoSQL database for JavaScript apps that runs in browsers, Node.js, React Native and Electron, with replication to your own backend.
A PowerPoint alternative delivered as a single self-contained HTML file that includes its own viewer, presenter, and editor.
Table Habit is a free, open-source Flutter habit tracker for micro habits, with WebDAV sync and offline-first storage.
Local-first, markdown-based notes app for macOS, Windows, Linux, Android and iOS, with optional sync to your own storage or server.