VOL.08 — FIELD NOTES · ENTRY 09/23

▲ 8,200M

MobileOctober 16, 20247 min read

Flutter vs React Native in 2024: I Have Shipped Both. Here Is My Take.

I have shipped apps in both Flutter and React Native, for real clients, on real budgets, in a market where the budget is usually smaller than the ambition. So this is not a benchmark post. Benchmarks are fun and mostly irrelevant to whether your client is happy. This is about which one I reach for and why.

The client who set the scene

Let me start with a true story that explains everything about mobile work here. A client wanted a full app. iOS and Android. Push notifications, payments, the works. The budget was 500 dollars. Total. For both platforms. When I gently explained that this was not a number that maps to that scope anywhere on Earth, he was genuinely confused, because to him 500 dollars was a lot of money, and it is.

Cross-platform frameworks did not become popular because they are elegant. They became popular because clients want two apps and can pay for half of one.

That tension, two platforms on one budget, is the entire reason Flutter and React Native matter in a market like Nepal. Native iOS plus native Android is a luxury most of my clients cannot afford. So the real question is which cross-platform tool wastes less of my time.

What I actually think of each

React Native: if the client already has a React web app or a React team, this is the obvious pick. Code sharing of logic and mental model is real. The ecosystem is huge. The downside is that you live close to the native edge, and when something breaks at the native bridge, you are debugging across two languages and a runtime, which is its own special pain.

Flutter: Dart is weird at first. Everyone says this and it is true. But it is weird for about a week and then it is fine, honestly pleasant. The big win is consistency. Flutter draws its own UI, so what I see on my screen is what the client sees on theirs, on both platforms, without the per-device surprises. For pixel-faithful design, Flutter has saved me real arguments with clients.

Where each one won a project for me

  • A project with an existing React web product and a tight timeline: React Native, because the team could move without learning a new world.
  • A design-heavy app where the client cared deeply about it looking identical and polished everywhere: Flutter, no contest.
  • An app that needed a lot of fiddly native integrations specific to one platform: honestly I considered going native for that part, and sometimes the right answer is a thin native layer regardless of framework.

The Dart thing, more honestly

People treat Dart like a dealbreaker. It is not. It is a clean, boring, statically typed language that does its job. The tooling is good, hot reload is genuinely fast, and the lack of JavaScript's historical baggage is a relief. I went in skeptical, the same as everyone. I came out using it for the apps where I get to choose.

My 2024 take

If I am choosing freely, with no existing team or codebase pulling me, I lean Flutter for most client work here. The UI consistency and the single mental model save me time, and time is the budget the client never accounts for. If there is an existing React investment, React Native wins by default, not because it is better but because reuse beats purity. And if a client offers me 500 dollars for two platforms, I now know exactly what to say, which is the most valuable thing either framework ever taught me.

Saroj Prasad Mainali

Full-Stack Engineer · Kathmandu

WHAT I AM DOING NOW

MORE FIELD NOTES

03