React Native 0.85:站在新架構上的一次「打磨版」升級

React Native 0.85 發布時,官方並沒有給出那種「革命性」的宣傳語,因為這次更新本質上是在新架構已經落地的前提下,對動畫、除錯、測試等基礎設施做了一輪系統性打磨。
如果你現在正處在技術選型階段,或者正在考慮從舊版本升級,那麼這一版的訊號是:新架構已經可以視為預設前提,後續工作重心會放在體驗和生態品質上。
下面從三個維度展開:0.85 帶來的核心變化、目前 React Native 架構的關鍵點,以及它和 Flutter、Ionic、原生方案在效能與生態上的比較。
0.85 帶來了什麼?
統一的動畫後端:把關鍵路徑拉回「官方掌控」
0.85 最值得一提的是引入了一個共享的動畫後端(Shared Animation Backend)。過去很長一段時間裡,React Native 自帶的 Animated 和社群裡的 Reanimated 實際上是兩個世界:一個偏簡單場景,一個為了效能和表現力把很多邏輯自己接管了。
在 0.85 裡,動畫執行的底層邏輯被下沉到 RN Core,官方和 Software Mansion 一起把動畫調度和執行路徑收斂到一套通用後端。對架構來說,這有幾個現實意義:
動畫調度不再完全依賴「第三方魔法」,核心邏輯進入主幹倉庫,能跟隨 RN 版本做一致性測試和效能最佳化。
原生驅動的覆蓋範圍變大了,佈局相關的屬性可以用 native driver 驅動,這類場景以前經常是「能寫但不敢重度依賴」的部分。
對業務團隊來說,動畫層的選型壓力會下降一些:可以更放心地使用官方和頭部動畫庫的組合,而不用擔心將來誰先跟不上新架構。
如果你的 App 動畫量本來就不大,這件事可能不會立刻改變體驗;但對複雜互動、重動畫產品,這是一個「長期健康度」上的利好。
除錯鏈路整理:多客戶端、TLS、測試預設拆分
另外幾個變化表面上不那麼顯眼,卻會影響日常開發體驗:
支援多個基於 Chrome DevTools Protocol 的除錯客戶端並存。簡單講,就是可以同時掛上 React Native DevTools、IDE 外掛,甚至自動化除錯/AI 工具,而不需要搶同一個「唯一除錯連線」。
Metro dev server 支援 TLS 設定。對很多需要全程 HTTPS/WSS 的企業專案來說,以前本地除錯要嘛改設定,要嘛搞自簽名代理,現在可以在框架層面正面解決。
Jest 預設拆成獨立套件。這件事看起來只是目錄結構變化,但對多套件倉庫和跨平台專案很有價值:測試設定不再強耦合在 RN 主套件裡,升級節奏可以更靈活,也更容易統一到公司內部的腳手架裡。
這些改動的共同特點是:沒有突然解鎖什麼炫酷能力,但是能夠減少你在工具鏈上浪費的時間。
目前 React Native 架構的核心認知
如果把版本號擋住,現在討論 React Native,很難繞開「新架構」。簡單回顧一下它的關鍵點,更利於做框架層面的對比。
從 Bridge 到 JSI:溝通方式的換代
老一代 React Native 靠的是一個「橋」:JS 和原生之間透過序列化後的訊息佇列通信,天然非同步,還要為跨語言傳遞的資料做 JSON 等級的打包和拆包。
新架構用 JSI 把這一層直接換掉:JS 可以拿到 C++ 物件的引用,雙方可以以更接近「直接呼叫」的方式互動。
這帶來的直接結果:
不再被迫把所有呼叫設計成非同步任務,可以按場景選擇同步/非同步。
少了大量序列化/反序列化開銷,在 CPU 緊張或高頻呼叫場景下差別明顯。
可以更自然地把工作分攤到多個執行緒上,而不是把所有事務都擠在描述性很差的「bridge 佇列」裡。
對於選型來說,這意味著:以前那個「bridge 是效能瓶頸」的印象,需要更新成「取決於你怎麼用 JSI 和 TurboModules」。
TurboModules 和 Fabric:模組與渲染的重構
新架構另一側是 TurboModules(新的原生模組系統)和 Fabric(新的渲染器)。
TurboModules 強調懶載入和型別安全的跨語言呼叫,配合 Codegen,從 TypeScript/Flow 型別生成 C++ 綁定程式碼,減少膠水層維護成本。
Fabric 替換了舊的 UI 管理層,讓渲染流程更一致(包括 Yoga 佈局、diff、commit),並且更好地適配多平台。
對業務方的直接影響是:
自己寫原生模組的成本和心智負擔降低了,尤其是在多平台、多版本共存的大專案裡。
在列表、大量視圖更新的場景下,Fabric 能更穩定地給出可預期的效能表現,減少一些「偶發性」的卡頓和奇怪渲染 bug。
React Native 0.85 沒有在架構上再做翻天覆地的改動,而是預設你已經在這套新架構上,開始向「正常維護期」過渡——這是它在選型層面的關鍵訊號:框架本身的結構基本定型,後續重心會轉向體驗和生態品質,而不是再來一次全面翻修。
效能:React Native 0.85 處在什麼位置?
技術選型繞不開效能,所以接下來把 React Native 與其他路線放在一起看。
和 Flutter 的差異:渲染權與可控性
Flutter 自帶渲染引擎(Skia 等),從佈局到繪製全在自己控制下,效能特徵比較清晰:啟動、捲動、動畫一旦調通,結果較穩定,偏「一體機」。
React Native 還是使用平台原生元件來渲染 UI,中間多出一層 JS → Native 的呼叫,這層雖然在新架構下已經被壓縮得更薄,但從原理上講仍然存在。
因此在極端效能測試裡,Flutter 通常能給出更好的首屏時間、更平滑的長列表捲動。在複雜 UI 和動畫場景,如果對峰值效能有極致要求,Flutter 會更有把握。
不過對大多數業務 App,瓶頸往往出在資料組織、渲染策略、動畫設計,而不是引擎本身。React Native 新架構 + 新動畫後端,把「能用原生執行的部分」最大化留在原生執行緒,對電商、內容、社群這類主流場景來說,已經足夠撐住體驗。如果你的團隊對 React 更熟,效能差距本身不太會成為一票否決理由。
和 Ionic / WebView 路線:體驗與複用的取捨
像 Ionic 這種框架,本質是 Web 技術棧跑在 WebView 裡,最適合的場景是:已有大量 Web 資產,需要快速給業務補一個「能用」的 App 外殼。
React Native 的定位更像「用 JS/React 驅動原生控制元件」,互動體驗和系統一致性要好得多,例如捲動回饋、手勢、輸入法行為等。
如果專案只需要簡單的資訊展示、表單提交,對動態互動要求不高,Ionic 等方案的成本優勢會很明顯。
但一旦進入「重互動 + 注重體驗」的業務(比如內容社群、電商、工具類應用),React Native/Flutter 這樣的「框架 + 原生」路線會更合適,WebView 路線的邊界會很快暴露出來。
和純原生開發:上限 vs 生產效率
純原生(Swift/Kotlin)不用解釋,效能和系統整合上限最高,對於對延遲極度敏感的場景(遊戲、音影片處理、車載、人機介面等)仍然是唯一靠譜的選擇。
React Native 這代新架構更多是在縮小「普通業務場景」下與原生的差距,目標是讓絕大多數頁面和互動達到「使用者感覺不出差別」的水準。
從團隊和成本角度看:
一套 React Native 程式碼可以覆蓋 iOS/Android,多端一致性好得多。
有現成 React/Web 團隊的公司,培訓成本低,不需要額外養兩支原生隊伍。
真正需要極致效能的部分,可以透過 TurboModules/Fabric 下沉,用原生寫成模組再接回 RN。
這類混合模式,是現在不少中大型公司移動技術棧的現實形態:核心效能敏感模組原生寫,外圍業務 React Native 化,用以拉高迭代效率和統一業務開發模型。
生態:不僅是「套件多不多」的問題
做選型時,框架的生態品質往往比單點效能更影響「長期幸福度」。
React Native:React 生態背書 + 新架構遷移期
React Native 背後是 React 生態,這意味著:
大量跨端通用的狀態管理、資料流、工程實踐可以直接複用。
導航、手勢、動畫、媒體、地圖等關鍵環節有成熟的主流方案,而且大多已經在向新架構適配。
現實要考慮的點是:新架構的遷移並不是一夜完成的,老套件不更新、半適配的情況仍會遇到。對新專案來說,建議一開始就圍繞「已經明確支援 TurboModules 和 Fabric 的套件」做選型;對老專案,要評估一批核心依賴的維護狀態,再決定升級節奏。
Flutter:一體化程度高,路線清晰
Flutter 的生態更集中在自己的「統一世界」裡:外掛體系和官方元件比較完整,樣式和行為統一度高,桌面/Web 支援也走得比較積極。
它的問題更多是在「走到別的平台」時的體積和引擎負擔,以及團隊是否願意接受 Dart 和 Flutter 獨有的開發範式。
如果你希望未來把一套 UI 盡可能搬到桌面/Web 端,同時能接受包體和技術棧切換的代價,Flutter 是更穩的一條路。
WebView / Ionic:極致複用 vs 上限有限
Ionic 等方案最適合的對象是已經有成熟 Web 前端體系、對移動端體驗要求不高的團隊——快速交付、統一棧、低維護成本是它的主戰場。
問題也很直觀:渲染和互動完全受瀏覽器限制,遇到效能瓶頸時,很難在框架層做太多最佳化,只能在產品和互動設計層面做妥協。
原生:合規與高風險場景的保底選項
在需要強合規、高安全性的行業(金融、醫療、車載、政府專案),原生往往還是更容易走通的道路:平台官方文件齊全、工具鏈成熟、監管和審計更熟悉。
在這類場景下,即便業務層面用 React Native 這樣的跨端方案,也常常會要求關鍵流程落在原生層,或增加額外的安全審查。
最後 - 對架構/選型的現實建議
站在 0.85 這個時間點,如果你在做移動端技術選型,可以按下面幾個問題來篩:
團隊現狀:React 經驗豐富、Web 資產多,還是可以從空白開始接受 Dart?
業務特徵:主要是資訊和表單,還是有大量需要流暢互動的複雜介面?
對效能上限的要求:有沒有必須「無限接近原生」甚至超越的場景?
對多端統一的預期:只看 iOS/Android,還是希望長遠統一到桌面/Web?
結合這些維度,大致落點會是:
React 團隊 + 主流業務 App + iOS/Android 為主:React Native 新架構 + 0.85 之後的版本,是一個平衡點不錯的選擇。
需要高度一致的跨端 UI、長遠明確要上桌面/Web:Flutter 更合適。
業務簡單、Web 資產極多、體驗要求一般:Ionic/WebView 方案性價比高。
安全/合規/極致效能:原生是主路,跨端方案只能作為補充或外圍。
在 Google 上持續關注
把 HeyBinyang 加入 Google 首選來源
如果你希望之後在 Google 上更容易看到我的更新,可以把這個站點加入 preferred source,讓它在相關閱讀情境裡更容易被找到。
SHARE
分享
分享這篇文章。