協助遷移 React Native 函式庫至新架構
重點摘要:我們正在努力改進支援 React Native 新架構的資源。我們已發布儲存庫以協助遷移您的應用程式 (RNNewArchitectureApp) 和函式庫 (RNNewArchitectureLibraries)。我們也正在修改網站上的 新架構指南,並且建立了一個 GitHub 工作小組,以回答與新架構相關的問題。
簡介
在這篇文章中,我們將分享關於工具和資源的更新,以協助您將原生模組和原生組件遷移到它們的新架構對應項目,即 Turbo模組和 Fabric 組件。
React Native 使用者利用大量的開源函式庫來建構應用程式。為了建立完整且一致的生態系統,這些函式庫必須進行遷移,以便每個人都能受益於新架構所釋放的功能和效能改進。
以下是我們正在努力支援函式庫開發人員遷移到新架構的工作
- 文件: 我們正在擴展網站上的 新架構指南,以涵蓋更多新架構的概念以及如何開發您的組件。
- 範例遷移: 我們已建立兩個儲存庫,以示範如何將 React Native 應用程式遷移到新架構 (RNNewArchitectureApp),以及如何建立與新舊架構皆相容的 Fabric 組件和 Turbo模組 (RNNewArchitectureLibraries)。
- 支援: 今年稍早,我們建立了一個 GitHub 工作小組,專門討論和解答關於新架構的問題。
在這篇文章中,我們將更深入地探討這些資源,並更詳細地解釋如何最有效地使用它們。最後,我們將提供目前最常用的 React Native 函式庫的遷移狀態快照。
文件
在過去 6 個月中,我們新增了關於 採用新架構的指南,以及關於 Fabric 的 架構深入探討。我們計劃擴展此內容,以納入更多關於建立 Turbo模組、理解 CodeGen 等的指南和文件。我們計劃在 0.70 版本發布時分享更新。
目前,新架構指南涵蓋如何將 您的應用程式 和 您的函式庫 遷移以正確支援新架構。
如果您對本指南的發展歷程感興趣,或有任何意見回饋,您可以追蹤 這個 pull request。
範例遷移
對於可能想要在程式碼中追蹤的開發人員,我們準備了兩個範例儲存庫。
RNNewArchitectureApp
這個儲存庫 的建立旨在示範如何將應用程式、原生模組和原生組件從 React Native 0.67 版本上的舊架構遷移到新架構和最新版本的 React Native。每個提交對應一個隔離的遷移步驟。

此儲存庫的組織方式如下
- main 分支沒有程式碼,但有一個 README.md,其中宣傳了其他分支。
- 數個遷移分支,顯示從特定 RN 版本到另一個版本的遷移。
某些遷移分支也具有 RUN.md 檔案,其中以更人性化的方式描述了每個提交中應用的確切步驟。
我們計劃讓此範例與最新的穩定版本保持同步,並在我們將發布的任何 React Native 次要版本中新增遷移。如果您注意到任何步驟有問題,請在儲存庫中提交問題。這將持續到我們合理地認為大多數 React Native 使用者已遷移到新架構為止。
RNNewArchitectureLibraries
同樣地,這個儲存庫 提供了關於如何建立 Turbo模組 和 Fabric 組件 的逐步指南。它著重於確保新架構和舊架構之間的向後相容性。
此儲存庫的組織方式與先前的儲存庫類似
- main 分支沒有程式碼,但有一個 README.md,其中宣傳了其他分支。
- 其他分支顯示如何開發 Turbo模組 和 Fabric 組件。
我們計劃讓此範例隨著 React Native 的新版本保持更新,特別是影響函式庫開發的版本,並新增更多關於如何使用進階功能的範例 (例如:實作命令、事件發射器、自訂狀態)。如果您發現錯誤,請在範例儲存庫中提交問題。
支援
我們建立了一個專門的 工作小組,為社群提供空間來提出問題並取得關於新架構的更新。如果您是函式庫維護者,這是尋找問題答案的寶貴資源,也能讓我們瞭解您的需求。若要加入,請遵循 這些指示。歡迎所有人加入。
工作小組分為幾個部分
- 公告:分享關於 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 版本的更多資訊。
我們對將與 新架構 一起建構的成果感到興奮!