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

该仓库组织如下:
- 一个 main 分支,除了 README.md 文件外没有代码,其中宣传了其他分支。
- 几个迁移分支,展示了从一个特定 RN 版本到另一个版本的迁移。
一些迁移分支还包含一个 RUN.md 文件,以更易于阅读的方式描述了每个提交中应用的精确步骤。
我们计划使此示例与最新稳定版本保持同步,并为我们将要发布的任何 React Native 次要版本添加迁移。如果您发现任何步骤有问题,请在仓库中提交一个问题。这将持续到我们有理由相信大多数 React Native 用户已经迁移到新架构为止。
RNNewArchitectureLibraries
同样地,此仓库提供了如何创建 TurboModule 和 Fabric 组件 的分步指南。它着重于确保新架构和旧架构之间的向后兼容性。
该仓库的组织方式与上一个类似:
- 一个 main 分支,除了 README.md 文件外没有代码,其中宣传了其他分支。
- 其他分支,展示如何开发 TurboModules 和 Fabric Components。
我们计划将此示例更新到 React Native 的新版本,特别是影响库开发的版本,并添加更多关于如何使用高级功能的示例(例如:实现命令、事件发射器、自定义状态)。如果您发现错误,请在示例仓库中提交问题。
支持
我们创建了一个专门的工作组,为社区提供提问和获取新架构更新的空间。如果您是库维护者,这是一个宝贵的资源,可以找到您问题的答案,并让我们了解您的需求。要加入,请按照这些说明操作。欢迎所有人加入。
工作组分为几个部分:
- 公告:分享 React Native 新架构推广里程碑和重要更新的地方
- 深入探讨:讨论深入探讨和技术专题的地方
- 文档:讨论新架构文档和迁移材料的地方
- 库:讨论第三方库及其迁移到新架构的地方
- 问答:向社区寻求新架构方面帮助的地方
- 发布:讨论特定版本错误和构建问题的地方
要有效使用此群组:
- 确保您的库列在库部分中。这将帮助我们分享您的库的迁移状态,并帮助我们了解库作者面临的困难,以便更好地支持您。
- 如果您遇到障碍并需要支持,请利用 Q&A 部分。我们的团队和社区专家正在监控并将尽力支持。
- 关注其他部分,了解可能影响您的主题。新版本可能会引入您正在寻找的 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 将为应用程序和库开发者提供改进的开发体验,以适应新架构。您可以在此处找到有关 0.69.0 版本的更多信息。
我们对与**新架构**共同构建的未来充满期待!