React Native + Expo
One TypeScript codebase for iOS and Android when the app is mostly screens, lists, and forms.
Circumstances — when to use it
- You need both app stores and have one team, not two
- The team already writes React and wants to reuse that knowledge
- You want over-the-air updates to ship JavaScript bug fixes without waiting on store review (native code changes still need a new build)
Synergy — how the pieces fit
React Native renders real native views from React code, so the UI feels native while the logic stays in TypeScript. Expo removes the Xcode and Gradle setup: EAS builds in the cloud, config plugins handle native modules, and OTA updates push JavaScript fixes straight to users. Expo Router mirrors file-based web routing, so navigation looks like something a web dev already understands.
The tech and its role
Architectural examples
Each example links to a public source — no claims about private internals.
Discord
Built its iOS app on React Native with roughly 90% code shared with its React web code, and has written about the native work needed for chat performance. (React Native example; not a claim about Expo.)
sourceShopify
Declared React Native the future of its mobile apps and later migrated Shopify Mobile, its largest app. (React Native example.)
source · 2020Coinbase
Moved its iOS and Android apps to a single React Native codebase, opening mobile work to its web engineers. (React Native example.)
source · 2021Skip if
Skip if the product depends on heavy custom rendering, sustained background processing, or bleeding-edge OS features on day one.