Read these articles for insight into Dart programming topics.

See also: Dart Tutorials and Effective Dart.

Libraries and APIs

Converters and Codecs
Florian Loitsch, February 2014 (updated March 2015)
Learn how to write efficient conversions.

Serialization in Dart
Nicolas Garnier, February 2015
Choose the serialization strategy that's right for your project.

Embedding Dart in HTML
Sigmund Cherem, Vijay Menon, Seth Ladd, October 2011 (updated December 2014)
Find out how you can embed Dart into HTML pages.

Florian Loitsch, March 2014
Manage your asynchronous code: handle uncaught errors, override behavior (such as printing and scheduling tasks), and more.

Single-Subscription vs. Broadcast Streams
Florian Loitsch, January 2014
Choose the kind of stream that's best for your application: single-subscription or broadcast.

Using JavaScript from Dart
The Dart Team, November 2013
An introduction to Dart-JavaScript interoperatibility.

Reflection in Dart with Mirrors: An Introduction
Gilad Bracha, November 2012 (updated November 2013)
Use the dart:mirrors library for introspection: discovering and using your program's structure.

Using SIMD in Dart
John McCutchan, August 2013
Get more out of your CPU: operate on four numbers in parallel, using the Float32x4 class from the dart:typed_data library.

Futures and Error Handling
Shailen Tuli, March 2013 (updated May 2013)
Everything you wanted to know about handling errors and exceptions when working with Futures (but were afraid to ask).

Creating Streams in Dart
Lasse Nielsen, April 2013
A stream is a sequence of results; learn how to create your own.

Improving the DOM
Bob Nystrom, October 2011 (updated March 2013)
Learn how Dart's HTML library improves the browser programming experience.

An Introduction to the dart:io Library
Mads Ager, March 2012 (updated February 2013)
An introduction to the Dart I/O library, which is aimed at server-side code that runs on the standalone Dart VM.

Using Dart with JSON Web Services
Chris Buckett, April 2012 (updated February 2013)
Learn how to consume JSON-based web services with Dart.

Native Extensions for the Standalone Dart VM
William Hesse, May 2012
Learn how to enable command-line Dart apps to call C/C++ functions.

Language Details

Mixins in Dart
Gilad Bracha, December 2012 (updated October 2015)
Mixins let you implement functionality once and use it in multiple classes.

Dart Language Asynchrony Support: Phase 2
Gilad Bracha, March 2015
Async*, sync*, yield, and yield* are now available as part of Dart's asynchrony support.

Dart Language Asynchrony Support: Phase 1
Gilad Bracha, October 2014
Async and await, two language features that support asynchronous programming, are now available in Dart.

Emulating Functions in Dart
Gilad Bracha, January 2012 (updated February 2014)
Learn how to define Dart classes that behave like functions.

Snapshots in Dart
Siva Annamalai, February 2013
Learn how snapshots can help your apps start up faster.

Optional Types in Dart
Gilad Bracha, October 2011 (updated September 2012)
One of the Dart programming language's most innovative features is the use of optional types. This document seeks to explain how optional types work.

Design Decisions

Why Dart Types Are Optional and Unsound
Eli Brandt, December 2011
A review of why Dart has optional static type annotations.

Why Not a Bytecode VM?
Florian Loitsch, November 2011
This article discusses the trade-offs VMs have to make, and explains why we think that a language VM makes more sense for Dart.


The Event Loop and Dart
Kathy Walrath, September 2013 (updated October 2013)
Learn how Dart handles the event queue and microtask queue, so you can write better asynchronous code with fewer surprises.

Numeric Computation
John McCutchan, May 2013
How you store and use numbers can have a big impact on your app's performance. This article focuses on the Dart VM, with additional tips for apps that are compiled to JavaScript.

Benchmarking the Dart VM
John McCutchan, October 2012 (updated November 2012)
Learn how to benchmark your applications