In January 2025, Shopify's Mustafa Ali wrote on the company's engineering blog that React Native had a bright future and that Shopify would keep investing in it. One year and eight months later, on September 10, 2026, he posted on the same blog that Shopify would move all of its mobile apps from React Native to Swift and Kotlin.

Shopify is the platform company that merchants use to open and run online stores. React Native is a development framework from Meta that lets you write app code once and run it on both iOS and Android. Swift is the language for building iOS apps, and Kotlin is the language for Android. Going forward, Shopify will write every feature twice, once for iOS and once for Android.

Shopify gave a single reason. Coding models have gotten dramatically better, and building the same feature twice, in Swift and again in Kotlin, no longer costs what it used to. As Shopify put it, "LLMs changed one of the core assumptions behind our 2020 decision."

In 2020, Shopify chose one codebase for its iOS and Android apps

Shopify went all in on React Native in 2020 for three reasons: to stop building the same feature twice, to let developers with no mobile experience work on the apps, and to spend less time keeping the features of the two apps in sync.

Shopify says it got all three. Building each feature once saved a lot of time, developers with no mobile background contributed to the apps, and less time went into keeping the two apps matched. Tuning performance and keeping up with framework updates took real effort, but Shopify said the gains outweighed the cost. Shopify is not walking back a decision that failed. It is walking back one that worked.

Performance isn't the reason either. Shopify was blunt about it: "React Native apps can be fast. Ours are." The reason for going native, it said, is that agents have shrunk the advantage of sharing one codebase across two platforms, while the advantages of building for each platform are still there. Building separately puts Apple's and Google's platform features and first-party tools within more direct reach, and it removes some of the framework and dependency layers that sit between the code and the platform.

One engineer spent a week with coding agents porting the Shop app to iOS

The first app to go native was Shop, Shopify's consumer app where shoppers track orders and pay, and a regular near the top of the shopping category in the app stores. Shop was about to begin a major migration to React Native's New Architecture. Before spending money on that, Shopify tested whether it could use coding agents to rebuild the app directly in native iOS and Android code instead.

One engineer worked with agents for a week, using the existing React Native app as a reference and porting as many features as possible into an iOS app. It wasn't ready to ship after a week, but it showed that a feature-for-feature port to iOS was possible. The agents did best when there was an existing implementation to work from. They ported existing features into new code, scaffolded screens, wired up data, added animations, and refined layouts by checking the screen.

The real migration was led by a core group of six engineers. They built the app's foundations and main user journeys, and feature teams joined partway through to validate their own areas and fill in the edge cases that had been missed. For existing users, the switch had to feel like an ordinary update. Nobody could get signed out, and push notifications had to keep arriving. Other systems, such as recommendations, depend on the events the app sends, so analytics events also had to go out exactly as before. Along the way, the team deliberately retired some screens and simplified others. Shopify says it took 12 weeks to go from proof of concept to release in the app stores.

The second reason for choosing one codebase in 2020 was to let developers without mobile experience work on the apps. This time, developers could work on both platforms without a shared codebase. React Native developers picked up SwiftUI and Jetpack Compose, the UI toolkits for iOS and Android, more easily than expected. Both describe screens in a declarative style much like React, and agents helped developers get productive quickly on platforms outside their main stack. Native experts were still essential. Shopify wrote that generated code could meet the feature requirements while still introducing duplication, architectural drift, or performance problems.

Ask an agent to port the whole app in one shot, and you get a pile of code you can't ship

Shopify was wary of the approach that looks easiest: hand an agent the entire React Native codebase and have it rewrite everything natively in one pass. Even when the agent first gathers as much information as it can and turns it into specs and task files before implementing, Shopify says the result is a huge amount of unmaintainable code that can't be shipped.

So to move its biggest app, the Shopify app, to native, the company built an internal tool called Helix. Helix doesn't expect its first output to be right. An engineer picks a screen, Helix breaks that screen into a sequence of small steps and proposes an order, and the engineer reviews and approves the sequence in a few minutes. The first step is usually the screen's basic skeleton, and the scope widens from there. Each step is described in just a few words, and that is deliberate. As the Helix post puts it, "Nobody can effectively review a wall of generated text."

Each step has to clear four gates, in order, before it is committed and the next step can begin.

  1. Behavior tests
    Tests are generated for each step by reading the old React Native code, and the step has to pass every one that applies.
  2. Screen comparison
    The new and old apps are captured in the same state, and Gemini is asked to act as a perfectionist design reviewer, listing every difference along with its location on screen and its severity. By default, any difference that can be fixed in code keeps the step from moving on.
  3. Two reviews that hunt for flaws
    Two reviewer agents that share no context check the code against the app architecture standards Shopify has written down. Every finding has to be fixed, and the loop repeats until both approve.
  4. Engineer approval
    An engineer looks at the code and the running app and makes the call. That feedback is recorded and carried into later steps, and as approved work piles up, steps can move ahead with less human involvement.

The gates are pass conditions, not advice. When a step fails, the agent reads the feedback, fixes the work, and gets tested again. It can retry as many times as it needs, but it can't decide on its own that the result is good enough and move on. The Helix post sums up the approach this way: "An attempt is allowed to be wrong. It is not allowed to ship until it isn't."

Plenty of critics say two codebases just means twice the complexity

The announcement drew more than 1,200 points and over 900 comments on Hacker News, and plenty of pushback. One comment called it the trap of believing complexity is free because AI exists, adding that AI gets lost in complex code just as people do. Another objected to a shopping app building the same thing twice with no technical reason to. A developer who builds a cross-platform framework, the same kind of tool as React Native, predicted that the extra cost would bring Shopify back to shared tooling within a few years. It's worth keeping in mind that this developer builds a competing tool.

Others argued that this is a choice only a big company with a lot of engineers can make. Six people led the Shop migration, but behind them were feature teams and the people who built Shopify's internal agent tooling. Shopify is also a company that has pushed AI unusually hard. In April 2025, CEO Tobi Lütke himself published an internal memo stating that "Reflexive AI usage is now a baseline expectation at Shopify," and the new announcement says Shopify has been building software with LLMs since 2021, a year before ChatGPT came out. Both the announcement and the Helix post end with a pitch to hire mobile and AI engineers.

The biggest app is still being migrated. The Shopify app has more than 300 screens, plus home screen widgets and an Apple Watch app, and Shopify says it will ship later this year.

Shared code used to keep both apps identical. Now a checking process has to

When everything ran on one codebase, the two apps had the same features automatically. The same code ran on both. After moving Shop to native, Shopify kept the rule that "Android and iOS must be at feature parity at all times." The shared code used to enforce that rule, and Shopify wrote that its development and release process will enforce it from now on.

At the center of that process is checking the work. To see whether an app an agent has changed actually works, you have to read the app's state inside a simulator, through the accessibility tree or screenshots. Shopify wrote, "It doesn't matter how good the model is if it can't test its work quickly." So it is restructuring its apps so that their logic is separated from the UI and can be driven straight from the command line.

According to Shopify, an agent takes seconds to change the code and several minutes to check the result.

In 2020, Shopify merged its apps into one codebase so it would have less code to write and maintain. Now that writing and fixing code can be handed to agents, what Shopify is focused on is not the amount of code. It is the time it takes to check what the AI built.