We decided to go all-in on React Native back in 2020, and that bet has been extremely successful. We saved a ton of time building features just once, enabled developers with no mobile background to contribute to our apps, and freed ourselves from constantly chasing feature parity.2020 年,我们决定全面押注 React Native,而这一赌注极其成功。功能只需写一次,为我们节省了大量时间;没有移动端背景的开发者也能为我们的应用做出贡献;我们也不必再疲于追赶各平台的功能对齐。
In January 2025, I wrote that the future of React Native was bright and that Shopify planned to keep investing in it. That was true based on what we knew then. React Native was working well for us, and it remains an excellent framework. But since then, coding models have gotten dramatically better, and for our apps and our team, building the same feature in Swift and Kotlin no longer carries the cost it used to.2025 年 1 月,我曾写道 React Native 的未来一片光明,Shopify 计划持续投入。基于当时我们所掌握的情况,这话没错。React Native 当时用得很好,而且它至今仍是一个出色的框架。但自那以后,编程模型有了显著进步,对我们的应用和团队而言,用 Swift 和 Kotlin 实现同一个功能,已不再需要付出过去那样的代价。
We don’t hold on to a decision just because it was successful at the time. When a core assumption changes, we’re willing to go back and ask whether it’s still the right call. LLMs changed one of the core assumptions behind our 2020 decision, so we reevaluated our mobile stack from first principles.我们不会因为某个决策曾经成功就一直固守它。当某个核心假设发生变化时,我们愿意回头重新审视它是否仍是正确选择。大语言模型改变了我们 2020 年那项决策背后的一个核心假设,于是我们回归基本原理,重新评估了移动端技术栈。
What we found led us back to native.评估的结果让我们重新回到了原生开发。
Why switch back to native为什么重新转向原生
We decided to switch from native to React Native in 2020 for three reasons:2020 年,我们基于三个原因决定从原生转向 React Native:
- Stop building the same features twice不再把同一个功能开发两遍
- Allow developers to work across the stack让开发者能够跨技术栈工作
- Spend less time chasing feature parity and more time shipping value少花时间追赶功能对齐,多花时间交付价值
React Native consistently delivered these benefits. We found ourselves spending a significant amount of time and resources on optimizing performance, improving key foundational areas in React Native, and keeping up with framework updates and external dependencies, but these were acceptable tradeoffs. The benefits of using React Native far outweighed the investments we had to make in these areas.React Native 始终如一地兑现了这些好处。我们在性能优化、改进 React Native 的关键基础模块、跟进框架更新与外部依赖上投入了大量时间和资源,但这些代价是可以接受的。使用 React Native 带来的收益,远远超过了我们在这些方面必须付出的投入。
Shopify has been using LLMs to build software since 2021 (one year before ChatGPT!). Initially, we used them to implement features, investigate and fix bugs, and review code. As the models improved, so did the complexity of the work we trusted them to take on. By late 2025, they were no longer just helping us write code faster. They were capable of making us question whether building software twice still meant doing twice the work.Shopify 从 2021 年(比 ChatGPT 还早一年!)就开始用大语言模型开发软件。最初,我们用它们来实现功能、排查和修复缺陷、审查代码。随着模型不断进步,我们放心交给它们的工作也越来越复杂。到 2025 年底,它们已不只是帮我们更快地写代码,而是让我们开始质疑:把软件做两遍,是否还等于做双倍的工作。
We decided to reevaluate our mobile tech stack and started prototyping to see whether our technology choices still held up. We rebuilt several core parts of our biggest apps in Swift and Kotlin using LLMs and were surprised by how well it worked. Agents:我们决定重新评估移动端技术栈,并开始做原型验证,看看我们的技术选择是否依然站得住脚。我们借助大语言模型,用 Swift 和 Kotlin 重建了旗下最大几款应用的一些核心模块,效果好得令人意外。智能体能够:
- Could implement a feature on Android using the iOS version as a reference, and vice versa以 iOS 版本为参照在 Android 上实现同一功能,反之亦然
- Helped developers ramp up and contribute effectively outside their primary stack帮助开发者快速上手,并在自己主攻技术栈之外的领域高效贡献
- Dramatically reduced the cost of maintaining parity between platforms through shared specifications, tests, and review checkpoints通过共享规格、测试和评审检查点,大幅降低维持跨平台功能对齐的成本
Native still means building and maintaining software on two platforms, that cost has not disappeared. What changed is that agents can now do enough of the implementation, translation, testing, and review work that it’s no longer the deciding factor it was in 2020.原生开发仍然意味着要在两个平台上开发和维护软件,这份成本并没有消失。变化在于,智能体现在能承担足够多的实现、转换、测试和评审工作,使它不再像 2020 年那样成为决定性因素。
React Native apps can be fast. Ours are. We are making this change because agents have reduced the advantages of sharing implementation, while the advantages of building for each platform remain. Native keeps us closer to platform capabilities and first-party tooling, with fewer framework and dependency layers between our code and the platform.React Native 应用可以很快,我们的应用就很快。我们做出这一改变,是因为智能体削弱了共享实现带来的优势,而针对各平台分别开发的优势依然存在。原生开发让我们更贴近平台能力和第一方工具,代码与平台之间的框架层和依赖层也更少。
The future of our React Native open-source libraries我们 React Native 开源库的未来
Before we get into how we’re migrating, we want to make sure we do this transition cleanly. From the beginning, we wanted to contribute back to React Native to make it better. We’ve published open-source libraries that have become the top choice in their respective categories. We’re grateful for the incredible reception from the community and are committed to making sure this is a smooth transition with no surprises.在介绍迁移方式之前,我们想确保这次过渡平稳有序。从一开始,我们就希望回馈 React Native,让它变得更好。我们发布的开源库已成为各自类别中的首选。感谢社区的热烈反响,我们承诺让这次过渡顺利进行,不给大家带来意外。
React Native SkiaReact Native Skia
Shopify will continue sponsoring this through the end of 2026, and William Candillon will continue working on it beyond that. He will fork the repo in the coming months and start publishing the library under a new name. The original repo will be archived when this transition is complete. We’ll post updates along the way so that everyone has ample time to migrate. If your app relies on this library, please consider sponsoring it.Shopify 将继续资助到 2026 年底,此后 William Candillon 会继续推进这个项目。他将在接下来几个月内 fork 该仓库,并以新名称发布这个库。过渡完成后,原仓库将被归档。过程中我们会持续发布进展,让大家有充足时间迁移。如果你的应用依赖这个库,请考虑资助它。
FlashListFlashList
This library gets ~2M downloads/week and has become the default way to render high-performance lists in React Native. Given how important it is for the ecosystem, Shopify will continue to fix critical issues that break compatibility. We’re currently in discussions with several companies about taking on long-term stewardship of FlashList. If you’re interested, reach out to me here.这个库每周约有 200 万次下载,已成为 React Native 中渲染高性能列表的默认方案。鉴于它对生态的重要性,Shopify 将继续修复破坏兼容性的严重问题。我们目前正在与多家公司洽谈,由它们长期接手 FlashList 的维护。如果你有兴趣,可以在这里联系我。
RestyleRestyle
Restyle has a smaller user base than our other libraries, so we're archiving this repo. We'll keep it working through the end of 2026, then stop maintaining it. Anyone is welcome to fork it and take it forward, and we'll help with the handover if a team wants to pick it up.Restyle 的用户规模比其他几个库小,因此我们将把这个仓库归档。我们会让它维持可用到 2026 年底,之后停止维护。欢迎任何人 fork 并继续推进;如果有团队愿意接手,我们会协助交接。
How we’re migrating我们如何迁移
Shopify has several large apps (Shopify, Shop, Point of Sale, Inbox). Millions of merchants and buyers around the world rely on them every single day to earn their livelihood and buy products they want from the brands they love.Shopify 旗下有多款大型应用(Shopify、Shop、Point of Sale、Inbox)。全球数百万商家和买家每天都依靠它们谋生、从喜爱的品牌购买心仪商品。
We debated between gradually migrating to native (brownfield) versus rebuilding them from scratch (greenfield). In the past when we migrated to React Native, we picked the brownfield approach for some of our biggest apps, as it’d take years to rewrite them and we’d have to stop shipping new features while the rewrite was in progress.我们权衡过逐步迁移到原生(brownfield)还是彻底重写(greenfield)。过去迁移到 React Native 时,我们对一些最大的应用选择了逐步迁移,因为彻底重写要花好几年,而且重写期间不得不暂停发布新功能。
However, this time greenfield emerged as a clear winner for the following reasons:但这一次,彻底重写成为明显的赢家,原因如下:
- LLMs are good at building features in Swift and Kotlin using the React Native version as reference大语言模型擅长以 React Native 版本为参照,用 Swift 和 Kotlin 实现功能
- It gives us a clean slate to rebuild in the best way possible without any of the previous constraints它给了我们一张白纸,可以摆脱以往的各种限制,以最好的方式重建
- Our prototypes showed that we could rebuild these apps substantially faster than was possible before coding agents我们的原型表明,重建这些应用的速度可以远快于编程智能体出现之前
The Shop app, which is regularly at the top of the list in the shopping category in the app stores, is the first to be migrated. Assisted by AI, the team was able to go from a proof of concept to a fully rebuilt native app published in the app stores in just 12 weeks. We’ve written about this migration in depth here.Shop 应用常年在各大应用商店购物类榜单中名列前茅,是第一个完成迁移的。在 AI 的辅助下,团队仅用 12 周就从概念验证走到了完整重建的原生应用上架。我们在这里详细写过这次迁移。
The migration of the Shopify app (our biggest with 300+ screens, home & lockscreen widgets, Apple Watch app, complications, Siri Shortcuts, etc.), is also underway and will ship later this year. The rest of our apps will be migrated soon.Shopify 应用(我们最大的应用,有 300 多个页面、主屏与锁屏小组件、Apple Watch 应用、表盘复杂功能、Siri 快捷指令等)的迁移也在进行中,将于今年晚些时候发布。其余应用很快也会跟进。
Preventing slop防止产出垃圾代码
It’s tempting to just point an LLM to the React Native codebase and try to one-shot the same features in native, but it doesn’t work. Even if you ask it to gather as much information as it can up front, freeze that into specs, task files, and then implement it, you end up with a huge amount of unmaintainable code that can’t be shipped.直接把 React Native 代码库丢给大语言模型、想着一口气把同样的功能用原生实现出来,这种做法很诱人,但行不通。即便你让它先尽可能收集信息,把这些信息固化成规格和任务文件,再动手实现,最终也会得到大量无法维护、无法交付的代码。
To solve this problem, we built a system called Helix that takes a more gradual approach. It doesn't expect the first output to be correct, and builds a loop where an imperfect attempt simply cannot move forward until it becomes a good result.为了解决这个问题,我们构建了一套名为 Helix 的系统,采用更为循序渐进的方式。它不指望第一次输出就正确,而是构建了一个循环:不完美的尝试根本无法推进,直到它变成好结果。
The developer points Helix at a screen. Helix reads the React Native code and proposes a sequence of checkpoints (small, ordered slices of the work) that can be reviewed in minutes. Then, checkpoint by checkpoint, it builds: each one must prove its behavior with tests, match the running app in a visual review, survive two adversarial code reviewers, and get a human's nod before it's committed and the next one starts. Feedback from every review is remembered, so the loop gets more autonomous as the migration progresses.开发者把 Helix 指向某个页面。Helix 阅读 React Native 代码,提出一系列检查点(把工作切成小而有序的片段),每个检查点都能在几分钟内评审完。随后它逐个检查点地构建:每个检查点都必须用测试证明其行为、在视觉评审中与运行中的应用一致、经受住两位对抗式代码评审员的审视,并获得人工点头,才能提交并开始下一个。每次评审的反馈都会被记住,因此随着迁移推进,这个循环会变得越来越自主。
Helix rebuilding a screen in the Shopify mobile app using Swift and KotlinHelix 用 Swift 和 Kotlin 重建 Shopify 移动应用中的一个页面
This approach has been working extremely well and is allowing us to rebuild our apps in a fraction of the time.这种做法效果极佳,让我们能用一小部分时间重建应用。
Enabling fast feedback loops建立快速反馈循环
Agentic control of simulators has been a bottleneck. We found ourselves constantly babysitting them as they couldn’t reliably build, test, and iterate. We built tooling to allow agents to reproduce bugs, fix them, and verify the fix autonomously but it was slow and brittle. React Native’s hot module reload helps the situation but it doesn’t solve it, due to simulator control being slow. This is primarily due to reliance on the accessibility tree, or screenshots to get the state of the app, take actions, and verify results. Agents can make code changes in seconds, but it takes them several minutes to test the output. This makes iterating extremely slow and manual. It doesn’t matter how good the model is if it can’t test its work quickly, which is especially difficult on mobile.让智能体操控模拟器一直是个瓶颈。我们不得不时刻盯着它们,因为它们无法可靠地构建、测试和迭代。我们构建了工具,让智能体能自行复现缺陷、修复并验证修复结果,但速度慢且脆弱。React Native 的热模块重载有所缓解,但并未解决问题,因为操控模拟器本身就很慢。这主要是因为要依赖无障碍树或截图来获取应用状态、执行操作和验证结果。智能体几秒钟就能改完代码,却要花好几分钟测试输出。这让迭代极其缓慢且依赖人工。模型再强也没用,只要它无法快速测试自己的工作——而这在移动端尤其困难。
We’re fixing this by designing our app architecture to work for both humans and agents. The core principle here is that business logic should be completely decoupled from the UI and be able to run headlessly on desktop. We then make it available to agents via a CLI that allows them to iterate on it in milliseconds instead of minutes without involving simulators.我们正在通过设计既服务于人、也服务于智能体的应用架构来解决这个问题。核心原则是:业务逻辑应完全与 UI 解耦,并能在桌面端无界面运行。然后我们通过 CLI 把它提供给智能体,让它们无需依赖模拟器,就能以毫秒而非分钟级的速
Navigating the app and performing actions using the CLI使用 CLI 浏览应用并执行操作
The CLI allows agents to inspect the state of the app, navigate between different sections, and perform actions all without needing to touch the UI. This enables extremely fast feedback loops and allows agents to work autonomously for hours at a time.CLI 让智能体无需接触 UI,即可检查应用状态、在不同板块之间导航并执行操作。这带来了极快的反馈循环,也让智能体能够连续数小时自主工作。
When simulator interaction is needed, the CLI can connect to them via a remote mode and drive the UI via commands without having to inspect the layout or the accessibility tree. This enables blazing-fast performance and E2E tests.当需要与模拟器交互时,CLI 可以通过远程模式连接到模拟器,并通过命令驱动 UI,而无需检查布局或无障碍树。这带来了极快的性能和端到端测试。
This is real-time (not sped up)这是实时画面(未加速)
What’s next下一步
We are going to migrate all our mobile apps to Swift and Kotlin using AI throughout the process. Shop has already shipped as a fully native app, the Shopify app is underway, and the rest will follow soon. We’re moving quickly, but not by lowering the bar. Every rebuild must meet or exceed the performance, stability, accessibility, and product quality people expect today. This isn’t just the same apps rewritten in different languages. We’re rebuilding them so both humans and agents can understand, test, and change them quickly.我们将把旗下所有移动应用迁移到 Swift 和 Kotlin,并在整个过程中借助 AI。Shop 已经作为完全原生应用发布,Shopify 应用正在推进中,其余应用也将很快跟进。我们行动很快,但不会降低标准。每一次重写都必须达到或超越人们如今对性能、稳定性、无障碍和产品质量的期待。这并不只是把同样的应用换种语言重写一遍。我们重建这些应用,是为了让人和智能体都能快速理解、测试和修改它们。
The migration isn’t the finish line. Success means our teams can deliver better experiences for merchants and buyers faster than before. We’ll measure that through product velocity, app quality, and how much work agents can complete autonomously.迁移不是终点。成功意味着我们的团队能比以前更快地为商家和买家带来更好的体验。我们将通过产品迭代速度、应用质量,以及智能体能够自主完成多少工作来衡量这一点。
We’ll share what we learn along the way, including deeper dives into Helix, our agent-addressable architecture, and how we’re building mobile apps with agents. We were open about what we learned from React Native, and we intend to be just as open about this transition.我们会一路分享所学,包括更深入地介绍 Helix——我们可供智能体寻址的架构——以及我们如何借助智能体构建移动应用。我们曾坦诚分享从 React Native 中学到的东西,这次转型我们也会同样坦诚。
This is one of the most ambitious mobile engineering projects we’ve taken on. If you want to help build the next generation of Shopify’s mobile apps, we’re hiring mobile engineers, infrastructure engineers, and developers working at the intersection of AI and software engineering.这是我们承担过的最具雄心的移动工程计划之一。如果你想帮助打造下一代 Shopify 移动应用,我们正在招聘移动工程师、基础设施工程师,以及工作在 AI 与软件工程交叉领域的开发者。
Acknowledgements致谢
Native is the right choice for Shopify now, but React Native was the right choice for Shopify in 2020. That success was only possible because of the people who made it work.原生开发是 Shopify 当下的正确选择,但 React Native 是 Shopify 在 2020 年的正确选择。那次成功之所以成为可能,全靠那些让它运转起来的人。
MetaMeta
Thank you to the React Native team at Meta for being excellent stewards of the framework, listening to our feedback, and working closely with us over the years. React Native is substantially better today because of your investments in its architecture, performance, tooling, and community.感谢 Meta 的 React Native 团队出色地守护这个框架、倾听我们的反馈,并在这些年里与我们紧密合作。由于你们在架构、性能、工具和社区方面的投入,React Native 如今已经好得多。
William CandillonWilliam Candillon
Thank you for creating React Native Skia and taking it much further than any of us imagined. You redefined what was possible for graphics and animation in React Native, and we’re excited to see where you take it next.感谢你创建了 React Native Skia,并将它推进到远超我们所有人想象的程度。你重新定义了 React Native 中图形与动画的可能性,我们也很期待看到你接下来把它带向何方。
Software MansionSoftware Mansion
Thank you for all your work on Reanimated, for listening to our feedback, and for helping us solve some of the hardest animation and performance problems in our apps.感谢你们在 Reanimated 上的所有工作,感谢你们倾听我们的反馈,并帮助我们解决应用中一些最棘手的动画和性能问题。
Shopify engineersShopify 工程师
Hundreds of engineers contributed to adopting React Native, migrating our apps, building shared foundations, improving performance, maintaining integrations, and contributing back to the ecosystem. Many of you became beginners again, challenged long-held assumptions, and made the transition successful while continuing to ship for merchants and buyers. Thank you.数百名工程师为采用 React Native、迁移应用、构建共享基础、提升性能、维护集成以及回馈生态系统做出了贡献。你们中的许多人重新成为初学者,挑战长期以来的假设,在继续为商家和买家交付产品的同时,让这次转型取得成功。谢谢你们。
The React Native communityReact Native 社区
Thank you to everyone who used our open-source libraries, contributed code, reported issues, challenged our decisions, and shared what you learned. Your contributions and feedback, including the spicy kind, made our work better.感谢每一位使用我们开源库、贡献代码、报告问题、质疑我们的决定并分享所学的人。你们的贡献和反馈,包括那些辛辣尖锐的意见,让我们的工作变得更好。
The tools, lessons, and relationships built over the past six years will continue to shape how we build mobile apps at Shopify. We’re deeply grateful to everyone who was part of it.过去六年中建立的工具、经验和关系,将继续塑造我们在 Shopify 构建移动应用的方式。我们深深感谢每一位参与其中的人。




