Show HN:React Spreadsheet 2

一个新的基于 React 的电子表格组件 RowsnColumns Spreadsheet 2,旨在让开发者通过基于 canvas、虚拟化的网格,将类似 Google Sheets 的协作表格直接嵌入 Web 应用。评论者赞赏其功能深度和实时协作,但也指出其在某些设备上的性能问题、canvas 渲染带来的可访问性挑战,以及公开演示中协作模式的不稳定性。对于其非商业许可和相对较高的价格,也存在争论,尤其是在有竞争的开源或低成本网格和电子表格库的情况下。

概览与功能集

  • 基于 React 的电子表格 UI,使用 canvas 渲染;旨在复现 Google Sheets 风格的体验。
  • 支持声明式单元格渲染、自定义公式、嵌入内容、主题和实时协作。
  • 用户对其打磨程度、多人协作特性以及熟悉的快捷键(例如 Cmd+D)表示赞赏。

性能与可扩展性

  • 使用行和列虚拟化,以及用于懒加载 / 无限滚动的异步 hooks。
  • 硬限制:约 1,048,576 行和 16,384 列。
  • 一些用户报告在较新的 iPhone 上性能流畅;另一些人在中端 Android/Firefox 上以及 Pixel 上最初会看到滚动卡顿,之后有所改善。
  • 作者描述了以 FPS 为重点的性能分析、用于大尺寸 4K 显示器的 canvas 拆分,以及对布局 / 重渲染成本的关注。
  • 讨论争论电子表格是否适合百万行数据集,还是应该使用合适的数据库。

可访问性与渲染方式

  • 基于 canvas 的渲染引发了可访问性方面的问题。
  • 计划中的解决方案:覆盖一个带有 ARIA 区域和纯文本、供屏幕阅读器使用的 table 元素,并提供键盘导航、主题以及明亮 / 黑暗模式。
  • 讨论提到,在某些浏览器中,原生 table 元素有时比基于 div 的网格表现更好。

协作演示、Bug 与稳定性

  • 公开协作演示被称赞为令人印象深刻,但会反复因客户端 JS 异常而崩溃。
  • 已知问题包括:删除其他用户正在使用的工作表、与地区相关的日期正则表达式错误,以及非持久化状态导致的不同步。
  • 一些用户觉得不断变化的协作表格令人分心;系统提供了单用户模式(?collab=false)。
  • 公开的协作表格偶尔会沦为垃圾信息 / 侮辱性内容,因而有人呼吁加入审核或过滤机制。

许可、定价与目标用例

  • 代码是闭源的;GitHub 仓库对许可用户才可见。
  • 定价被认为是“高端”和“昂贵”的,尤其是 299 美元的非商业“solo”许可。
  • 对于谁会为“仅限非商业”许可付费,存在困惑与怀疑。
  • 支持者指出内部工具、仪表盘和公司内部应用是一个相当大的市场。

替代方案与相关工具

  • 讨论串提到其他网格 / 电子表格:开源选项如 SlickGrid、较早的 Handsontable、TUI Grid、React Spreadsheet、Svelte Sheets,以及一个即将发布、采用 MIT 许可的引擎。
  • 更广泛的看法是,类电子表格 UI 在技术上很有挑战性,但经常被重复实现,从 UX 角度看有时会让人觉得像“回到 1982 年”。