
Clients usually come to this conversation with a strong opinion already — "we want it native, it's faster" or "just use React Native, it's cheaper." Both are true often enough to be dangerous as defaults. Here's how we actually decide.
Before performance or cost, we ask: how much of this app's value depends on things the OS controls tightly? Camera pipelines, background processing, ARKit/ARCore, complex animations tied to native gesture systems — these are where React Native's bridge still adds real friction, even with the new architecture. If your app is mostly forms, lists, API calls, and standard navigation, that friction barely shows up.
Flutter for client work, unless the client already has a Flutter team. Not because it's bad — because the hiring pool is smaller, which becomes your problem eighteen months after launch when you need to grow the team.
We score every mobile engagement on three axes before recommending a stack: platform-specific complexity, team size and hiring plan, and how fast the product needs to change in year one. Two out of three pointing toward "standard app, small team, fast iteration" means React Native. Two out of three pointing toward "platform-heavy, dedicated team per OS, stable scope" means native. Most projects aren't close calls once you actually score them — the debate feels harder than the decision usually is.
One email a month — no fluff, just what we're learning from building software for clients.