Mobile apps · Comparison
Native vs Flutter vs React Native vs Capacitor vs PWA
Five ways to put an app on a phone, from fully native to a website installed from the browser. The trade-off runs between native polish and platform access on one side and one shared codebase on the other.
5 options · 9 questions side by side · updated
| Compare | Native (Kotlin or Swift) | Flutter | React Native | Capacitor | PWA |
|---|---|---|---|---|---|
| What it is | Kotlin on Android, Swift on iOS | Dart, draws its own interface | React, rendered as native views | Web app in a native shell | Website installed from the browser |
| Codebases | Two, one per platform | One | One | One, shared with the web | One, the website itself |
| Look and feel | Fully native | Identical everywhere, imitates native | Native components | Web, styled to look native | Web |
| Performance | Full native speed | Near native | Near native for most apps | Fine for forms and content | Depends on the browser |
| Phone features | Everything, from day one | Most, through packages | Most, through modules | Common ones, through plugins | Limited, more on Android than iOS |
| In the app stores | Yes | Yes | Yes | Yes | No store needed; Play via a TWA |
| Team skills | Kotlin and Swift | Dart | JavaScript or TypeScript and React | Any web stack | Any web stack |
| Best for | Demanding, platform-specific apps | Custom, animated interfaces on both stores | React teams shipping to both stores | Existing web apps that need a store presence | Reach without installs or review |
| Watch out for | Twice the work | Dart hiring, larger app size | Native module upgrades | WebView limits, Apple's rule on wrapped websites | iOS limits on push and background work |
How to choose between Native (Kotlin or Swift), Flutter, React Native, Capacitor and PWA
- Pick native when performance, platform polish or brand-new platform features matter more than development cost.
- Pick Flutter or React Native to ship one app to both stores with a single team: Flutter for custom, animated interfaces, React Native for teams fluent in React.
- Pick Capacitor when a web app already exists and needs to be in the stores, and a PWA when an installable website is enough.
The options
- Native (Kotlin or Swift)Android's modern toolkit for building screens in Kotlin code: you describe what the interface should look like for the current data, and Compose redraws it when the data changes.
- FlutterGoogle's toolkit for building apps for Android, iOS, the web and desktop from one codebase in the Dart language, drawing every pixel itself so the app looks the same everywhere.
- React NativeMeta's framework for building Android and iOS apps with React and JavaScript or TypeScript, where your components become real native buttons, lists and text.
- CapacitorA tool from the Ionic team that wraps a web app in a real Android and iOS app, with plugins that let the web code use the camera, files, notifications and other phone features.
- PWARendering and architectureA website that can be installed on a phone or computer like an app, with its own icon and window, and can keep working offline.
More comparisons
- Flutter vs React NativeThe two most used cross-platform frameworks. Both ship one codebase to Android and iOS; they differ in language and in who draws the interface.
- Kotlin Multiplatform vs FlutterBoth let one team cover Android and iOS. Kotlin Multiplatform shares code and keeps native interfaces optional; Flutter shares everything, interface included, in Dart.
- Capacitor vs TWA vs PWAThree ways to turn a web app into something people install. They differ in which stores they reach and how much of the phone they can use.
- Google Play vs the App StoreGetting an app onto phones means going through one store per platform. The fees are in the same range; the steps before the first release are not.
- React vs Vue vs Angular vs SvelteThe four main ways to build interactive web interfaces. Each can build almost anything; they differ in how much they include, how they update the page and how large their communities are.
- Next.js vs Vite vs Astro vs Create React AppFour ways to start a React-based website or app. They are not quite the same kind of tool: Next.js and Astro are frameworks, Vite is a build tool, and Create React App is a retired starter.
Crafted in the dark. Shipped to the world.
Tell us what you are building. You get a private project space with a proposal and a line-by-line quote within a day.