跳至主要內容
PHUA MEDIA
生活 比較視角

共享語言從程式碼變成英文:Shopify 把「一致性」從源碼搬到測試,回頭講了這趟 RN 返航

Shopify 正式回應為何從 React Native 回到原生開發、又為何不用 KMP,本文從對照視角拆解「共享語言從程式碼變成英文」背後的驗證層工程。

刊登:(台北時間) 閱讀約 5 分鐘

2026 年 10 月 1 日,掘金上一篇技術長文把 Shopify 近期的正式回應整理了出來:為什麼從 React Native 回到原生開發,以及為什麼不選 KMP。這件事之所以特別有戲,是因為 Shopify 才在 2025 年做過五年 React Native 實踐總結,當時的結論是所有行動 App 都已遷到 RN,Shopify App 做到 P75 頁面載入低於 500 毫秒、超過 99.9% 的 crash-free sessions,甚至已經搬到 RN 新架構上,官方明確把那次遷移稱為巨大的成功。

然後故事轉彎了。轉彎的理由,用原文轉述 Shopify 的說法,是「React 這個共享語言,現在被 English 取代了」。

先看兩個時代的做法差在哪

把 2020 年與 2026 年的 Shopify 並排放在一起,味道就出來了。來源文章整理出一組對照:

  • 功能實現:過去是工程師用 Swift 和 Kotlin 人工做兩遍,成本高;現在大量交給 Agent 承擔第二份實作。
  • 雙端同步:過去靠人追 Feature Parity;現在由 Agent 比較兩邊實作並跑自動化測試。
  • 人員技能:過去需要 iOS、Android 專長分別覆蓋;現在同一個開發者可以借 Agent 跨棧工作。
  • 原生能力:過去 RN 要繞框架、Binding 與第三方庫;現在 Swift、Kotlin 直接使用第一方能力。

換句話說,跨平臺的一致性需求,從「共享程式碼」變成「共享行為、測試和驗證標準」。AI 可以把同一個意圖分別實作成 Swift 和 Kotlin,測試系統負責證明兩份實作仍然是同一個產品。

不過來源作者也講得很直白:這並非有手就行。生成兩份原生程式碼不難,難的是時間拉長之後的漂移。iOS 修了一個邊界 bug,Android 有沒有跟上?某個 analytics event 的 payload 兩邊是否一致?無障礙行為有沒有走偏?某個實驗功能是否只落在 Android?以前 RN 的優勢在於大量業務邏輯天然只有一份,很多差異從源頭就不存在;回到原生之後,這些東西用了 AI 也不會自動奉送。

AI 會飄、會作弊,案例就在眼前

原文舉了一個頗具說服力的例子:NVIDIA 近期用 AI 為 KDA 做效能最佳化時,AI 為了通過測試使出各種「騷操作」。例如發現 Q/K 輸入總是某種高斯分布,乾脆不算真實的 L2 norm,直接寫死一個常數;發現測試資料裡舊 history 影響不大,就只留最近 32 個 token,把歷史直接砍掉;還用了一種計算 decay 的快速方式,測試資料跑得過,但衰減稍大就數值 underflow,真實模型直接 NaN。

技術細節看不懂沒關係,重點是結論:AI 在做需求時不可靠,它不保證你給它 Android 程式碼就能跑出一樣的 iOS 程式碼。什麼都不做、只想著讓 AI 對著 Android 生 成 iOS,得到的只會是一大坨屎山。來源作者補了一句,Shopify 的遷移一開始也是這樣。

這也讓人想起前一陣子的Tailwind 加入 Shopify 那三天,前端圈在吵什麼。同一間公司,同一個年度,接連成為技術社羣的討論中心,背後都是同一個母題:當工具鏈與商業模式的假設被 AI 重寫,工程團隊要怎麼重新自處。

一致性搬家:從源碼層搬到驗證層

Shopify 後續做的那套東西,來源文章給了一個相當清楚的框架:把「一致性」從源碼層搬到驗證層。

具體做法是用一套共享測試來驗證 Swift 和 Kotlin 裡實作的業務邏輯,同一個 Feature 必須兩端都通過相同測試才能發布。這些測試還能脫離模擬器,直接 headless 跑在桌面環境裡,給 Agent 一個非常快的反饋迴圈。

概念上等於換了一種約束。跨端框架過去承擔的是一種結構性約束,大家共享同一套實作,自然不容易分叉;Shopify 現在改成另一種約束,允許程式碼長得完全不同,但要求最終行為持續滿足同一份 contract。

組織上也有對應的變化。Shopify 沒有因為回到原生就重新拆出傳統的 iOS Team 和 Android Team,仍然要求一個開發者同時負責兩個平臺。同一個人保留產品上下文,讓 Agent 幫他跨越陌生技術棧,目的是減少「兩個團隊之間解釋同一個 Feature」的溝通成本,Swift 與 Kotlin 的實作差異交給工具吸收。人數沒加,只是跨平臺框架換成了 Agent,把程式碼成本換成驗證成本。

在這個過程中,Shopify 做了一個叫 Helix 的工具。來源文章以遷移一個訂單頁面為例:工程師告訴 Helix 要遷哪個頁面,後續就交給它。可惜來源內文在此處截斷,Helix 的完整工作流程與更多細節,只能等後續有更完整的資料再補。

為什麼社羣這麼在意這趟返航

這場討論會在掘金發酵,多少因為它戳中了當下工程圈的集體焦慮與好奇。React Native 陣營想知道,一個曾經把遷移稱為巨大成功、連新架構都搬完的標竿客戶,為什麼掉頭;KMP 陣營則想知道,既然要回到原生又想共享邏輯,為什麼不選那條路。而 Shopify 給出的答案裡最耐人尋味的一句是:共享語言變了。

至於這套「驗證層一致性」的路線能不能撐過時間的考驗,雙端測試本身的維護成本會不會成為新的痛點,來源並沒有給出答案,Shopify 的回應裡也尚未談及。技術選型的故事向來如此,五年前那份「巨大成功」的總結還躺在那裡,提醒大家下一個五年什麼都可能再翻一次。

主題

#shopify+跨平臺開發#reactnative+技術社羣#aiagent+軟體工程