What 'native' and 'Flutter' actually mean
Native development means writing the Android app in Kotlin with Jetpack Compose and the iOS app in Swift with SwiftUI or UIKit: two code bases, two teams or one team doing everything twice.
Flutter is Google's open-source toolkit for building apps from one Dart code base. Release builds are compiled ahead of time to native ARM code, and Flutter renders its own widgets rather than wrapping platform components. The output is still a normal Android or iOS app bundle that goes through the same store review.
Flutter vs native, factor by factor
| Factor | Flutter | Native (Kotlin + Swift) |
|---|---|---|
| Code bases | One | Two |
| Build effort for two platforms | Roughly one app plus platform setup | Roughly two apps |
| Performance | Compiled to native code; strong for animation and media | Native; the ceiling for hardware-heavy apps |
| UI consistency | Identical rendering on both platforms; platform styling optional | Follows each platform exactly by default |
| Access to new OS features | Via packages or platform channels, sometimes with a delay | Day one |
| Maintenance | One code base to update when SDKs and store rules change | Two update cycles |
| Hiring | Dart developers, or Android/iOS developers who learn Flutter | Separate Android and iOS specialists |
When Flutter is the right choice
- You need Android and iOS and do not have two native teams
- The interface is custom or brand-heavy rather than stock platform screens
- The app is an MVP or a SaaS client that will change quickly
- The app processes media or draws complex UI, where Flutter's rendering model performs well
- You want one set of automated tests and one release pipeline
When native is the right choice
- The app is a thin layer over brand-new OS features (new widgets, system integrations, wearables) that arrive in Swift and Kotlin first
- You depend on platform hardware or frameworks with no maintained Flutter package, and the platform-channel code would be most of the app
- You already have native teams and a native code base that works
- You are building a high-end 3D game or similar workload where every frame counts (and even then, a game engine is the usual answer)
What about React Native?
React Native also shares one code base, written in JavaScript or TypeScript, and renders platform components through a bridge. It suits teams already invested in React. Flutter compiles Dart to native code and owns its rendering, which gives more consistent visuals and stronger performance for custom and media-heavy interfaces. Both are mature; the choice usually follows the team's skills.
What we have seen building Flutter apps
Every app CarrySo publishes is a Flutter app. They compress photos, remove backgrounds with on-device machine learning, convert video with FFmpeg and parse binary metadata, all on the device, and they do it inside Flutter with heavy work in background isolates. Platform-specific code is a small fraction of each code base. That is the practical case for Flutter: the hard parts of a real app stayed shared.