Two approaches in one sentence
A native app means two separate apps: one for iOS written in Swift, one for Android in Kotlin. A cross-platform app (e.g. React Native or Flutter) means one shared codebase from which the apps for both platforms are built.
Both routes lead to a full-fledged app in the App Store and Google Play. Users usually won't notice the difference – but your budget and schedule will.
Comparison at a glance
| Criterion | React Native / Flutter | Native (Swift + Kotlin) |
|---|---|---|
| Build cost | lower – one codebase for two platforms | higher – two separate apps |
| Time to launch | shorter | longer |
| Performance | sufficient for the vast majority of apps | the highest |
| Access to new system features | sometimes delayed or via a native module | from day one |
| Maintenance | one codebase, one team | two codebases |
When to choose React Native
React Native is a mature technology today – large consumer apps use it, and the framework's new architecture has significantly improved the performance of communication with the native layer. It's a good choice when:
- you're building a business app, a shop, an app for bookings, a loyalty programme or customer communication,
- you want to launch on iOS and Android at the same time on a reasonable budget,
- you have or are planning a web app in React – some of the logic and the team's skills can be shared,
- you value quick fixes and one team responsible for everything.
When to choose a native app
The native approach has the edge when the app makes heavy use of the hardware or the system:
- advanced camera handling, real-time image or sound processing,
- rich graphics, AR, games,
- deep system integration: widgets, watches, Bluetooth with unusual devices, background work,
- the app runs on only one platform (e.g. an internal app for company Android phones).
You don't have to choose "all or nothing". A React Native app can have individual modules written natively – exactly where performance or access to a specific system feature matters.
What about Flutter?
Flutter is the other popular cross-platform framework. It draws the interface with its own engine, so the app looks identical on every device. React Native uses the system's native components and TypeScript, which most web developers know.
In practice both technologies let you build a great app. The differences have more to do with the team and the ecosystem than with what the framework itself can do. We work in React Native every day because it fits well with our web stack (TypeScript, React, NestJS).
Myths worth setting aside
"Cross-platform is slow." For a typical app – lists, forms, maps, payments, notifications – the performance difference is unnoticeable to the user. Slowdowns usually come from badly written code, not from the framework.
"A native app is always better." It's better where its strengths are needed. In other cases it simply means twice as much code to write and maintain.
"It's hard to move from React Native to native later." Migration is possible screen by screen, and the backend, visual design and business logic stay unchanged.
How we make this decision with a client
We start with the feature list and the answers to a few questions: whether the app needs specific hardware features, which devices it will be used on, how quickly it needs to reach the stores and what the budget is for development in the coming years. After a conversation like that the choice is usually obvious.
We describe how the technology affects the budget in more detail in the article how much does a mobile app cost. If you'd like to talk about a specific project, take a look at the mobile apps page.
Related services: mobile apps.