Skip to content

chore(deps): update dependency dart to 3.14 - #3251

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/dart-3.x
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/dart-3.x

Conversation

@renovate

@renovate renovate Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update Change
dart (source) uses-with minor 3.7 → 3.14

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

dart-lang/sdk (dart)

v3.14.0

Compare Source

Released on: Unreleased

Libraries
dart:ffi
  • Added NativeFinalizer.callback, which returns the finalization callback the
    finalizer was created with.
    For more details, see SDK issue #​63811
  • Added Abi.iosArm64e and Abi.macosArm64e for the arm64e architecture
    with pointer authentication on iOS and macOS.
    For more details, see SDK issue #​63420.
dart:io
  • Process spawning on Mac switched from fork-and-exec to posix_spawn.
    PATH resolution will now happen with the parent's PATH instead of the
    child's PATH. Using an absolute path for the executable argument to
    Process.start etc is recommended to avoid platform-specific differences.
dart:isolate
  • Breaking change: Unshipped the experimental synchronous execution and
    event loop control APIs (Isolate.runSync, Isolate.create,
    Isolate.shutdownSync, Isolate.pinToCurrentThread,
    Isolate.isPinnedToCurrentThread, Isolate.runEventLoopSync,
    Isolate.onEvent, and Isolate.handleEvent) that were accidentally exposed
    in Dart 3.13, and gated NativeCallable.isolateGroupBound behind the
    --experimental-shared-data VM flag.
    For more details, see SDK issue #​64285.
dart:typed_data
  • Breaking change: toString() on the SIMD value types Float32x4,
    Int32x4 and Float64x2 now returns 'V128' instead of a list of the lane
    values. The old per-lane output was inconsistent across platforms and was
    never specified. On the VM this also covers Error.safeToString and the
    values shown by the debugger and the VM service.
    For more details, see SDK issue #​63847
  • Breaking change: Float32x4.min, Float32x4.max, Float64x2.min, and
    Float64x2.max now follow IEEE 754 semantics across all platforms: if either
    lane is NaN, the result lane is NaN, and -0.0 is ordered below +0.0.
    For more details, see SDK issue #​63962.
  • Added rangeEquals extension methods on all integer typed data lists
    (Uint8List, Int8List, Uint8ClampedList, Uint16List, Int16List,
    Uint32List, Int32List, Uint64List, Int64List) and ByteData for
    efficient range equality comparisons.
    For more details, see SDK issue #​64095
  • Added the bit-wise negation operator ~ to Int32x4, which inverts every bit
    of every lane.
  • Added Int32x4.splat, which creates an Int32x4 with the same 32-bit integer
    value in all four lanes, matching Float32x4.splat and Float64x2.splat.
  • Added Int32x4.equal, a lane-wise equality comparison that returns -1 in
    each lane where the operands are equal and 0 elsewhere, and the
    Int32x4.anyTrue getter, which is true when any lane is non-zero.
  • Added Int32x4.notEqual, a lane-wise inequality comparison that returns -1
    in each lane where the operands differ and 0 elsewhere.
  • Added the Int32x4.allTrue getter, which is true only when every lane is
    non-zero.
  • Added the signed lane-wise ordered comparisons Int32x4.lessThan,
    Int32x4.lessThanOrEqual, Int32x4.greaterThan and
    Int32x4.greaterThanOrEqual, each returning -1 in lanes where the signed
    comparison holds and 0 elsewhere.
  • Added the Int32x4.zero() constructor, which creates an Int32x4 with all
    four lanes set to zero.
  • Added the unary negation operator - to Int32x4, which arithmetically
    negates each lane using two's complement.
  • Added Int32x4.abs, which replaces each lane with its absolute value using
    two's complement, so the absolute value of the minimum 32-bit integer yields
    itself.
  • Added the lane-wise shift operators << (left), >> (arithmetic right) and
    >>> (logical right) to Int32x4.
  • Added Int32x4.andNot, a lane-wise bit-wise and-not (this & ~other).
  • Added Int32x4.min, which selects the smaller of each pair of lanes,
    compared as signed 32-bit integers.
  • Added Int32x4.max, which selects the larger of each pair of lanes,
    compared as signed 32-bit integers.
dart:js_interop
  • The isA<JSArray> check now uses both Array.isArray and instanceof to
    verify if a value is an array; it is considered an array if either condition
    returns true.
    For more details, see SDK issue #​62699

  • Converting a Future to a JSPromise using FutureOfJSAnyToJSPromise.toJS
    or FutureOfVoidToJSPromise.toJS now passes JavaScript error
    values (JSAny) through directly to the rejected promise without
    wrapping them. Only Dart errors are wrapped in a JS Error.
    For more details, see SDK issue #​61353.

  • Added extension methods JSArray<JSNumber>.toDartDoubleList and
    JSArray<JSNumber>.toDartIntList (JSArrayOfJSNumberToList);
    List<num>.toJS (ListOfNumberToJSArray);
    JSArray<JSString>.toDartStringList (JSArrayOfJSStringToList);
    List<String>.toJS (ListOfStringToJSArray);
    JSArray<JSBoolean>.toDartBoolList (JSArrayOfJSBooleanToList);
    List<bool>.toJS (ListOfBoolToJSArray);
    JSArray<JSNumber?>.toDartDoubleList and JSArray<JSNumber?>.toDartIntList
    (JSArrayOfNullableJSNumberToList); List<num?>.toJS
    (ListOfNullableNumberToJSArray); JSArray<JSString?>.toDartStringList
    (JSArrayOfNullableJSStringToList); List<String?>.toJS
    (ListOfNullableStringToJSArray); JSArray<JSBoolean?>.toDartBoolList
    (JSArrayOfNullableJSBooleanToList); and List<bool?>.toJS
    (ListOfNullableBoolToJSArray). These make it easier and more efficient to
    convert between JS and Dart arrays of primitives.

  • Added JSFunction.length and .name getters.

  • Added the JSArray.fromAsync static method to create an array from an
    asynchronous generator or a synchronous list of asynchronous values.

  • Added JSPromise.resolve and JSPromise.reject static methods.

  • Added extension methods FutureOr<JSAny>.toJSPromiseOrValue
    (FutureOrToJSAny), FutureOr<JSAny?>.toJSPromiseOrValue
    (FutureOrToNullableJSAny), JSAny.toDartFutureOr (JSAnyToFutureOr), and
    JSAny?.toDartFutureOr (NullableJSAnyToFutureOr). These make it easier and
    more efficient to convert between possibly-synchronous values at the Dart/JS
    boundary.

  • Added extension methods R Function(JSArray<E>).toJSVarArgs and R Function(T, JSArray<E>).toJSCaptureThisVarArgs which capture JS function
    arguments as an array rather than as separate arguments to the Dart function.

  • Added the JSError type to represent the JavaScript Error class.

  • Function.toJS and Function.toJSCaptureThis now support functions without
    optional positional parameters that return Future<T> (where T is void or
    a subtype of JSAny?), automatically converting the returned Future to a
    JSPromise.
    For more details, see SDK issue #​63496.

  • external extension members can now be declared on generic type parameters
    bounded by a JS interop type (for example,
    extension <T extends JSObject> on T).
    For more details, see SDK issue #​61248.

dart:mirrors
  • The dart:mirrors library is now marked @deprecated, and will be removed
    in a future release. For details, see issue #​44489.
Tools
Analyzer
  • Report an error (js_interop_extension_constructor_js_annotation_has_no_effect)
    when an @JS annotation is placed on an external constructor or factory of a
    dart:js_interop extension type, matching the CFE. Move the @JS annotation to
    the extension type declaration itself to rename non-object literal constructors.
    For more details, see SDK issue #​54366.
Linter
  • Added the future_sync_value lint rule, which recommends using
    Future.syncValue instead of Future.sync when the callback returns a
    synchronous (non-Future) value.
    For more details, see SDK issue #​61740.
Dart CLI
  • dart run <package>:<command> and dart test now cache the precompiled
    executable in .dart_tool/dartdev/bin/ instead of .dart_tool/pub/bin/, and
    recompile it when any of its source files change. Previously the snapshot was
    rebuilt on every run for packages depended on by path, and could be stale for
    hosted packages with a path dependency_override.

  • When dart run <package>:<command> and dart test run a precompiled
    executable, Platform.script now points at the Dart source file instead of
    the kernel snapshot. Resolving paths relative to Platform.script now works
    as it does when running from source.

  • dart run --enable-experiment=<experiment> and
    dart test --enable-experiment=<experiment> now run from a snapshot compiled
    with those experiments, instead of falling back to running from source. The
    requested experiments still take effect, but startup is no longer slower than
    without them.

  • Added a dart migrate command, which updates packages to a newer Dart SDK
    version. It raises the lower bound of each package's SDK constraint one minor
    version at a time. For each version, it applies preparatory fixes and raises
    the constraint. Optional cleanup fixes that adopt new language features only
    run with --step=cleanup or --step=all. Migrates the current directory by
    default, or specific package directories if provided. Packages must already
    require Dart 3.0 or later.

    • --dry-run previews the proposed changes.
    • --apply applies the changes.
    • --target-sdk migrates across multiple versions in one run.
    • --step runs specific steps: prepare, bump, cleanup, or all.
    • Dependent packages migrate together in lockstep, keeping dependency
      constraints solvable at every version. A package is skipped if a dependency
      does not support the new version.

    For more details, see SDK issue #​63240.

  • Added -e / --eval to dart run to evaluate inline Dart code snippets
    without creating a script file. Package imports are resolved from the current
    package configuration if present, or ephemerally on demand using -P /
    --package-constraint (for example, dart run -P http:^1.0.0 -e '...') and
    --offline.
    For more details, see SDK issue #​64298.

Formatter
  • Enable experiments specified by surrounding analysis_options.yaml file when
    parsing code (#​1886).

  • Fix crash when formatting an enum with a primary constructor when trailing
    commas are preserved (#​1885).

  • Fix missing trailing comma on enum values when an enum has a primary
    constructor (#​1888). Note that this style change is not
    language-versioned and also applies when formatting Dart 3.13 code.

  • Fix crash when attempting to write a line with exactly 128 spaces of
    indentation.

Pub
  • dart pub upgrade now accepts <package>@<constraint>, <package>@latest,
    and <package>@resolvable targets to upgrade specific dependencies within a
    version constraint or inspect why a newer version cannot be selected
    (issue dart-lang/pub#4569).
dart2js
  • Added the --[no-]deprecated-js-interop flag (dart compile js and
    dart2js). Passing --no-deprecated-js-interop disallows importing the
    deprecated JS interop libraries (dart:html, dart:html_common,
    dart:indexed_db, dart:js, dart:js_util, dart:svg, dart:web_audio,
    and dart:web_gl) and sets their dart.library.* environment conditions to
    false in conditional imports and bool.fromEnvironment.
    For more details, see SDK issue #​63919.
Dart Development Compiler (dartdevc)
  • Added the --[no-]deprecated-js-interop flag. Passing
    --no-deprecated-js-interop disallows importing the deprecated JS interop
    libraries (dart:html, dart:html_common, dart:indexed_db, dart:js,
    dart:js_util, dart:svg, dart:web_audio, and dart:web_gl) and sets
    their dart.library.* environment conditions to false in conditional
    imports and bool.fromEnvironment.
    For more details, see SDK issue #​63919.
dart2wasm
  • dart2wasm now emits standardized WebAssembly try_table exception handling
    instructions by default (#​54394).
  • dart2wasm now requires native wasm:js-string built-in support and works
    around WebAssembly.compileStreaming bugs in Safari 26.5 and earlier
    (#​63543).
  • dart.library.isolate now evaluates to false in conditional imports
    (if (dart.library.isolate)) when compiling with dart2wasm (#​64328).
  • dart compile wasm --standalone no longer supports dart:js_interop.
  • Int32x4, Float32x4, Float64x2, and their typed-data list views
    (Int32x4List, Float32x4List, Float64x2List) now compile to hardware
    128-bit WebAssembly SIMD (v128) instructions (#​64170).

v3.13.7

Compare Source

Released on: 2026-10-22

This is a patch release that:

  • Uses the updatable Conscrypt APEX root certificate store on Android 14+ in
    dart:io, so that root CA additions and distrusts delivered via Google Play
    system updates are honored. (issue #​64696)
  • Updates BoringSSL to pick up upstream security fixes, including blocking a
    number of compromised intermediate certificates and X.509 path validation
    fixes. (issue #​568000)

v3.13.6

Compare Source

Released on: 2026-10-20

This is a patch release that:

  • Fixes an issue in dart2js codegen where a single Dart call was generating
    multiple calls in the compiled JS code. (issue [#​64410])

v3.13.5

Compare Source

Released on: 2026-09-29

This is a patch release that:

  • Fixes an issue in dart2wasm where tree-shaking (TFA) erroneously removed
    reachable methods containing static JS interop calls (issue #​64153).

v3.13.4

Compare Source

Released on: 2026-09-15

This is a patch release that:

  • Fixes crash during dart2js compilation when using --merge-fragments-threshold
    and --minify flags. (issue [#​64150])

v3.13.3

Compare Source

Released on: 2026-09-01

This is a patch release that:

  • Fixes an issue where Windows to Linux cross compilation
    produced incorrect executables if the applicatios used
    build hooks to link native code. (issue #​63953)

v3.13.2

Compare Source

Released on: 2026-08-25

This is a patch release that:

  • Fixes incorrect dart2wasm compilation of constructor invocations when
    the class was determined to be not allocatable. (issue #​63809)
  • Deprecates the legacy analyzer plugin system. (issue #​62164)
  • Fixes dart2js compiler crash when compiling code with
    nested constants in record_use. (issue #​64070)
  • Fixes a dart format crash and incorrect formatting with
    enums that use primary constructors.
    (issues dart-lang/dart_style#1885, dart-lang/dart_style#1888)

v3.13.1

Compare Source

Released on: 2026-08-18

This is a patch release that:

  • Fixes dart fix --apply --code=migrate_design_widgets to
    replace URIs in both import and export statements. (issue #​63968)
  • Fixes dart2wasm compiler crash in no-such-method forwarders.
    (issue #​63904)
  • Fixes dart2wasm compilation error if 3rd party Type implementations exist.
    (issue #​63843)
  • Fixes dart2wasm compiler crash if dynamic getter calls are used that
    target a getter implementation that was inferred to never return.
  • Fixes dart2wasm compiler crash if named parameters in hierarchy have
    mixed "required"-ness. (issue #​60583)
  • Fixes closure.hashCode sometimes returning null. (issue #​64035)

v3.13.0

Compare Source

Released on: 2026-08-12

Language

Dart 3.13 adds primary constructors to the language.
To use this feature, set your package's [SDK constraint][language version] lower
bound to 3.13 or greater (sdk: '^3.13.0').

Primary constructors

The primary constructors feature is a brevity feature. There are no new
semantics, but it lets you express declarations in a less verbose way.

This feature lets you specify one constructor and a set of instance variables
in the header of a declaration.

Currently, you write a declaration with a constructor and some fields as:

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

Now you can write:

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

If a primary constructor needs an initializer list, a body, or both,
you can 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');
  }
}

As part of this feature, you can also use the new and factory keywords to
declare constructors in the class body without repeating the class name:

class Point {
  int x, y;

  // Equivalent to `Point(this.x, this.y)`:
  new(this.x, this.y);

  // Equivalent to `Point.origin()`:
  new origin() : x = 0, y = 0;

  // Equivalent to `factory Point.clone(Point other)`:
  factory clone(Point other) => Point(other.x, other.y);
}

To learn more about the feature, check out the
feature specification.

Other changes
  • Breaking change: You can no longer use final or var on non-declaring
    parameters. Dart now reserves both for
    declaring parameters in primary constructors.
    Remove final or var from affected parameter declarations. If you still
    want to prevent parameter reassignment, you can use the
    parameter_assignments lint rule.
  • Breaking change: A minor change has been made to type promotion to avoid
    unsound behavior. See SDK issue #​62889 for details.
Libraries
dart:async
  • Added Future.pause as an alternative to Future.delayed with no callback.
dart:core
  • Added List.unmodifiableOf with better typing than List.unmodifiable.
  • Added Map.unmodifiableOf with better typing than Map.unmodifiable.
  • Added two getters on int for efficient bit-counting:
    trailingZeroBitCount (ctz) and oneBitCount (popcount). On native
    platforms they operate on the full 64-bit two's-complement
    representation; on the web they operate on the least-significant 32 bits.
    For more details, see SDK issue #​52673.
dart:io
  • The cookie-date parser now uses the correct algorithm again.
    A change to the parsing made it only accept the formats that
    cookie dates should have, but the RFC specifies a very
    permissive algorithm for what should be accepted.

  • Behavioral change: File access and modification timestamps
    (File.lastModified, FileStat, lastAccessed, lastModified,
    setLastAccessed, setLastModified) now preserve microsecond precision
    instead of truncating or rounding to millisecond accuracy. See SDK issue
    #​42444.

  • Breaking change:
    Added InterfaceAddress, a subtype of InternetAddress that exposes a
    prefixLength field and a broadcast getter for network interface addresses.
    NetworkInterface.addresses now returns List<InterfaceAddress>
    instead of List<InternetAddress>. Code that implements NetworkInterface
    and overrides addresses will need to update the return type.
    For more details, see SDK issue #​63216.

  • The InternetAddress.lookup function no longer accepts invalid
    IPv4 addresses that are traditionally accepted by inet_aton.

dart:isolate
  • Added synchronous execution and event loop control APIs to Isolate:
    Isolate.runSync, Isolate.create, Isolate.shutdownSync,
    Isolate.pinToCurrentThread, Isolate.isPinnedToCurrentThread,
    Isolate.runEventLoopSync, Isolate.onEvent, and Isolate.handleEvent.
dart:js_interop
  • JSFunction and JSExportedDartFunction are now generic.
    JSExportedDartFunction<T>.toDart now casts the original wrapped function to
    the type argument T. Calls to isA<JSExportedDartFunction<T>> now also
    check that the wrapped function is a T. Otherwise, this type argument is
    purely descriptive and intended for increased static type safety. Importantly,
    the runtime types of JSFunction and JSExportedDartFunction do not change.
    For more details, see SDK issue #​54557.
  • JSObject.getPrototypeOf is added.
Tools
Analyzer
  • Added LSP support for Inline Values (textDocument/inlineValue), allowing
    IDEs and debuggers to render inline variable evaluations during active
    debugging sessions.
  • Introduced custom LSP methods (dart/textDocument/getFlutterWidgetPreviews
    and dart/workspace/getFlutterWidgetPreviews) to serve Flutter Widget
    Preview metadata to editor clients.
  • Introduced custom LSP method dart/connectToDtd enabling language server
    clients to pair the Analysis Server with the Dart Tooling Daemon (DTD).
  • A no_raw_types lint rule is introduced, which replaces the
    strict-raw-types analysis option, offering a more consistent approach.
  • A no_dynamic_casts lint rule is introduced, which replaces the
    strict-casts analysis option, offering a more consistent approach.
  • The following lint rules have been determined to be low value, and are
    deprecated: avoid_private_typedef_functions, and one_member_abstracts.
    If there is desire to keep using these, they can be re-implemented with
    analyzer plugins.
Linter
  • Added new lint rules:
    • async_return_with_no_await: Warns on async functions returning a
      non-Future value without using await.
    • empty_container_bodies: Highlights empty bodies in classes, enums,
      mixins, or extensions.
    • initialize_in_field_declaration: Recommends initializing fields at their
      declaration site where applicable.
    • unnecessary_const_in_enum_constructor: Flags redundant const keywords
      in enum constructors.
    • unnecessary_primary_constructor_body: Flags unnecessary or empty bodies
      on primary constructors.
    • unnecessary_type_name_in_constructor: Flags redundant explicit type
      names in constructor declarations.
    • use_declaring_parameters: Encourages declaring parameters in primary
      constructors.
  • Added experimental lint rule use_primary_constructors to encourage
    adopting primary constructor syntax when Dart 3.13 primary constructor
    feature is enabled.
Formatter
  • Show the supported language versions when running
    dart format --version --verbose.
  • Don't crash if an analysis_options.yaml file has an include that points to
    a non-existent or unreadable file (dart_style #​1840).

The following minor style bug fixes are not language versioned and apply to all
formatted code:

  • Fix a bug in eager splitting optimization that in rare cases would lead to a
    collection or argument list splitting unnecessarily (dart_style #​1809).

  • Don't add a blank line before a comment at the end of a compilation unit or
    braced body (dart_style #​1644).

  • Format extension type representation clauses the same way primary constructor
    formal parameter lists are formatted.

  • When trailing commas are preserved, don't insert a newline before the ; in
    an enum with members unless there actually is a trailing comma.
    (Fix by @​Barbirosha.)

The following changes only apply when formatting code at language version 3.13
or higher:

Pub
  • Added dart pub workspace list command to list all packages in the
    workspace along with their directory paths, with support for JSON output via
    --json.
  • Added dart pub check-resolution-up-to-date internal command for fast
    timestamp-based package resolution validation without contacting remote
    servers.
  • Added dart pub cache preload command for installing packages into
    PUB_CACHE directly from .tar.gz archives.
Dart CLI
  • Added support for cross-compilation to the dart build cli command via the
    --target-os and --target-arch flags.
  • Both dart build and dart compile now support using locally-built target
    binaries from a local SDK build directory (identifiable by the presence of a
    build.ninja file), avoiding the need to download them from Google Cloud
    Storage.
Dart Runtime
  • Built-in fallback root certificates used if the system certificates cannot be
    found are no longer included. The existing --root-certs-file and
    --root-certs-cache options to the standalone VM may be used to provide
    certificates if the system certificates cannot be found.
C Embedder API
  • Breaking change: Updated Dart_FileModifiedCallback in
    runtime/include/dart_tools_api.h to pass int64_t since in microseconds
    since epoch (matching FileStat microsecond precision), updated from
    milliseconds.
  • Added Dart_SetCurrentThreadOwnsIsolate and
    Dart_GetCurrentThreadOwnsIsolate functions in runtime/include/dart_api.h
    (and dart_api_dl.h), allowing custom embedders to bind and query isolate
    thread ownership.

v3.12.2

Compare Source

Released on: 2026-06-09

This is a patch release that:

  • Fixes a crash bug in dart format if an analysis_options.yaml file has an
    include that points to a non-existent file (issue #​1840).

v3.12.1

Compare Source

Released on: 2026-05-26

This is a patch release that:

  • Fixes a bug ThreadLocal which manifests as some static fields in dart:*
    libraries being reset across suspension points, e.g. print() bypasses
    an override specified by the current Zone after suspension.
    (issue #​63408)
  • Fixes sporadic dart analyze crash on Windows ARM64, where analysis server
    crashes on shutdown trying to delete perf_witness control socket.
    (issue #​63343)

v3.12.0

Compare Source

Released on: 2026-05-20

Language
Private named parameters

Dart now supports private named parameters. Before 3.12, it was an error to
have a named parameter that starts with an underscore:

class Point {
  final int _x, _y;
  // Compile error in Dart 3.11.
  Point({required this._x, required this._y});
}

This means that, before 3.12, initializing a private field from
a named parameter required an explicit initializer list:

class Point {
  final int _x, _y;
  Point({required int x, required int y})
    : _x = x,
      _y = y;
}

All the initializer list is doing is removing the leading _.
In Dart 3.12, the language does that for you. Now you can write:

class Point {
  final int _x, _y; // Private fields.
  Point({required this._x, required this._y});
}

This code behaves exactly like the previous example. The initialized fields are
private, but the argument names written at the call site are public:

void main() {
  print(Point(x: 1, y: 2));
}
Libraries
dart:core
  • The Dart VM's RegExp implementation now supports
    modifier spans and duplicate named capture groups.
dart:js_interop
  • Breaking change in extension name of isA: isA is moved from
    JSAnyUtilityExtension to NullableObjectUtilExtension to support
    type-checking any Object?. isA<JSObject>() also now handles JS objects
    with no prototypes correctly and isA<JSAny>() does a non-trivial check to
    make sure the value is a JS value. See #​56905 for more details. As
    JSAnyUtilityExtension is on JSAny? and NullableObjectUtilExtension is on
    the supertype Object?, this change is only breaking if users referred to the
    extension name directly, either through applying the extension directly or
    through using show/hide directives.

  • isA<JSExportedDartFunction>() now checks whether the function is
    actually a JS wrapper function that is returned from
    Function.toJS or Function.toJSCaptureThis.

  • Added JSIterableProtocol, JSIterable, JSIteratorProtocol, JSIterator,
    and JSIteratorResult types to model JavaScript's iteration protocols.
    JSArray and JSString now implement JSIterable.

  • Added extension types to provide Iterable.toJSIterable,
    JSIterable.toDartIterable, Iterator.toJSIterator, and
    JSIterator.toDartIterator.

Tools
Analyzer
  • The new simple_directive_paths lint and its associated fix
    flag and simplify unnecessarily complex import and export paths,
    such as those containing redundant ./ or backtracking ../ segments.

    Use dart fix --code=simple_directive_paths (with either --dry-run or
    --apply) to bulk fix existing lint violations.

  • The prefer_initializing_formals lint rule highlights named parameters
    that could be private named parameters.

    Use dart fix --code=prefer_initializing_formals (with either --dry-run or
    --apply) to bulk fix existing lint violations.

  • Violations of the avoid_final_parameters lint can now be
    fixed with dart fix --code=avoid_final_parameters.

  • The analyzer now warns when a function that contains a
    parameter annotated with @mustBeConst is torn off.

  • The invalid_runtime_check_with_js_interop_types rule now checks for JS
    interop types used in a catch clause's on-type and instructs users to
    use isA for type checks instead.

  • Analyzer plugins: Initial support for 'print debugging' via new sections in
    the "Plugins" Insights (Diagnostics) page. When a plugin is computing lint
    and warning diagnostics, print calls are now redirected to the analysis
    server, which presents the messages in the appropriate plugin's section on
    the Plugins page.

  • Improved support for extension types in many existing lint rules.

  • Improved support for null-aware elements in existing lint rules.

  • The analysis server starts up faster with the help of improved analysis
    options file caching. The improvement depends on the number of analysis
    options files in the workspace, and the number of included analysis options
    files. The improvement is greater for systems with slower disk access.

  • Various other improvements to analysis performance.

Pub
  • dart pub cache repair now, by default, only repairs the
    packages referenced by the current project's pubspec.lock file.
    For the old behavior of repairing all packages, use the --all flag.
  • dart pub add and dart pub unpack now accept @ as an alternative to :
    for separating a package name from its version constraint.
  • Git dependencies now support Git Large File Storage (LFS).
Dart CLI
  • Added support for running remote package executables directly using the
    dart run <package>@<descriptor> syntax (#​62123). This enables dynamic
    execution of remote tools (similar to npx in Node) without requiring explicit
    installation or activation via dart pub global activate.
dart2wasm
  • Updated deferred loading module loader API to allow batched fetching of
    deferred modules. The embedder now takes loadDeferredModules instead of
    loadDeferredModule where the new function should now expect an array of
    module names rather than individual module names. All the module loading
    functions must now also accept an instantiator callback to which they
    should pass the loaded results.
dart2js
  • JSExportedDartFunction.toDart sometimes incorrectly returned the original
    Dart function even if the wrapper JS function was cast from a call to the
    deprecated allowInterop. Instead, to be consistent with DDC and dart2wasm,
    it now throws if the wrapper JS function wasn't a result of Function.toJS or
    Function.toJSCaptureThis.

v3.11.6

Compare Source

Released on: 2026-05-05

This is a patch release that:

  • Fixes a bug causing network profiling to stop working in certain situations.
    (issue [#​63156]).

v3.11.5

Compare Source

Released on: 2026-04-15

This is a patch release that:

  • Fixes an issue with the Dart MCP server and latest AntiGravity. (issue
    dart-lang/ai#439)

v3.11.4

Compare Source

Released on: 2026-03-24

This is a patch release that:

  • Fixes a bug causing the analyzer and analysis server to crash when calling a
    dot shorthand function expression invocation. (issue dart-lang/sdk#62595)

v3.11.3

Compare Source

Released on: 2026-03-17

This is a patch release that:

  • Fixes a bug causing Dart & Flutter DevTools to crash when using the skwasm renderer.
    (issue flutter/devtools#9701).

v3.11.2

Compare Source

Released on: 2026-03-10

This is a patch release that:

  • Fixes a bug in pub's support tag_pattern git dependencies that prevented it to
    load lightweight tags (as opposed to annotated tags).
    (issue dart-lang/pub#4756).

v3.11.1

Compare Source

Released on: 2026-02-24

This is a patch release that:

  • Fixes a performance issue in the Dart Analysis Server when analyzing a workspace with many files (issue #​62456)
  • Fixes a performance issue in the Dart Analysis Server when analyzing a workspace with many directories (issue #​62456)

v3.11.0

Compare Source

Released on: 2026-02-11

Language

There are no language changes in this release.

Libraries
dart:io
  • Added support for Unix domain sockets (AF_UNIX) on Windows. Support is
    restricted to the subset of features supported by the OS. Windows currently
    does not support the following features for AF_UNIX sockets: datagram
    sockets, ancillary data or abstract socket addresses. Unix domain sockets are
    represented in the file-system using reparse points which leads to some
    discrepancies in the behavior of dart:io APIs: for example
    File(socketPath).existsSync() will return true on POSIX operating systems,
    but false on Windows. Use FileSystemEntity.typeSync() instead to get
    portable behavior.
dart:js_interop
  • Added a constructor to JSSymbol, as well as JSSymbol.key,
    JSSymbol.description, and static methods for all well-known ECMAScript
    symbols.
dart:js_util
  • dart2wasm no longer supports dart:js_util. Any code that imports
    dart:js_util will no longer compile with dart2wasm. Consequently, code that
    depends on package:js will no longer compile with dart2wasm either. The name
    dart.library.js_util is no longer a key in dart2wasm compilation
    environments, including in conditional imports and exports.
    See #​61550 for more details.
Tools
Analyzer
  • The Insights pages (aka the "Analysis Server Diagnostics" pages) now show
    data regarding the "Message Scheduler."
  • The "Fix all in workspace" command now supports a progress indicator.
  • Analysis via analyzer plugins is now faster on subsequent runs, as the
    analysis server will now re-use an existing AOT snapshot of the plugins
    entrypoint. This saves a constant amount of time at the start of each IDE
    session and dart analyze run, on the order of 10 seconds.
  • Various fixes are made for the call method on a Function object, like "go
    to definition," and completion.
  • Various fixes are made for the error and stackTrace parameters of
    try/catch statements.
  • Various fixes are made for syntax highlighting, navigation, code completion,
    hovers, quick fixes, assists, "rename" refactoring, and "go to imports."
  • Various fixes for IDE features with regards to "Dot Shorthand" syntax.
  • Improvements to LSP format-on-type, to not format in undesirable cases.
  • Various performance improvements.
  • Fixes to the 'Extract Widget' refactoring.
  • (Thanks @​FMorschel and
    @​DanTup for many of the above enhancements!)
  • A new lint rule is offered: simplify_variable_pattern, which encourages
    using the pattern shorthand for variables and property names of the same
    name.
  • The avoid_null_checks_in_equality_operators lint rule is now deprecated.
  • The prefer_final_parameters lint rule is now deprecated.
  • The use_if_null_to_convert_nulls_to_bools lint rule is now deprecated.
Dart Development Compiler (dartdevc)
  • The async timing of the Future returned by deferred_prefix.loadLibrary()
    is now consistent regardless if proper deferred imports are supported in the
    runtime environment or not. This makes the timing more consistent with dart2js
    where the loads are always an async operation.
Pub
  • "Glob" support for pub workspaces.

    Now to include all packages inside pkgs/ in the workspace, simply write:

    workspace:
      - pkgs/*

    Supported if the Dart SDK constraint of the containing package is 3.11.0 or
    higher.

  • New command dart pub cache gc for reclaiming disk space from your pub
    cache.

    It works by removing packages from your pub cache that are not referenced by
    any of your current projects.

  • New flag dart pub publish --dry-run --ignore-warnings

    Given this flag, dart pub publish --dry-run will only exit non-zero if your
    project validation has errors.

  • dart pub cache repair now by default only repairs the packages referenced
    by the current projects pubspec.lock. For the old behavior of repairing all
    packages use the --all flag.

v3.10.9

Compare Source

Released on: 2026-02-03

This is a patch release that:

  • Fixes a bug that allowed users to access private declarations in other
    libraries with dot shorthands. (issue dart-lang/sdk#62504)

v3.10.8

Compare Source

Released on: 2026-01-27

This is a patch release that:

  • Removes code completion of private declarations in other libraries for dot
    shorthands. (issue dart-lang/sdk#62416)

v3.10.7

Compare Source

Released on: 2025-12-23

This is a patch release that:

v3.10.6

Compare Source

Released on: 2025-12-16

This is a patch release th

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/dart-3.x branch from 3dfc262 to a6045ce Compare September 16, 2026 18:06
@renovate renovate Bot changed the title chore(deps): update dependency dart to v3.13.4 chore(deps): update dependency dart to 3.13 Sep 16, 2026
@renovate
renovate Bot force-pushed the renovate/dart-3.x branch from a6045ce to 06a1b4f Compare October 13, 2026 14:08
@renovate
renovate Bot force-pushed the renovate/dart-3.x branch from 06a1b4f to f9f8e77 Compare November 11, 2026 16:55
@renovate renovate Bot changed the title chore(deps): update dependency dart to 3.13 chore(deps): update dependency dart to 3.14 Nov 11, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants