Skip to main content

Dart 3.13.1

Release Date: August 18, 2026

Dart 3.13.1, a stable release of the Dart SDK, is now available. Released on August 18, 2026, the headline change is the arrival of primary constructors in the language, alongside new dart:core and dart:io additions, a set of synchronous concurrency APIs in dart:isolate, and fresh analyzer lints. Here is the formal rundown.

Overview

Dart 3.13 lands on the stable channel and pairs with the current Flutter 3.47 toolchain. This is a feature release rather than a pure maintenance pass: it introduces one new language feature of note and rounds out several library and tooling gaps that had been accumulating through the 3.12 line.

Primary Constructors

The marquee feature is primary constructors. It introduces no new semantics — it is purely a brevity feature — but it lets you express a class, its constructor, and a set of instance variables in a single declaration header. To opt in, set your package's SDK lower bound to 3.13 or greater (sdk: '^3.13.0').

Instead of writing a constructor and field declarations by hand, you can now declare them inline:

// Before
class Point {
  int x;
  int y;
  Point(this.x, this.y);
}

// After
class Point(var int x, var int y);

When a primary constructor needs an initializer list or a body, you specify them inside the class using the this body syntax:

class Point(var int x, var int y) {
  this : assert(x >= 0) {
    print('Point created at $x, $y');
  }
}

The feature also lets you use new and factory keywords to declare constructors in the class body without repeating the class name — for example new(this.x, this.y) for the default constructor, or a named new origin().

Library Additions

  • dart:async — Added Future.pause as a simpler alternative to Future.delayed with no callback.
  • dart:core — Added List.unmodifiableOf and Map.unmodifiableOf with better typing than their unmodifiable equivalents.
  • dart:core — Two new efficient bit-counting getters on int: trailingZeroBitCount (ctz) and oneBitCount (popcount).
  • dart:io — File access and modification timestamps now preserve microsecond precision instead of truncating to milliseconds.
  • dart:io — The cookie-date parser has been restored to the permissive algorithm the RFC specifies.

Synchronous Concurrency in dart:isolate

Several new APIs bring synchronous execution and event-loop control to Isolate: Isolate.runSync, Isolate.create, Isolate.shutdownSync, Isolate.pinToCurrentThread, Isolate.isPinnedToCurrentThread, Isolate.runEventLoopSync, Isolate.onEvent, and Isolate.handleEvent.

Breaking Changes and Deprecations

  • A minor change to type promotion avoids unsound behavior (SDK issue #62889).
  • NetworkInterface.addresses now returns List<InterfaceAddress> instead of List<InternetAddress>; code that overrides addresses must update its return type.
  • InternetAddress.lookup no longer accepts invalid IPv4 addresses traditionally accepted by inet_aton.

Tooling

The analyzer gains LSP support for Inline Values (textDocument/inlineValue) so IDEs and debuggers can render inline variable evaluations during debugging. Custom LSP methods expose Flutter Widget Preview metadata and let clients pair the Analysis Server with the Dart Tooling Daemon. Two new lints — no_raw_types and no_dynamic_casts — replace the older strict-raw-types and strict-casts options.

Upgrade

Set your SDK constraint to sdk: '^3.13.0' and update dependencies. The usual dart pub upgrade will pull the new SDK toolchain. Review the breaking changes above before upgrading, particularly the NetworkInterface.addresses return-type change if you work with network interfaces.

What is New?

By continuing to use the site, you agree to the use of cookies.