Build1 publisher2 min readPublished
Shopify's return to native Swift and Kotlin ran through screen-by-screen agent checkpoints
Shopify is moving every mobile app off React Native to Swift and Kotlin, with its Shop app in stores 12 weeks after a one-week agent-built prototype. The shipped app came out of a gated, screen-by-screen review process that a team copying Shopify would have to build first.
The Engineer · Build desk
Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction

What happened
- Shopify went all-in on React Native in 2020 to stop building features twice, let developers cross stacks and reduce parity work.
- Adopting React Native's New Architecture would have forced Shopify to revisit native modules, rendering and shared/platform boundaries anyway.
- A direct LLM port of the React Native codebase produced what Shopify called a huge amount of unmaintainable code that could not be shipped.
- A core team of six built the native foundations and main user journeys, with feature teams joining midway through the project.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- cost A team that budgets from the one-week prototype will undercount the job, because shipping took a core team plus feature teams working inside purpose-built review tooling.
- constraint Tardis and the visual checkpoint compare against the live React Native app, so a team copying the method has to keep its old app running and instrumented until the last screen moves.
- cost Shopify now pays for two platforms again, a cost it says has not disappeared, so its 2020 goal of building each feature once is given up.
- decision Shopify reopened its stack choice when an upgrade was going to force native rework anyway, so a team with no comparable forced upgrade is weighing a different migration.
The one-week port answered a narrow question. Shopify first tested whether coding agents could build SwiftUI and Compose directly [16]. One engineer with agents then ported most of the React Native Shop app to SwiftUI in a week. Shopify called the result not production-ready, but proof that a feature-for-feature migration was achievable [4].
The app that shipped came out of a system called Helix. It migrates one screen at a time through ordered checkpoints [9]. Each checkpoint must prove behaviour with tests, match the running React Native app in visual review, survive two adversarial AI reviewers and get human approval before anything is committed [9]. A Pi extension (Pi is Shopify's coding agent) runs specialised subagents for each stage: inspect the React Native source, document behaviour, prepare platform plans, implement, and review parity [10]. Analytics get their own check. A tool called Tardis compares event names, counts and payload fields across the two apps, and tolerates timestamps and UUIDs that differ [12].
Shopify gave its reason for the gates. "Generated code could satisfy feature requirements while still introducing duplication, architectural drift, or performance problems," the company wrote [8].
"Plan acceptance was tied to a hash of its contents: changing a plan invalidated its previous approval," according to Shopify's post [11]. An agent that edits its plan after sign-off loses the sign-off. Most design-review processes I have sat through would benefit from the same rule.
All of these figures are Shopify's own, and the dev.to analysis that collected them says they were not independently verified [6]. Take them at face value and the shipped app still cost far more than the prototype. If the core team of six worked the full 12 weeks from prototype to store, that is 72 engineer-weeks, before counting the feature teams that joined midway [1]. That is 72 times the prototype's single engineer-week [2].
The schedule also depended on people Shopify had prepared. The author of Shopify's post, mustafa01ali, wrote in the Hacker News thread: "we invested in ramping up teams on native before going all in" [15]. A team without native engineers would have to pay that ramp-up cost before reaching Shopify's 12 weeks.
The dev.to write-up by kielltampubolon frames the reversal as an expired assumption: "One JavaScript codebase reaches native quality faster than two native codebases" [17]. That analysis lists three costs that got cheaper: cross-platform translation, ramp-up outside a team's main stack, and parity maintenance [18]. It concludes: "Native did not get easy. Specific line items got cheaper." [18] Shopify did not blame the old stack's speed. "React Native apps can be fast. Ours are," Shopify wrote [14].
What to watch
- Whether Shopify publishes headcount or cost figures for the full migration beyond the core team of six and the 12-week timeline.
- Whether Shopify releases Helix or its Pi extension, so other teams can run the checkpoint process against their own apps.
- Crash, performance and release-cadence data from Shopify's native apps as the remaining mobile apps leave React Native.