"Should we go native or cross-platform?" comes up at the start of almost every mobile project. The honest answer is that it depends, but it depends on specific, answerable questions. Here are the ones that actually decide it.
1. How much of the app is platform-specific?
If the app leans heavily on the camera, Bluetooth, background processing, AR, widgets or the newest OS features on release day, native (Swift / Kotlin) avoids a layer of bridging and plugin maintenance.
If the app is mostly forms, lists, dashboards and API calls, which describes most business apps, cross-platform handles it comfortably.
2. What does your team already know?
- A strong JavaScript/TypeScript and React team will be productive in React Native quickly, and can often share logic with a web app.
- Flutter uses Dart, which is easy to pick up, and gives very consistent UI across platforms because it draws its own widgets.
- Separate iOS and Android specialists make native realistic.
The best framework is often the one your team can maintain for years, not the one that wins benchmarks.
3. How important is identical UI on both platforms?
Flutter renders the same pixels everywhere, which is great for strongly branded designs. React Native and native apps use platform components, which feel more "at home" on each OS but differ slightly between them. Decide which your users and designers actually want.
4. What's the performance profile?
For typical business apps, modern cross-platform frameworks are more than fast enough. Performance becomes a deciding factor mainly for:
- Heavy graphics, games or real-time video
- Complex animations on low-end devices
- Intensive on-device processing
Even then, both Flutter and React Native let you drop down to native code for the hot paths.
5. What's the long-term cost?
Two native codebases mean roughly two sets of features, bugs and releases. Cross-platform usually reduces that, but you take on dependency risk: plugin quality, framework upgrades and lag behind new OS features.
Ask: Who maintains this in three years, and how?
A quick decision guide
| Situation | Leaning |
|---|---|
| Business app, small team, tight budget | Cross-platform |
| React/web team, shared logic with web | React Native |
| Highly branded, pixel-consistent UI | Flutter |
| Deep hardware or OS integration | Native |
| Graphics-heavy or performance-critical | Native (or cross-platform plus native modules) |
Final thought
There's no universally right answer, only a right answer for your project, team and budget. Write down your answers to the five questions above before anyone mentions a framework name, and the choice usually becomes obvious.
Which way did you go on your last project, and would you choose the same again? Let me know in the comments.
I work at MACROGEN, where we build native and cross-platform apps. You can see our mobile app projects here.
This article was created with the help of AI and reviewed for accuracy by the author.
Top comments (1)
One question I'd add near the top: what is the web app written in? Mine started as a PWA and is React Native now, but the web side is Vue. So the "share logic with a web app" point is smaller than it sounds. No components cross over, only plain functions and the API.
For one person shipping web, iOS and Android it was still worth it. Just not for that reason.