30 Engineers, 12 Weeks: Shopify Rebuilt Its Merchant App With Agents Writing Most of the Code, While the Team Focused on Verification
In a post from @ShopifyEng, the team shares how it rebuilt the Shopify merchant-facing app from React Native into native iOS (Swift) and Android (Kotlin) apps, covering more than 300 screens. Agents wrote most of the code, but this wasn't a case of having the model write everything in one pass. The real effort went into redesigning the architecture, tooling, and workflow around one question: how to check whether the code is correct quickly and reliably.
https://shopify.engineering/shopify-app-rebuild
Why rebuild, and what to prepare before starting
Earlier in the series, Shopify said the move back to native development wasn't because React Native was too slow. Coding agents lowered the cost of building the same feature twice, once for iOS and once for Android, so platform-native capabilities and first-party tooling became more valuable again.
Before starting, a small group of engineers prepared the environment for the agents: an internal architecture called Reflex that keeps the two platforms structurally consistent; a command-line tool that runs business logic without needing a phone or simulator; and repository rules that raise errors when code deviates from the conventions. Previously, each change an agent made required compiling, launching a simulator, and checking screenshots, which took several minutes per round. Now most screens can be checked deterministically in the terminal, with feedback almost immediately. To keep the two platforms consistent, the team accepted that some code is less idiomatic for each platform.
They also tried writing detailed specifications first and handing them to the agents, but the specs became outdated quickly. The final approach was to treat the running old version of the app as the reference. Helix, an internal tool, reads the old implementation, breaks the migration into small steps that are easy to review, and then checks the new screens against the original app.
How humans stayed in control, and the results
About 30 people worked in pairs, each responsible for a different product area, and each person directed several agents at once. The agents kept working in the evenings and on weekends. Every PR still had to be reviewed by a human, but engineers didn't have to read through large changes to an entire screen line by line. Agents first checked each other against the architecture rules, and the work was split into small steps that changed both platforms at the same time. Humans then judged intent, behavior, and whether to merge. At the end of each day, the agents wrote review feedback back into the team's skill instructions and architecture docs. Crash monitoring ran every 15 minutes, and an internal agent in Slack could reproduce issues and submit fix PRs directly.
According to figures Shopify published, users keep their login state and preferences when upgrading. On Android, median cold start time dropped from 1.71 seconds to 0.87 seconds, the app package shrank from 80.4 MB to 47.6 MB, and median memory use fell from 470 MB to 200 MB. On iOS, median peak memory dropped from 730 MB to 190 MB. The share of Android sessions without crashes rose from 99.66% to 99.98%.
