All five are free and open source; the differences are in how they work and what surrounds them.
| Feature | Capacitor 8.5 243,123 | Cordova 13 129 | React Native 0.87 36,878 | Flutter 3.47 16,720 | Tauri 2.11 126,184 |
|---|---|---|---|---|---|
| Language | JS/TS, any web framework | JS/TS | JS/TS with React 7,897 | Dart | JS/TS front end, Rust core |
| UI drawn by | System WebView | System WebView | Platform views | Impeller | System WebView |
| JS engine | The WebView's | The WebView's | Hermes V1 11,328 , bundled | None (AOT Dart) | The WebView's |
| Native calls | Async bridge, Promises | Async exec() | JSI, sync or async | Platform channels | invoke() to Rust |
| Native projects | android/, ios/, committed | platforms/, regenerated | android/, ios/ or Expo 6,418 prebuild | android/, ios/ | src-tauri/gen/ |
| Same code on the web | Yes, unchanged | Mostly | Via react-native-web | Canvas-based web build | Yes |
| Fast iteration | Live reload (Live Reload) | None built in | Fast Refresh | Stateful hot reload | Dev server HMR |
| Live updates | Capawesome 178,914 Live Update | Few maintained | EAS Update 6,418 | Shorebird 24,513 (paid tiers) | Updater is desktop-only |
| License | MIT | Apache-2.0 | MIT | BSD-3-Clause | Apache-2.0 or MIT |
Two rows decide most comparisons. "UI drawn by" sets how native the app looks and how much a web team can reuse; "Native calls" sets how expensive a trip to the platform is. The rest (tooling, updates, licenses) are close enough that team skills usually settle the choice.