写点什么

Zero 1.0 发布,Rocicorp Web 同步引擎迎来首个稳定版

作者:Daniel Curtis
  • 2026-06-11
    北京
  • 本文字数:1127 字

    阅读完需:约 4 分钟

Rocicorp 发布 Zero 1.0,这是其通用 Web 同步引擎的首个稳定版本。经过近两年的开发、50 多个版本迭代、数千次提交以及数百个缺陷修复后,该版本终于面世。这一里程碑标志着 Rocicorp 现已全面支持 Zero API 并承诺持续维护,后续预计极少出现破坏性变更,即便有改动,影响范围也会远小于测试版阶段。

从功能上看,发布说明提到,1.0 版本与之前的 0.26.2 版本相比更新幅度极小,主版本号升级主要为象征意义,并未引入重大变更。此次更新的核心亮点是新增了一个 Schema 变更钩子,可通过 COMMENT ON PUBLICATION 语句检测 Supabase 上的发布变更,从而绕开 Supabase 不支持对发布操作使用事件触发器的限制。新版本还修复了 litestream 恢复数据损坏、变更数据捕获(CDC)异常时的错误处理、关闭期间的 IPC_CHANNEL_CLOSED 竞态条件、孤立订阅者场景,以及 time 和 timetz 类型的 SQL 生成问题。

Zero 的工作原理是将应用内的 zero-client 库与 zero-cache 服务配对,后者会维护一份 Postgres 数据库的只读副本。使用 ZQL(Zero 的流式查询引擎)编写的查询会先在本地缓存上执行,并在下一帧返回匹配结果,同时后台会从服务器同步权威数据。创始人 Aaron Boodman 在 Hacker News 上表示,这种“自带数据库”(Bring-Your-Own-Database)模式是一大优势,Zero “本质上只是一个高级缓存”,不会造成数据损坏,团队既可逐步接入使用,也能轻松完成迁移。

社区对开发者体验的反应较为积极,但对于其生产环境可用性则持谨慎的态度。Marmelab 在对这款引擎进行评测时,肯定了它出色的运行速度与开发者体验,同时也指出了几处明显的局限:

结合应用程序的复杂度和所选的技术栈,部分限制依旧较为突出。以下是我们整理的相关问题示例:

目前仅支持 Postgres

Postgres 视图不会被同步

部分 Postgres 列类型不受支持,例如 array

客户端 API 无法针对报错或被驳回的数据更新做出响应

Lobsters 上有评论者指出,客户端包体积为 718 KB(未压缩,gzip 压缩后为 232 KB),且不支持服务端渲染(SSR);而 Reddit 上的一个讨论帖则提出质疑,在本地存储、同步副本和源数据库之上叠加这么多层是否过于复杂。

Zero 进入了一个拥挤的赛道,与 ElectricSQLInstantDBPowerSyncConvex 等竞品同台竞技。Boodman 建议希望实现完全去中心化、端到端方案的开发者可以关注 Jazz。服务端渲染功能目前仍在路线图中,尚未正式推出。

因为没有重大变更,升级过程非常直接:

npm install @rocicorp/zero@1.0
复制代码

从较旧版本升级的团队仍需查阅各版本的发布说明,了解此前的 API 变更,例如 0.23 版本中的自定义 mutator 类型变更,并按照Schema 部署指南中的顺序建议操作,以避迁移期间出现停机。

查看英文原文:https://www.infoq.com/news/2026/06/zero-version-1/