Every mobile project starts with the same question, and it's usually the wrong first question: "should we build native, or cross-platform, or just a web app?" The right first question is what the app actually needs to do — the platform choice falls out of that, not the other way round.
Here's how we actually think through it.
Native Apps (Swift / Kotlin)
Built specifically for iOS or Android, native apps get full access to the device's hardware and the best possible performance — camera, GPS, biometrics, background processing, push notifications, all without compromise. They're also the most expensive route, since you're effectively building and maintaining two separate codebases if you need both platforms.
Choose native when: the app is performance-critical, leans heavily on device hardware, or needs to feel completely seamless — think fitness tracking, AR features, or anything doing heavy background processing.
Cross-Platform (Flutter / React Native)
A single codebase that compiles to both iOS and Android apps. You give up a small amount of native performance and access to the very latest platform-specific features, but you cut development time and cost significantly, and you only maintain one codebase going forward.
Choose cross-platform when: you need both iOS and Android, budget and timeline matter, and the app's needs are largely standard — forms, lists, API calls, notifications, maps.
Progressive Web Apps (PWAs)
A website that behaves like an app — installable, works offline, sends push notifications — without needing an app store at all. No approval process, no separate download, instant updates the moment you deploy. The trade-off is more limited access to native device features, and a slightly less "app-like" feel on iOS specifically.
Choose a PWA when: speed to market matters most, you want to avoid app store friction entirely, or your primary need is content and forms rather than deep device integration.
A Quick Decision Framework
- Tight budget, need both platforms, standard features → Cross-platform
- Heavy device features, performance-critical, budget allows → Native
- Need it live fast, mostly content/forms, want zero app-store friction → PWA
We've had clients come to us convinced they needed a native app, and leave with a PWA that shipped in a third of the time and did everything they actually needed. The platform is a means to an end — start with the end.
If you're not sure which bucket your project falls into, that's normal — it's usually the first thing we work through together before any code gets written, because getting this decision right up front saves far more than it costs to think it through properly.