Dart is a client-optimized language from Google, first shown publicly at the GOTO conference in Aarhus, Denmark, in October 2011. Its creators, Lars Bak and Kasper Lund, had built the V8 JavaScript engine, and Dart was their attempt to give the web something better than JavaScript. That plan mostly failed. The story of how Flutter saved the Dart programming language is one of the more unusual second acts in computing: a language that looked headed for the graveyard became the engine behind one of the most popular cross-platform UI frameworks.
Origins: a structured alternative to JavaScript
In 2011 large web apps were hard to build and maintain in JavaScript. Google wanted a language with classes, optional types and a fast virtual machine, and it planned to ship that VM directly inside Chrome. Developers were wary from the start; other browser vendors showed no interest in adopting a Google-controlled language. Dart 1.0 shipped in November 2013, and Ecma International standardized it as ECMA-408 in 2014.
In March 2015 Google dropped the plan to integrate the Dart VM into Chrome and focused on compiling Dart to JavaScript instead. Around the same time Microsoft's TypeScript was gaining traction by staying close to JavaScript. Dart kept an important internal user in Google's ads business, but outside Google it looked like a niche language.
How Flutter saved the Dart programming language
Flutter began inside Google as an experiment to render mobile UIs at high frame rates by drawing every pixel itself. The team evaluated several languages and chose Dart for practical reasons: it supported both just-in-time compilation, which enabled stateful hot reload during development, and ahead-of-time compilation to fast native code for release builds. Dart's single-threaded event loop and isolates also fit a UI framework well.
Flutter 1.0 was released in December 2018, and the framework's growth pulled Dart along with it. Most developers who learn Dart today learn it because of Flutter, and the Dart team's priorities, from faster startup to WebAssembly output, have been shaped by Flutter's needs.
Design and key features
Modern Dart looks quite different from the optionally typed language of 2011:
- Dart 2 (2018) made the type system sound and mandatory, with type inference.
- Sound null safety arrived in Dart 2.12 in 2021 and became required in Dart 3.
- Dart 3 (May 2023) added records, pattern matching, switch expressions and sealed classes.
- Isolates provide concurrency without shared memory, and
async/awaithandles asynchronous I/O. - Compilation targets include native machine code, JavaScript and WebAssembly.
A short Dart example
This program uses a sealed class hierarchy and an exhaustive switch expression with object patterns, features introduced in Dart 3:
sealed class Shape {}
class Circle extends Shape {
Circle(this.r);
final double r;
}
class Square extends Shape {
Square(this.side);
final double side;
}
double area(Shape s) => switch (s) {
Circle(r: var r) => 3.14159 * r * r,
Square(side: var a) => a * a,
};
void main() {
final shapes = <Shape>[Circle(2), Square(3)];
for (final s in shapes) {
print(area(s).toStringAsFixed(2));
}
}
Where Dart is used
Almost all real-world Dart runs inside Flutter apps. Google uses it for products such as Google Pay and Google Ads, and companies including BMW, Alibaba and many banks and startups ship Flutter apps on iOS, Android, desktop and the web. Dart also works on the server and for command-line tools, with frameworks like Shelf and Dart Frog, but that is a small slice of its usage. The pub.dev package repository hosts the ecosystem, most of it Flutter-related.
Limitations
Dart's biggest weakness is that it is rarely chosen on its own merits outside Flutter. If you are not building a Flutter app, you will find fewer libraries, fewer jobs and less community content than for TypeScript, Kotlin or Swift. Its fate is closely tied to Google's continued investment in Flutter, which some teams see as a risk. Compiling to JavaScript for the web also produces larger bundles than hand-written frontend code, although WebAssembly output is narrowing the performance gap.
Should you learn Dart?
Learn Dart if you want to build cross-platform apps with Flutter; it is easy to pick up if you know Java, C# or TypeScript, and the language has matured into a pleasant, safe tool. If you have no interest in Flutter, there are better general-purpose choices. Knowing how Flutter saved the Dart programming language is the key to understanding its present: Dart's future is Flutter's future.
Frequently asked questions
Is Dart only used for Flutter?
No, Dart can be used for servers, command-line tools and web apps compiled to JavaScript. In practice, though, the vast majority of Dart code is written for Flutter applications.
Why did Google not put Dart in Chrome?
Google announced in 2015 that it would not integrate the Dart VM into Chrome. Other browser vendors had no plans to support it, and Google decided compiling Dart to JavaScript was a better path for the web.
Is Dart similar to Java or JavaScript?
Dart's syntax looks familiar to Java and C# developers, with classes, curly braces and static types. Its runtime model, with an event loop and async/await, feels closer to JavaScript.







