Skip to content

Build1 publisher3 min readPublished

Shopify's Helix stops a porting agent at every checkpoint for a human sign-off

Shopify's case for dropping React Native rests on agents porting features between iOS and Android. The tooling built around those agents shows how much human review that still takes, and what the switch costs in hotfix speed.

The Engineer · Build desk

What happened

  • Shopify is moving Shop and its other flagship apps off React Native to Swift and Kotlin, dropping the shared framework, according to a dev.to account of the switch.
  • As recently as January 2025 the company published an article saying React Native's future at Shopify was bright, capping about five years of public advocacy for the framework.
  • Shopify's stated reason is that internal experiments showed AI agents implementing a feature on Android using the iOS version as a reference, close to autonomously, and the reverse.
  • The Shop app went from working prototype to fully rebuilt and shipped in 12 weeks, with AI doing most of the implementation work.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • constraint The bottleneck moves from writing code to approving it, so an org without a test suite it trusts, or without reviewers who will read adversarially at every checkpoint, cannot run this loop at all.
  • cost Going native gives up the hour-long hotfix path, and the users who pay for that are the ones sitting on a broken build until store review clears and they update.
  • capability The headless CLI is the piece any mobile team can copy, because taking the simulator out of the iteration loop speeds up agents whatever framework the app is written in.
  • contradiction The performance comparison was run against React Native without the New Architecture and without Expo, so it does not settle how a current React Native stack would have measured.

An agent working under Helix never gets the whole port. Shopify's internal tool splits the work into checkpoints, and each one has to pass automated tests, survive adversarial code review, and get a human sign-off before the next checkpoint starts [5]. Three gates per checkpoint [16]. The design assumes unreviewed agent output compounds, and puts a stop between each increment.

The second piece is duller and probably more portable. Shopify added a CLI layer so agents could exercise business logic headlessly, instead of waiting on a slow simulator for every iteration, which the post says had been a real bottleneck [6]. An agent loop runs at the speed of its slowest verification step. If your logic can only be exercised through a booted simulator, that wait dominates the loop, and a better model does not fix it.

Shopify's 2020 case for React Native was that building the same feature twice cost too much engineering time, and one team shipping to both platforms removed that cost [3]. Transferring the 12-week rebuild [7] to your org depends on a few conditions holding. You need a finished implementation on the other platform to act as the specification, which Shopify had in iOS Shop [4]. The test suite has to be good enough that "passes automated tests" is a gate and not a formality [5]. And because the writing got cheaper and the reviewing did not, you need reviewers with the appetite to do adversarial review at every checkpoint.

The performance side of the comparison rests on an older baseline. Shopify was not using React Native's New Architecture, so its measurements ran against the previous JavaScript-to-native communication path [8]. It was not using Expo either, which covers builds, over-the-air updates, dev clients, and simulator and web support for testing [9]. The size claim runs against the switch: the native rewrite shaved about one megabyte [10], which the post attributes to bloat living in assets, localization and media instead of the framework [11].

The 12 weeks leaves out what the switch costs in over-the-air updates. Pushing a JavaScript bundle fixes a shipped bug within the hour, while store approval takes days and users take weeks to move to the new version, and native code has no equivalent [12]. The post's author, who wrote that "I've spent years defending React Native publicly, so this one is personal for me" [15], calls that arguably React Native's single biggest practical advantage and says it barely gets mentioned in the reasoning for leaving [13].

Dependency management inside Xcode, CocoaPods and native linking is genuinely painful, and the same post is explicit that the pain has little to do with JavaScript or React [14]. By that account, a Swift and Kotlin rewrite keeps it. What the record supports is narrow: one company with a shipped iOS reference app, an orchestration tool of its own, and reviewer capacity at every checkpoint rebuilt its flagship in 12 weeks [7]. Shopify's stated payoff for the trade is closer access to platform capabilities with fewer abstraction layers in between [17].

What to watch

  • Whether Shopify publishes Helix or its checkpoint pass rates, which would show how often agent output was rejected.
  • Whether the per-feature cost claim holds a year in, when two codebases have to be maintained and not just ported once.
  • Whether Shopify says how it will hotfix a shipped native build now that a JavaScript bundle push is unavailable.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories