Flutter or React Native? A practical way to choose
Both ship to iOS and Android from one codebase. The honest differences show up in hiring, in animation-heavy interfaces, and in how much native code you end up writing anyway.
Most "Flutter vs React Native" articles are written by people who have only shipped one of them. Both are good. Both will build the app you are describing. The choice usually comes down to four questions that have nothing to do with benchmarks.
Question 1: What does your team already know?
If you have React developers, React Native lets them contribute on day one. The mental model, the package ecosystem and the debugging habits all transfer. Flutter means learning Dart, which is not hard, but "not hard" still costs weeks.
If you are hiring from scratch, this question is neutral and you can ignore it.
Question 2: How custom is the interface?
This is the real technical split.
React Native renders actual platform components. A button is a genuine iOS button. That is excellent when you want an app that feels native and follows platform conventions for free, and it is friction when your designer hands you something that looks nothing like either platform.
Flutter draws every pixel itself. That means a heavily branded, animation-rich interface behaves identically on both platforms, because it is not asking the platform for anything. The trade is that you are responsible for making it feel native, because you get none of it automatically.
Rule of thumb: platform-conventional app, lean React Native. Distinctive, motion-heavy brand experience, lean Flutter.
Question 3: How much native work is hiding in the requirements?
Both frameworks handle the common cases — camera, location, notifications, storage — through mature packages. You start writing platform-specific code when you hit:
- Bluetooth or hardware peripherals
- Background processing with strict battery behaviour
- Platform SDKs that ship native-only (some payment and banking SDKs)
- Widgets, watch apps and deep OS integrations
If two or more of those are on your list, budget for a developer who can write Swift or Kotlin regardless of which framework you pick. Cross-platform is not the same as never-touching-native.
Question 4: How long will this app live?
An app you will maintain for five years should be boring. Prefer the option with the larger local hiring pool and the fewer exotic dependencies, even if it is marginally less fun to write. Cleverness ages badly when the original developer has moved on.
Where the difference genuinely does not matter
Startup time, list scrolling and network performance are fine in both for the overwhelming majority of apps. If someone tells you to pick a framework because of raw performance, ask them what the app does. Unless it is rendering complex real-time graphics, that is rarely the constraint — bad architecture and chatty APIs slow apps down far more often than the framework does.
What we do
We build in both and pick per project, on the four questions above, in about a fifteen-minute conversation. If we think your app should be native rather than cross-platform, we will say so — it happens, and it is a cheaper conversation to have before the build than after.