Flutter is a framework for building apps. With one codebase you can ship to iOS, Android, the web, and the desktop. It's made by Google, open source, and it's the framework I use on every app I build.
The magic comes from two pieces. First, you write your app in Dart, a language that feels familiar if you've touched Java, TypeScript, or Swift. Flutter compiles your Dart directly to native machine code on mobile, so what ships to users is as fast as anything written in Swift or Kotlin. It isn't a webview. It isn't a wrapper.
The second piece is the widget model. Everything you put on screen is a widget, from a single button to a whole screen. Your app is a tree of widgets composed together. Once this clicks, the rest of Flutter clicks with it.
For the full reference, the Flutter docs.
Why I use it
- One codebase, every platform. Ship to iOS and Android without writing the app twice.
- Native performance. Compiles to machine code, not a webview. Feels like a real app because it is one.
- Hot reload. Save a file, see the change in under a second. The fastest feedback loop I've used in any framework.
- Dart is simple. Typed, null safe, reads like a friendlier TypeScript. You can learn enough to ship in a weekend.
Trade-offs
I'm not trying to talk anyone out of their stack, but there are real trade-offs worth naming.
- Binary size. A minimal Flutter app is ~5 to 10 MB larger than native. Fine for most apps, noticeable if you're chasing sub-20 MB downloads.
- Platform paper cuts. 99% of what you need is one package away, but you'll occasionally hit a native API that isn't wrapped yet. You can drop into Kotlin or Swift to bridge it, but that's a mode switch.
- Not great for content sites. Flutter Web renders in Canvas, which isn't indexable by search engines the way HTML is. Use it for authenticated tools and demos, not public marketing pages.
If you're shipping a native-first experience on one platform (an iOS-only widget-heavy tool, or an Android Auto app), SwiftUI or Jetpack Compose is the right call. For everything else I've built, Flutter has been the fastest path from idea to two stores.
Getting started
Install Flutter by following the official guide for your OS. It ships a command line tool and an editor plugin for VS Code or Android Studio.
Once installed, create your first app:
flutter create my_app
cd my_app
flutter runThat's a running app on your phone or simulator. From here, the next stops are Dart for the language and Widgets for the UI building blocks.