Building a new app
Native vs. Cross-Platform App Development: React Native, Flutter or Swift/Kotlin?
Short answer: For most startups, businesses and creator apps, cross-platform (React Native or Flutter) is the right choice. One codebase ships to iOS and Android, so it typically costs 10–20% more than a single platform rather than double, and the result feels native to users. Go fully native (Swift for iOS, Kotlin for Android) when the app depends on heavy graphics, advanced hardware access, or platform-specific polish that is the product. My default is React Native with Expo.
What's the difference?
- Native: Separate apps written in each platform's own language: Swift/SwiftUI for iOS and Kotlin/Jetpack Compose for Android. Two codebases, often two developers.
- Cross-platform: One codebase that runs on both. React Native (JavaScript/TypeScript, renders native UI components) and Flutter (Dart, draws its own UI) are the two main options.
Side-by-side comparison
| Native (Swift + Kotlin) | React Native (+ Expo) | Flutter | |
|---|---|---|---|
| Codebases | 2 | 1 | 1 |
| Cost for iOS + Android | Highest (~2×) | Lower | Lower |
| Performance | Best | Excellent for most apps | Excellent for most apps |
| Native look and feel | Perfect | Uses real native components | Close, via its own rendering |
| Access to new OS features | Day one | Usually quick, via native modules | Usually quick, via plugins |
| Over-the-air updates | No | Yes (Expo EAS Update) | Limited |
| Hiring pool | Two specialised pools | Very large (JS/TS developers) | Smaller (Dart) |
| Shares code with web | No | Yes, with React | Limited |
When should I choose cross-platform?
- You need iOS and Android and want to control budget
- The app is mostly screens, forms, lists, media, payments and data, which describes most apps
- You want to iterate fast, with one feature built once
- You may want over-the-air fixes without waiting for store review
- You want easy handover to another developer later
When should I choose native?
- Heavy real-time graphics or 3D: games, AR, advanced camera processing
- Deep hardware integration: Bluetooth medical devices, complex background processing
- Platform-first products, like Apple Watch–centric apps or apps that depend on the newest OS features on day one
- Very large teams with dedicated platform specialists
Even then, a hybrid is common: a cross-platform app with a few native modules for the hard parts. I use native modules where needed, for example for iOS home-screen widgets.
Why is React Native with Expo my default?
- One TypeScript codebase for iOS and Android (and code sharing with React web apps)
- Expo handles builds, signing, push notifications and over-the-air updates, which cuts a lot of setup and maintenance work
- Native modules when you need platform-specific features
- The largest talent pool, so you're never locked to one developer
- I've shipped multiple apps this way: Escape the Vape, Dry Quest and Drip are all React Native
Does cross-platform cost more to maintain?
It's usually cheaper, because there's one codebase to update. The main maintenance task is keeping the framework (React Native/Expo or Flutter) and dependencies current, typically a few upgrades a year. Skip them for too long and upgrades become painful. (Updating an outdated app)
What about web apps and PWAs?
A progressive web app (PWA) can be enough for some business tools, but it lacks App Store discovery, has weaker push notifications on some devices, and can't use in-app purchases. If your users expect an app from the store, build a real app. If they mostly use desktop, start with web.
FAQ
Is React Native as good as native?
For the vast majority of apps, users can't tell the difference. Native wins for graphics-heavy apps, advanced hardware access and some cutting-edge OS features.
React Native or Flutter: which is better?
Both are capable. I prefer React Native for the TypeScript ecosystem, code sharing with React web apps, Expo's tooling and over-the-air updates, and the larger hiring pool.
Can a cross-platform app be converted to native later?
Yes, though it's effectively a rebuild. More often, apps stay cross-platform and add native modules where needed.
Does Apple approve React Native apps?
Yes. Many popular App Store apps are built with React Native. Review is the same as for any other app.