How it works
Flutter apps are trees of widgets written in Dart. Rather than using the platform's own buttons and lists, Flutter paints its own interface with its rendering engine (Impeller, now the default on iOS and most Android devices), so a screen looks identical on every phone. Release builds are compiled ahead of time to native machine code, and during development hot reload shows code changes in the running app almost instantly.
It ships two widget sets, Material (Android style) and Cupertino (iOS style), and pub.dev hosts packages for cameras, maps, payments and much more. Native features no package covers are reached through platform channels, small bridges to Kotlin or Swift code. The same code can target the web, Windows, macOS and Linux, although web output is heavier and less search-friendly than a normal website.
Flutter pros and cons
Pros
- One codebase for Android and iOS, with desktop and web as options
- Pixel-identical interface on every device, with smooth animation
- Hot reload makes design changes quick to try
- Large package ecosystem and strong tooling from Google
Cons
- Dart is a language few developers know beforehand
- Does not use native controls, so the platform look must be imitated
- Larger minimum app size than a native app
- Web builds are heavy and weak for SEO
When to use Flutter
Pick it when
- One team building the same app for Android and iOS
- Custom, brand-heavy interfaces with a lot of animation
- An MVP that must reach both stores quickly
Skip it when
- The app leans on brand-new platform features from day one
- A web team that wants to share code with an existing React site
Flutter pricing
Flutter vs the alternatives
- Native vs Flutter vs React Native vs Capacitor vs PWAFive 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.
- 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.
Related terms
More in Mobile apps
Cross-platform