帮助迁移 React Native 库到新架构
tl; dr:我们正在改进支持 React Native 新架构的资源。我们已经发布了一个仓库来帮助迁移您的应用 (RNNewArchitectureApp) 和一个用于您的库的仓库 (RNNewArchitectureLibraries)。我们还在改进网站上的 新架构指南,并创建了一个 GitHub 工作组来回答与新架构相关的问题。
简介
在这篇文章中,我们将分享关于工具和资源的更新,以帮助您将 原生模块 和 原生组件 迁移到它们的新架构等效物:TurboModule 和 Fabric 组件。
React Native 用户利用大量的开源库来构建应用。为了构建完整且一致的生态系统,这些库的迁移是必要的,这样每个人都可以从新架构解锁的功能和性能改进中受益。
以下是我们正在努力支持库开发者迁移到新架构的工作:
- 文档: 我们正在扩展网站上的 新架构指南,以涵盖更多新架构的概念以及如何开发您的组件。
- 示例迁移: 我们设置了两个仓库来演示如何将 React Native 应用迁移到新架构 (RNNewArchitectureApp) 以及如何创建与新旧架构都兼容的 Fabric 组件 和 TurboModule (RNNewArchitectureLibraries)。
- 支持: 今年早些时候,我们创建了一个 GitHub 工作组,专门讨论和解答关于新架构的问题。
在这篇文章中,我们将更深入地探讨这些资源,并更详细地解释如何最有效地使用它们。最后,我们将提供最常用的 React Native 库的当前迁移状态快照。
文档
在过去的 6 个月中,我们添加了一个关于 采用新架构的指南 和一个 Fabric 的 架构深入探讨。我们计划扩展这些内容,包括更多关于创建 TurboModules、理解 CodeGen 等的指南和文档。我们计划在 0.70 版本发布时分享更新。
目前,新架构 指南涵盖了如何 迁移您的应用 和 您的库 以正确支持新架构。
如果您对本指南的演变感兴趣,或有反馈意见,您可以关注 此 pull request。
示例迁移
对于可能希望跟随代码学习的开发者,我们准备了两个示例仓库。
RNNewArchitectureApp
这个仓库 的创建是为了演示如何将应用、原生模块和原生组件从 React Native 0.67 版本的旧架构迁移到新架构和最新版本的 React Native。每个提交都对应一个独立的迁移步骤。

仓库的组织结构如下:
- main 分支没有代码,但有一个 README.md 文件,其中介绍了其他分支。
- 几个迁移分支,展示了从特定版本的 RN 迁移到另一个版本的迁移过程。
一些迁移分支还包含一个 RUN.md 文件,该文件以更易于理解的方式描述了每个提交中应用的精确步骤。
我们计划使此示例与最新的稳定版本保持同步,并在我们将要发布的任何 React Native 小版本中添加迁移。如果您发现任何步骤有问题,请在仓库中提交 issue。这将持续到我们合理地认为大多数 React Native 用户已迁移到新架构为止。
RNNewArchitectureLibraries
类似地,这个仓库 提供了关于如何创建 TurboModule 和 Fabric 组件 的逐步指南。它专注于确保新旧架构之间的向后兼容性。
仓库的组织结构与前一个类似:
- main 分支没有代码,但有一个 README.md 文件,其中介绍了其他分支。
- 其他分支展示了如何开发 TurboModules 和 Fabric 组件。
我们计划使此示例保持更新,以适应新的 React Native 版本,特别是影响库开发的版本,并添加更多关于如何使用高级功能的示例(例如:实现命令、事件发射器、自定义状态)。如果您发现错误,请在示例仓库中提交 issue。
支持
我们创建了一个专门的 工作组,为社区提供空间来提问并获取关于新架构的更新。如果您是库维护者,这是一个宝贵的资源,可以找到您问题的答案,并让我们了解您的需求。要加入,请按照 这些说明 进行操作。欢迎所有人加入。
工作组分为几个部分:
- 公告:用于分享关于 RN 新架构推广的里程碑和重大更新的地方
- 深入探讨:用于讨论深入探讨和技术特定主题的地方
- 文档:用于讨论新架构文档和迁移材料的地方
- 库:用于讨论第三方库及其迁移到新架构的故事的地方
- 问答:用于向社区寻求关于新架构主题帮助的地方
- 发布:用于讨论特定于版本的错误和构建问题的地方
为了有效地使用此工作组:
- 确保您的库在 库 部分中列出。这将帮助我们分享关于您的库迁移状态的更新,并帮助我们了解库作者在支持您时面临的困难。
- 如果您遇到阻碍并需要支持,请利用问答 部分。我们的团队和社区专家正在监控,并将尽最大努力提供支持。
- 关注可能影响您的其他部分的主题。新的版本可能正好引入您一直期待的 API。您可以通过 GitHub 订阅特定讨论。
我们计划支持这个工作组,直到 新架构 默认启用,并且所有主要库都已迁移到它。
常用库的迁移状态
库维护者一直在 工作组 中与我们分享他们的迁移工作状态,我们想为您提供一个快速概览:
- react-native-gesture-handler:✅ 已迁移
- react-native-navigation:🏃♂️ 进行中
- react-native-pager-view:🏃♂️ 进行中
- react-native-reanimated:✅ 已迁移。正在进行性能测试和分析
- react-native-screens:🏃♂️ 进行中
- react-native-slider:🎬 已启动
- react-native-template-new-architecture:✅ 已迁移。逐步采用/测试更多配套库
- react-native-template-typescript:✅ 已迁移
- react-native-webview:🎬 已启动
下一步
我们致力于支持 React Native 社区采用新架构。具体来说,我们将继续:
- 在 工作组 中提供尽力而为的支持。
- 在 RNNewArchitecture 仓库中提供更多关于如何使用新架构取得惊人成果的示例。
- 提供关于 新架构 的清晰且最新的文档。
- 在 工作组 中跟踪重要 React Native 库的迁移状态。
- 简化开发者的迁移路径
此外,React Native 0.69 将为应用和库开发者改进新架构采用的开发体验 (devX)。您可以在 此处 找到关于 0.69.0 版本的更多信息。
我们对将与 新架构 一起构建的内容感到兴奋!