One codebase, many screens
Flutter is Google’s SDK for building apps from a single Dart codebase that runs on mobile, web, and desktop. Rather than map to each platform’s native widgets, it draws its own with the Skia and Impeller graphics engines, which is what lets the same code look and behave consistently from an iPhone to a Windows desktop.
The problem it takes on
Maintaining a separate iOS app, an Android app, a web build, and a desktop build multiplies teams and bugs. Flutter’s pitch is that one team writing Dart can ship to all of them with near-native performance, because the UI is compiled rather than bridged to a web view. Whether that trade is worth it is the real decision, and it turns on one thing: Dart.
What you get
- A single Dart codebase targeting Android, iOS, web, Windows, macOS, Linux, and Fuchsia.
- A large catalog of Material and Cupertino widgets, drawn by Flutter rather than by the OS.
- Stateful hot reload, which updates a running app in well under a second.
- BSD-3-Clause licensed, stewarded by Google with a large outside contributor base.
Install
Flutter ships as an SDK, not a package-manager install. The documented path is the get-started guide on docs.flutter.dev, which sets up the flutter command-line tool; on first run it fetches the matching Dart SDK. After that:
flutter doctor
flutter create my_app
flutter run
First screen
import 'package:flutter/material.dart';
void main() => runApp(const MaterialApp(home: Hello()));
class Hello extends StatelessWidget {
const Hello({super.key});
@override
Widget build(BuildContext context) =>
const Scaffold(body: Center(child: Text('Hello, Flutter')));
}
Where it shines, and where it strains
Flutter shines for product teams that want one codebase across mobile and desktop with a custom, brand-consistent look, and the hot-reload loop is genuinely fast to work in. It strains when you need deep platform-native UI and the newest OS widgets the day they ship, since Flutter draws its own. Adopting it also means committing to Dart, a language most teams do not already know. React Native, by contrast, keeps you in JavaScript and renders real native components.
Flutter versus other cross-platform toolkits
| Flutter | React Native | Kotlin Multiplatform | |
|---|---|---|---|
| Stars | 176,846 | 125,966 | 52,834 |
| Forks | 30,479 | 25,180 | 6,323 |
| Language | Dart | JavaScript/TypeScript | Kotlin |
| UI | self-drawn (Skia/Impeller) | native components | native per platform |
Counts are from GitHub as of early June 2026. Kotlin Multiplatform ships inside the main JetBrains/kotlin repository, so its star and fork numbers cover the entire Kotlin language project, not Multiplatform on its own.
Star history
Flutter’s curve is a slow burn followed by a breakout. After going public in March 2015 it gathered stars unhurriedly, reaching only about 3,500 by early 2017. Then 2018 changed the slope: the count ran from roughly 7,000 at the end of 2017 to nearly 39,000 by the close of 2018, the year Flutter shipped its 1.0 release. From there it has been a long, steady climb to roughly 176,800 (as of 2026-06). The chart above plots that full trajectory from GitHub’s star data.
Related
For on-device machine learning inside a Flutter app, TensorFlow Lite from TensorFlow is a common pairing. If your app calls language models during development, a local runtime like Ollama can serve them from the same machine.
FAQ
Is Flutter free and open source? Yes, under a BSD-3-Clause license.
What language does Flutter use? Dart, which you will need to learn even if you already know JavaScript or Kotlin.
Can one Flutter codebase target desktop and web? Yes. The same code targets mobile, web, Windows, macOS, and Linux.