内容提要
Shopify于2020年采用React Native以共享iOS/Android代码并节省成本。到2025年,AI编码代理大幅降低Swift与Kotlin原生开发成本,促使Shopify转向原生开发。团队借助内部工具Helix将迁移拆分为小步,结合行为测试、视觉审查与对抗性代码审查,并让代理通过CLI无界面验证逻辑。Shop应用12周完成原生迁移,iOS启动时间从3200ms降至约2400ms,Android从4400ms降至2200ms,崩溃率下降,Android包体从293MB减至184MB。
延伸解读
成本天平为何在2025年倾斜
Shopify 2020年选择 React Native,核心是省去同一功能在 Swift 和 Kotlin 各写一遍的重复劳动,并让开发者跨平台复用。但框架本身需要持续维护:性能优化、框架升级、外部依赖变动都带来额外成本。到2025年,AI 编码代理能力提升,能参考一个平台的实现生成另一个平台的等价代码,原生开发的双份实现成本被大幅压低,原本支撑 React Native 的经济账因此被重算。
为什么选绿地迁移而非渐进替换
迁移有两条路:棕地式逐步替换风险低但周期长,还要处理新旧实现共存;绿地式重写自由度高,但需先建出近乎完整的替代品。Shopify 此前对大型应用用过棕地方式,按当时开发方法耗时过长。借助新原型,团队判断直接原生重写更快,且现有 React Native 应用可作为行为参照。因此先迁移面向消费者的 Shop 应用,再处理拥有300多个屏幕、含小组件和 Apple Watch 应用的商家版 Shopify。
Helix 如何把大迁移拆成可审查的小步
Shopify 发现让模型一次性重建大功能,产出质量平庸且难以维护、难以审查。内部工具 Helix 的做法是让开发者选定一个屏幕,由它按合理顺序提出小块迁移,每块都经过行为测试、与旧版对比的视觉审查、两名审查者寻找隐藏问题的对抗性代码审查,以及另一名开发者复核结果。只有通过后才成为下一块的基础。这样反馈发生在改动还小的时候,避免问题累积到难以定位。
无界面验证是代理反馈闭环的关键
Shopify 的架构原则是把业务逻辑与 UI 分离,使逻辑可以无头运行,并通过 CLI 暴露应用状态和操作。代理因此能直接检查状态、导航和触发动作,不必解析截图或定位按钮,行为检查得以快速完成。这解释了为何迁移能在12周内完成 Shop 应用:代理生成代码后,有快速、可自动化的反馈判断其是否合格。文章强调,这种快速反馈闭环是让大规模 AI 辅助迁移对用户安全的关键。
Q&A
Shopify 2020年为什么选择 React Native?
Shopify 在2020年选择 React Native 主要是为了解决三个问题:避免为 iOS 和 Android 分别实现同一功能;让开发者可以跨平台共享,提高资源利用率;以及更容易保持两个平台的功能对等。此外,React Native 允许使用 React 和 TypeScript 的开发者快速上手,扩大了人才池。
2025年是什么变化促使 Shopify 放弃 React Native?
到2025年,AI 编码代理(coding agents)的能力大幅提升,使得用 Swift 和 Kotlin 分别开发原生应用的成本显著降低。Shopify 通过原型验证发现,代理可以基于一个平台的实现生成另一个平台的等效代码,因此重复开发的顾虑不再像2020年那样重要。
Shopify 迁移时采用了哪种迁移策略?为什么?
Shopify 选择了绿地(greenfield)迁移,即从头构建全新的原生实现,而不是在现有应用上逐步替换。因为原型显示全新原生实现速度更快,且现有的 React Native 应用可以作为可靠参考。他们先迁移了面向消费者的 Shop 应用,之后才迁移面向商家的 Shopify 应用。
Helix 在迁移中起什么作用?
Helix 是 Shopify 内部构建的工具,用于将迁移拆分成可审查的小步骤。开发者选择屏幕后,Helix 会按最佳顺序提出小的迁移片段,每个片段必须通过行为测试、视觉审查、对抗性代码审查和开发者审查后才能成为下一步的基础。这样可以在变更还小时获得持续反馈。
Shopify 如何让 AI 代理验证业务逻辑?
Shopify 将业务逻辑与 UI 分离,使逻辑可以无头运行。他们通过 CLI 暴露应用状态和操作,代理可以检查状态、导航和執行操作,而无需解析截图或定位按钮。这使得行为检查非常快速。
Shop 应用迁移到原生后取得了哪些性能提升?
Shop 应用在12周内完成原生迁移。iOS 启动时间从3200毫秒降至约2400毫秒,Android 从4400毫秒降至2200毫秒。崩溃率下降(无崩溃会话增加),Android 应用包体从293MB减小到184MB。