轻松实现协作,
由 CRDT 驱动,
为本地优先软件而生。

ReimagineStateManagementWithCRDTs

在 GitHub 上关注我们

Loro 是一个面向本地优先、实时协作的高性能 CRDT 库。

高性能

针对内存、CPU 与加载速度进行优化,提供先进的性能原语。

丰富的 CRDT 类型支持

轻松将类 JSON 数据转换为可协作的数据类型。

实时协作与版本控制

像 Git 一样保留完整版本历史,即使在实时协作中也不例外。

简单直观的 API

以开发体验为核心设计。

谁在使用 Loro

"我们使用 Loro 作为我们基于 Web 的计算笔记本软件的文档表示... 这个库是朝着让“多人”应用成为常态迈出的一大步。"
Read more
"如果你正在寻找一个实时协作库(基于 CRDTs),我强烈推荐 @loro_dev。它性能好、类型安全、并且得到积极维护 我已经尝试了所有这些库"
"... Loro 已成为我的首选,因为它有用于管理版本和变更集的全面 API,以及其周到(但简单)的 TypeScript 声明。"
Read more
Cole Lawrence
Cole Lawrence
"强大、高性能且设计精良。对于任何构建严肃协作软件的人来说,这是最好的 CRDT。"
AJ Nandi
AJ Nandi
"经过广泛研究,我们早期在技术上对 Loro 进行了重大押注... 迄今为止是 10/10 的体验。"
Read more
Oliver Beavers
Oliver Beavers
Stealth Startup
"Loro 的 API 非常好用,具有出色的性能和功能,开发团队非常乐于助人且响应迅速。我强烈推荐!"
Read more
Zicklag
Zicklag

富文本编辑器演示

轻松实现文档同步,
即使在 P2P 环境中也是如此

import {  } from "loro-crdt";
const  = new ();
const  = new ();
.("text").("你好!");
.("text").("嗨!");
const :  = .({ : "update" });
const :  = .({ : "update" });
 
// 通过任何方法交换 bytesA 和 bytesB
.();
.();
 
// 合并结果是一致的
// 它们都应该是 "你好!嗨!" 或 "嗨!你好!"
.(.("text").());
.(.("text").());

你可以构建什么

Loro 驱动协作状态层。你带来 UI、身份验证、存储和传输。

协作文档

具有在线状态、历史记录和无冲突合并的文档样式编辑器。
教程

设计工具

具有列表/树、撤销/重做和实时同步的 Figma 风格画布。

数据仪表板

具有共享 JSON 状态、快照和历史记录的 Airtable 样式的表格。

多人游戏

具有无冲突更新和时间线回放的共享游戏状态。

聊天应用

具有离线同步、在线状态和无冲突历史记录的消息流。
列表

离线优先应用

本地优先的状态、更新和合并,在线时同步。
同步

全面的 CRDT 算法支持

基础数据结构

支持用于有序集合的 MovableList,用于键值对的 LWW(最后写入获胜) Map,用于层级数据的 MovableTree,以及用于富文本操作的 Text,覆盖多样化的协作应用场景。

基于 Fugue 的文本/列表编辑

Loro 集成了 Fugue,这是一种旨在合并并发文本或列表编辑时最大限度减少交错异常的全新 CRDT 算法。

富文本 CRDT

Loro 管理的富文本 CRDT 擅长合并并发样式编辑,尽可能保留每位用户的原始意图。欢迎阅读我们的博客 Loro 的富文本 CRDT,了解更多信息。