跳至主要內容

React Native 開源更新 2019 年 6 月

·8 分鐘閱讀
Christoph Nakazawa
Christoph Nakazawa
前 Facebook 工程師

程式碼與社群健康

在過去六個月中,總共有超過 550 位貢獻者向 React Native 提交了 2800 次 commit。來自社群的 400 位貢獻者建立了超過 1,150 個 Pull Request,其中 820 個 Pull Request 已合併。

儘管我們透過 Lean Core 計畫將網站、CLI 和許多模組從 React Native 中分離出來,但在過去六個月中,平均每天的 Pull Request 數量已從三個增加到約六個。目前未處理的 pull request 平均數量低於 25 個,而且我們通常會在數小時或數天內回覆建議和評論。

有意義的社群貢獻

我們想重點介紹一些我們認為很棒的近期貢獻

Lean Core

Lean Core 的主要動機是將模組從 React Native 中分離到單獨的儲存庫中,以便它們可以獲得更好的維護。在短短六個月內,WebViewNetInfoAsyncStorage網站CLI 等儲存庫總共收到了超過 800 個 Pull Request。除了更好的維護之外,這些專案也可以比 React Native 本身更頻繁地獨立發布。

我們也藉此機會從 React Native 本身中移除過時的 polyfill 和舊版組件。過去需要 Polyfill 來支援舊版 JavaScriptCore (JSC) 中的 MapSet 等語言功能。現在 React Native 隨附新版本,這些 polyfill 已被移除。

這項工作仍在進行中,原生和 JavaScript 端仍有許多東西需要分離或移除,但早期跡象表明,我們成功扭轉了增加表面積和應用程式大小的趨勢:例如,當查看 JavaScript bundle 時,大約在一年前的 0.54 版本中,React Native JavaScript bundle 大小為 530kb,並且在短短 6 個月內增加到 0.57 版本的 607kb (+77kb)。現在我們看到 master 上的 bundle 大小減少了 28kb,降至 579kb,delta 超過 100kb!

當我們結束 Lean Core 計畫的第一次迭代時,我們將努力更有意識地處理新增到 React Native 的新 API,並且我們將持續評估使 React Native 更小、更快的方法,以及尋找授權社群取得各種組件所有權的方法。

使用者意見回饋

六個月前,我們詢問社群「您不喜歡 React Native 的哪些方面?」,這很好地概述了人們面臨的問題。我們 幾個月前回覆了該貼文,現在是時候總結在熱門問題上取得的進展

  • 升級: React Native 社群團結一致,對升級體驗進行了多項改進:自動連結、透過 rn-diff-purge 提供的更佳升級指令、升級協助網站(即將推出)。我們也將確保透過發布每個主要版本的部落格文章來傳達重大變更和令人興奮的新功能。許多這些改進將使 0.60 版本之後的未來升級變得更加容易。
  • 支援/不確定性: 許多人對 Pull Request 缺乏活動以及 Facebook 對 React Native 投資的普遍不確定性感到沮喪。正如我們在上面所示,我們可以自信地說,我們已準備好處理更多 Pull Request,並且我們熱切期待您的提案和貢獻!
  • 效能: React Native 0.59 隨附了全新且速度更快的 JavaScriptCore (JSC) 版本。另外,我們一直在努力使預設啟用 inline-requires 變得更容易,並且我們在接下來的幾個月中將為您帶來更令人興奮的更新。
  • 文件: 我們最近開始努力 徹底修改和重寫 React Native 的所有文件。如果您正在尋找貢獻方式,我們很樂意獲得您的幫助!
  • Xcode 中的警告: 我們 擺脫了所有現有的警告,並努力不引入新的警告。
  • Hot Reloading: React 團隊正在建置一個 全新的 hot reloading 系統,該系統很快將整合到 React Native 中。

遺憾的是,我們還無法立即改善所有方面

  • 偵錯: 我們修正了許多人們每天都會遇到的不便之處和問題,但遺憾的是,我們在這方面沒有取得我們希望的進展。我們認識到使用 React Native 進行偵錯並不理想,我們將優先在未來改進這一點。
  • Metro 符號連結: 遺憾的是,我們尚未能夠為此實作一個簡單明瞭的解決方案。但是,React Native 使用者 分享了各種可能對您有效的變通方法

鑑於過去六個月的重大變更,我們想再次問您同樣的問題。如果您正在使用最新版本的 React Native,並且您有想要提供意見回饋的事項,請在我們新版的 「您不喜歡 React Native 的哪些方面?」 上發表評論

持續整合

Facebook 首先將所有 Pull Request 和內部變更直接合併到 Facebook 的儲存庫中,然後將所有 commit 同步回 GitHub。Facebook 的基礎架構與常見的持續整合服務不同,並非所有開源測試都在 Facebook 內部執行。這表示同步到 GitHub 的 commit 經常會中斷開源測試,這需要花費大量時間才能修正。

React Native 團隊的 Héctor Ramos 在過去兩個月中投入時間改進 Facebook 和 GitHub 上的 React Native 持續整合系統。現在,大多數開源測試都在變更 commit 到 Facebook 的 React Native 之前執行,這將在同步 commit 時保持 GitHub 上的 CI 穩定。

下一步

請務必查看我們關於 React Native 未來的演講!在接下來的幾個月中,Facebook React Native 團隊的成員將在 Chain ReactReact Native EU 上發表演說。此外,請注意我們即將推出的下一個版本 0.60,它即將問世。這將令人興奮