What native still buys you
Building two separate apps, one in Swift for iOS and one in Kotlin for Android, remains the safest choice when the app lives off the hardware: video processing, augmented reality, high-frequency sensors, or deep system integration such as advanced widgets and extensions.
Native also keeps the day-zero advantage: when Apple or Google ships a new system capability it is available immediately, whereas a cross-platform framework has to port it first.
The price of that safety is mechanical: two codebases, two skill sets to hire, and every feature written then tested twice. In practice, expect close to double.
What Flutter changes
Flutter compiles one codebase to both iOS and Android, and draws its own interface rather than driving the system components. That explains both its strength and its limit: the rendering is identical everywhere and smooth, but the app feels slightly less native.
For the vast majority of business apps that is a good trade. A catalogue, a client area, order taking, delivery tracking, an internal tool: all of it is built once and ships to both stores.
The real gain is not just the upfront cost, it is maintenance. A fix is written once. On two native apps it is written twice, tested twice, and drifts out of sync sooner or later.
The option people forget: the installable web app
Before committing to an app, ask whether you need one. A modern web app installs to the home screen, works offline, sends notifications on Android, and updates without waiting for a store review.
It avoids two major sources of friction: the download, which loses a good share of users, and store review, which adds days to every fix. It also costs noticeably less, because it is the same work as a website.
Its limits are real: notifications stay restricted on iOS, hardware access is narrower, and you do not appear in the stores, which matters if discovery happens there. But for a tool used by clients who already come from your site, it is often the most rational answer.
The test that decides
Ask the questions in this order. Does the app need the phone hardware beyond the camera and location? If yes, native. If not, are the stores a real acquisition channel for you? If not, an installable web app is probably enough.
If you need the stores but not advanced hardware, Flutter is the balance point: one codebase, two stores, a cost close to that of a single native app.
Do not choose on a framework reputation. Choose on those three questions, in that order, and the answer is almost always the one an honest developer would give you.
The comparison
| Criterion | Flutter | Native (iOS + Android) |
|---|---|---|
| Codebases to maintain | One | Two |
| Relative cost | Baseline | Roughly double |
| Advanced hardware access | Good, through bridges | Complete and immediate |
| New system features | Available once ported | Available on day one |
| Consistency across both OS | Identical by construction | Maintained by hand |
| Presence in the stores | Yes | Yes |
| Fixing a bug | Written once | Written and tested twice |
In short
Choose native if the app lives off the hardware or must adopt new system features immediately. Accept the double cost, it is structural.
Choose Flutter for almost every business app that has to exist in both stores. It is the best balance of cost, timeline and perceived quality.
And seriously consider the installable web app before either. For a tool aimed at users who already know you, it ships sooner, costs less, and gets fixed without waiting for a review.