Before you pick a framework, pick an approach. Cross-platform, native and PWA each trade cost, performance and reach differently. Here's how we choose.
There are three ways to put an app in someone's hand: cross-platform (one codebase to iOS and Android, via Flutter or React Native), fully native (Swift for iOS, Kotlin for Android), or a PWA (a web app that installs to the home screen). Most teams over-think the framework and under-think the approach.
We build all three and default to cross-platform, because one codebase and one senior team is usually the fastest path to a product people use. Native and PWA each have a clear place — here's where.
| Cross-platform | Native | PWA | |
|---|---|---|---|
| Codebases | One (iOS + Android) | Two (one per OS) | One (the web) |
| Time & cost | Lowest for two platforms | Highest — two builds | Lowest, but mobile-limited |
| Performance ceiling | High; great for most apps | Highest | Good for content / simple apps |
| Device & OS access | Most, via plugins / native bridges | Full and immediate | Limited (improving) |
| App-store presence | Yes (iOS + Android) | Yes (iOS + Android) | No (installs from the web) |
| Best for | Most products, startups, MVPs | Single-platform, deep OS integration | Reach, no install friction |
You want iOS + Android (and maybe web later) from one codebase and a small senior team — true for most startups and MVPs.
A single platform is the product and you need deep OS integration — AR, advanced camera, heavy background processing, the latest platform APIs on day one.
Reach and zero install friction beat app-store presence — content products, tools, or a companion to a native app.
For the vast majority of apps, yes. Modern cross-platform (Flutter especially) compiles to native code and performs beautifully. Native still wins when a single platform needs the deepest OS integration.
For content products and tools, often yes — a PWA installs to the home screen with no app store. For rich, device-heavy mobile experiences, a cross-platform or native app is usually the better call.
Cross-platform is almost always cheaper for two platforms — one codebase and one team instead of two of each.
Cross-platform, and we lead with Flutter. We move to native or add a PWA when the product clearly calls for it.
A two-week discovery sprint ends with a recommended approach, a build plan and a fixed price — yours to keep either way.