Shopify went all-in on React Native in 2020 and got exactly what it paid for: one implementation instead of two, developers contributing across the stack, no permanent feature-parity chase. This week they announced the migration back to Swift and Kotlin. The framework did not get worse — the cost of building twice did.

That is the interesting kind of engineering reversal. Shopify is explicit that they do not hold on to a decision just because it was successful, and that when a core assumption changes, the decision re-opens. The assumption here was that native means building and maintaining software on two platforms. By late 2025 agents had taken enough of the implementation, translation, testing, and review work that the cost stopped being the deciding factor.

What changed in practice, according to their prototypes:

  • Agents could implement a feature on Android using the iOS version as reference, and the reverse
  • Developers could contribute effectively outside their primary stack
  • Parity maintenance got cheaper through shared specifications, tests, and review checkpoints

They picked greenfield over incremental migration, inverting their own 2020 reasoning. Back then a rewrite meant years of work with features frozen. Now the Shop app went from proof of concept to a fully rebuilt native app in the stores in 12 weeks, and the Shopify app — 300+ screens, widgets, Apple Watch app, Siri Shortcuts — is underway.

The part worth stealing is how they avoid shipping generated garbage. Pointing an agent at the React Native codebase and one-shotting the port does not work, even with an upfront spec pass:

  • Helix reads the screen, proposes small ordered checkpoints, and refuses to advance on a bad result
  • Each checkpoint must prove behavior with tests, match the running app in a visual review, survive two adversarial reviewers, and get human sign-off
  • Review feedback is remembered, so the loop gets more autonomous as the migration progresses

Then there is the latency argument, which generalizes past mobile. Agents changed code in seconds but needed minutes to verify it, because verification went through a simulator driven by accessibility trees and screenshots. Their fix is an architecture principle: decouple business logic from the UI, run it headlessly on desktop, and expose it through a CLI. Iteration drops from minutes to milliseconds, and the same CLI can drive simulators remotely when a UI check is genuinely required.

“It doesn’t matter how good the model is if it can’t test its work quickly” is the sentence to remember. Most complaints about agent-written code are really complaints about feedback latency wearing a costume.

The exit is handled cleanly too — React Native Skia stays sponsored through 2026 and is then forked to a new name, FlashList is looking for a long-term steward, Restyle gets archived, and the thanks to Meta, Software Mansion, and the community are genuine rather than obligatory.

The broader lesson is that a tech-stack decision is a bet on a cost function, and cost functions drift. Shopify is also a useful data point for Swift work: twelve weeks to a shipped native app rebuild, using the old codebase as reference and a CLI as the test surface, with the measurement bar — velocity, quality, autonomy — stated up front instead of after the fact.