Simon Willison 5 月 14 日在个人博客记录了一个移动开发案例:一家中型科技公司刚完成一次由 coding agents 驱动的重写,把两款老牌 iPhone 和 Android 原生应用迁移到 React Native。公司名称、应用规模、耗时和成本没有披露,能确认的是,这不是一次新项目选型,而是对已有双端原生应用的技术栈替换。

这条短笔记的分量不在“React Native 又赢下一城”。更准确的判断是,AI 编程代理正在改变技术迁移的成本结构。过去选语言、框架、跨端方案,常常意味着多年锁定;现在至少在部分代码库里,迁移和回滚的心理门槛正在下降。

从双端原生到 React Native,理由不是省事这么简单

Willison 问了一个反直觉的问题:既然 coding agents 也会降低维护 iOS 和 Android 两套原生应用的成本,为什么还要迁到 React Native?对方的回答很具体:React Native 过去几年改进明显,已经覆盖这两款应用需要做的事情;如果未来证明这个选择错了,也可以再迁回原生。

这句话比“跨端提升效率”更有信息量。React Native 的吸引力长期来自共享业务逻辑、统一团队技能和减少双端重复实现,但它也一直面对性能、平台 API 适配、原生体验一致性等质疑。现在新的变量是 coding agents:它们不只帮助写新代码,也能帮助搬代码、补测试、对齐接口和处理重复劳动。

路线过去的主要权衡coding agents 带来的变化仍未消失的问题
双端原生体验和平台能力强,团队成本高重复实现、样板代码维护成本下降两套架构仍要长期协调
React Native共享代码更容易,平台边界更复杂迁移、补齐和回滚成本下降性能、原生模块、调试链路仍需工程判断
再迁回原生通常代价很高,决策压力大可逆性增强,试错空间变大不是一键转换,质量验证仍昂贵

技术栈锁定变弱,但不是技术债消失

Willison 把这个案例与 Mitchell Hashimoto 关于 Bun 从 Zig 迁往 Rust 的判断放在一起看。Hashimoto 的说法是:“编程语言过去是锁定,如今越来越不是。”这句话不能理解成所有技术债都被 AI 抹平了,它说的是锁定效应的强度在下降。

历史上,移动团队做跨端选择往往接近“单程票”。从 Objective-C、Swift、Kotlin、Java 到 React Native、Flutter,每一次切换都会牵动招聘、构建系统、测试体系、发布流程和线上排障。Google 2018 年发布 Flutter 后,跨端开发的选择更多,但行业并没有因此放弃原生开发,原因就在于平台差异不是语法转换能解决的。

coding agents 改变的是中间层:把大量机械迁移、接口适配、重复测试和小修小补从人力密集型工作,压低为可被工具分担的工作。对移动端技术负责人来说,这会影响预算申请和路线评审:选型不再只问“未来五年能不能押中”,还要问“押错以后能不能体面撤回”。

最该盯的是验证成本,而不是迁移速度

这个案例目前看不清的变量很多:应用是否重度依赖相机、地图、蓝牙、支付、离线存储等原生能力;自动化测试覆盖到什么程度;迁移后崩溃率、启动速度、包体积和用户体验是否有变化。原文没有这些数据,不能把它扩写成 React Native 全面取代原生开发的证据。

真正受影响的是工程管理者的决策方式。过去,团队为了避免押错技术栈,会拖延迁移,或者长期忍受两套老代码。现在更现实的动作可能是:先用 agents 做原型迁移,验证核心路径,再决定是否扩大范围。采购 AI 编程工具、建设测试基线、梳理模块边界,会比单纯争论框架优劣更重要。

接下来应观察三件事:迁移后线上质量是否稳定;团队是否减少了双端重复开发而没有牺牲平台体验;一旦发现 React Native 不合适,所谓“迁回原生”是否真的可执行。可逆性变强,是好消息;把可逆误读成无成本,是新的风险。