Shopify2023-10-18Problem & solution
Migrating Shop app from React Native to native
Summary
Shop migrated its React Native app to native iOS and Android implementations in SwiftUI and Jetpack Compose after coding-agent advances changed the economics of a shared mobile codebase. A one-week proof of concept showed that one engineer using agents could recreate screens, interactions, and flows closely enough to make a full migration feasible although the result was not production-ready. Six engineers then built the native foundations and main journeys with feature teams validating edge cases; they preserved sign-in state, push notifications, analytics events, and behavior while simplifying some screens. Compared with React Native, native startup was 23% faster on iOS and 50% on Android, stability rose from 99.5%+ to 99.95%+, Android size dropped 109 MB, release builds fell about 75%, and scrolling reached 120 FPS. The migration’s workflow combined specialized agents, plan approval, Tardis live-app feedback, screenshot and event comparisons, and human review while feature parity remained a release requirement.
Context
The Shop app had used React Native since 2020. Planned New Architecture work would require revisiting native module integrations, rendering, and the boundaries between shared and platform-specific code, while advances in coding agents changed the tradeoffs behind maintaining a shared mobile codebase.
Approach / What changed
Shop rebuilt the app natively with SwiftUI for iOS and Jetpack Compose for Android. The migration used coding agents, a reusable Pi coding agent workflow, accepted implementation plans, Tardis tooling for live app feedback, and screenshot and event comparisons to preserve behavior, analytics, continuity, and feature parity.
Takeaways
A one-week proof of concept, led by one engineer using coding agents, recreated enough of the existing React Native app’s screens, interactions, and flows to support a full migration.
Native releases improved several measured outcomes: iOS and Android startup was 23% and 50% faster, Android size fell by 109 MB, Android release builds took about 75% less time, and scrolling reached 120 FPS.
Tardis gave agents structured access to native app events, logs, and state, while checkpoint comparisons checked event names, counts, payload fields, and relationships across React Native and native flows.
Source and freshness
- Source
- shopify.engineering
- Published
- Added to Yomu
Summaries are generated from the original by a language model. Check the original before relying on it.
Keep reading
Related reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
The best engineering reads, once a week
One useful email. Unsubscribe anytime.