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

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