React 18 计划

2021年6月8日,作者:Andrew ClarkBrian VaughnChristine AbernathyDan AbramovRachel NaborsRick HanlonSebastian MarkbågeSeth Webster


React 团队很高兴地分享一些更新

  1. 我们已经开始着手于 React 18 的发布工作,这将是我们下一个主要版本。
  2. 我们已经创建了一个工作组,以帮助社区逐步采用 React 18 中的新功能。
  3. 我们已经发布了 React 18 Alpha 版本,以便库作者可以试用并提供反馈。

这些更新主要面向第三方库的维护者。如果您正在学习、教授或使用 React 构建面向用户的应用程序,您可以安全地忽略这篇文章。但是,如果您感兴趣,欢迎您关注 React 18 工作组的讨论!


React 18 中的新功能

React 18 正式发布后,将包含开箱即用的改进(例如 自动批处理)、新的 API(例如 startTransition)以及一个 新的流式服务器渲染器,该渲染器内置对 React.lazy 的支持。

这些功能之所以成为可能,要归功于我们在 React 18 中添加的一种新的可选机制。它被称为“并发渲染”,它允许 React 同时准备多个版本的 UI。这种变化主要在幕后进行,但它为提高应用程序的实际性能和感知性能开辟了新的可能性。

如果您一直在关注我们对 React 未来的研究(我们不指望您会这样做!),您可能听说过“并发模式”或它可能会破坏您的应用程序。为了回应社区的这些反馈,我们重新设计了逐步采用的升级策略。并发渲染将不再是“全有或全无”的“模式”,而只会在由一项新功能触发的更新中启用。实际上,这意味着 您将能够在不重写代码的情况下采用 React 18,并按照自己的节奏尝试新功能。

逐步采用策略

由于 React 18 中的并发是可选的,因此对组件行为没有重大的开箱即用破坏性更改。您可以升级到 React 18,只需对应用程序代码进行极少或无需更改,其工作量与典型的主要 React 版本相当。根据我们将多个应用程序转换为 React 18 的经验,我们预计许多用户将能够在一个下午内完成升级。

我们已经在 Facebook 上成功地将并发功能应用于数以万计的组件,根据我们的经验,我们发现大多数 React 组件“无需额外更改即可正常工作”。我们致力于确保整个社区都能顺利升级,因此我们今天宣布成立 React 18 工作组。

与社区合作

对于此版本,我们正在尝试一种新的方法:我们邀请了来自整个 React 社区的专家、开发人员、库作者和教育工作者组成专家小组,参与我们的 React 18 工作组,以提供反馈、提出问题并就该版本进行协作。我们无法邀请我们想要的所有人加入这个最初的小组,但如果这个实验成功,我们希望将来会有更多人加入!

React 18 工作组的目标是为生态系统做好准备,以便现有应用程序和库能够顺利、逐步地采用 React 18。 该工作组托管在 GitHub Discussions 上,公众可以阅读。工作组成员可以留下反馈、提出问题和分享想法。核心团队还将使用讨论库来分享我们的研究成果。随着稳定版本的临近,任何重要信息也会发布在此博客上。

有关升级到 React 18 的更多信息,或有关该版本的其他资源,请参阅 React 18 公告文章

访问 React 18 工作组

任何人都可以阅读 React 18 工作组仓库 中的讨论。

因为我们预计工作组初期会引起大量关注,所以只有受邀成员才能创建或评论主题。但是,这些主题对公众完全可见,因此每个人都可以访问相同的信息。我们相信,这在为工作组成员创造一个高效环境和与更广泛的社区保持透明度之间取得了良好的平衡。

与往常一样,您可以向我们的 问题跟踪器 提交错误报告、问题和一般性反馈。

如何立即试用 React 18 Alpha 版本

新的 Alpha 版本会 使用 @alpha 标签定期发布到 npm。这些版本是使用我们主仓库的最新提交构建的。当一个功能或错误修复被合并后,它将出现在下一个工作日的 Alpha 版本中。

Alpha 版本之间可能存在重大的行为或 API 变化。请记住,不建议在面向用户的生产应用程序中使用 Alpha 版本

预计 React 18 版本时间表

我们还没有具体的发布时间表,但我们预计在 React 18 准备好用于大多数生产应用程序之前,将需要几个月的反馈和迭代。

  • 库 Alpha 版本:现已推出
  • 公开测试版:至少几个月后
  • 候选版本 (RC):测试版发布后至少几周
  • 正式版本:候选版本发布后至少几周

有关我们预计发布时间表的更多详细信息,请参阅 工作组。当我们接近公开发布时,我们会在本博客上发布更新。