Repository navigation
chore(deps): update dependency dart to 3.14 - #3251
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/dart-3.x
branch
from
September 16, 2026 18:06
3dfc262 to
a6045ce
Compare
renovate
Bot
force-pushed
the
renovate/dart-3.x
branch
from
October 13, 2026 14:08
a6045ce to
06a1b4f
Compare
renovate
Bot
force-pushed
the
renovate/dart-3.x
branch
from
November 11, 2026 16:55
06a1b4f to
f9f8e77
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
3.7→3.14Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
dart-lang/sdk (dart)
v3.14.0Compare Source
Released on: Unreleased
Libraries
dart:ffiNativeFinalizer.callback, which returns the finalization callback thefinalizer was created with.
For more details, see SDK issue #63811
Abi.iosArm64eandAbi.macosArm64efor thearm64earchitecturewith pointer authentication on iOS and macOS.
For more details, see SDK issue #63420.
dart:iofork-and-exectoposix_spawn.PATHresolution will now happen with the parent'sPATHinstead of thechild's
PATH. Using an absolute path for theexecutableargument toProcess.startetc is recommended to avoid platform-specific differences.dart:isolateevent loop control APIs (
Isolate.runSync,Isolate.create,Isolate.shutdownSync,Isolate.pinToCurrentThread,Isolate.isPinnedToCurrentThread,Isolate.runEventLoopSync,Isolate.onEvent, andIsolate.handleEvent) that were accidentally exposedin Dart 3.13, and gated
NativeCallable.isolateGroupBoundbehind the--experimental-shared-dataVM flag.For more details, see SDK issue #64285.
dart:typed_datatoString()on the SIMD value typesFloat32x4,Int32x4andFloat64x2now returns'V128'instead of a list of the lanevalues. The old per-lane output was inconsistent across platforms and was
never specified. On the VM this also covers
Error.safeToStringand thevalues shown by the debugger and the VM service.
For more details, see SDK issue #63847
Float32x4.min,Float32x4.max,Float64x2.min, andFloat64x2.maxnow follow IEEE 754 semantics across all platforms: if eitherlane is
NaN, the result lane isNaN, and-0.0is ordered below+0.0.For more details, see SDK issue #63962.
rangeEqualsextension methods on all integer typed data lists(
Uint8List,Int8List,Uint8ClampedList,Uint16List,Int16List,Uint32List,Int32List,Uint64List,Int64List) andByteDataforefficient range equality comparisons.
For more details, see SDK issue #64095
~toInt32x4, which inverts every bitof every lane.
Int32x4.splat, which creates anInt32x4with the same 32-bit integervalue in all four lanes, matching
Float32x4.splatandFloat64x2.splat.Int32x4.equal, a lane-wise equality comparison that returns-1ineach lane where the operands are equal and
0elsewhere, and theInt32x4.anyTruegetter, which istruewhen any lane is non-zero.Int32x4.notEqual, a lane-wise inequality comparison that returns-1in each lane where the operands differ and
0elsewhere.Int32x4.allTruegetter, which istrueonly when every lane isnon-zero.
Int32x4.lessThan,Int32x4.lessThanOrEqual,Int32x4.greaterThanandInt32x4.greaterThanOrEqual, each returning-1in lanes where the signedcomparison holds and
0elsewhere.Int32x4.zero()constructor, which creates anInt32x4with allfour lanes set to zero.
-toInt32x4, which arithmeticallynegates each lane using two's complement.
Int32x4.abs, which replaces each lane with its absolute value usingtwo's complement, so the absolute value of the minimum 32-bit integer yields
itself.
<<(left),>>(arithmetic right) and>>>(logical right) toInt32x4.Int32x4.andNot, a lane-wise bit-wise and-not (this & ~other).Int32x4.min, which selects the smaller of each pair of lanes,compared as signed 32-bit integers.
Int32x4.max, which selects the larger of each pair of lanes,compared as signed 32-bit integers.
dart:js_interopThe
isA<JSArray>check now uses bothArray.isArrayandinstanceoftoverify 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
Futureto aJSPromiseusingFutureOfJSAnyToJSPromise.toJSor
FutureOfVoidToJSPromise.toJSnow passes JavaScript errorvalues (
JSAny) through directly to the rejected promise withoutwrapping them. Only Dart errors are wrapped in a JS
Error.For more details, see SDK issue #61353.
Added extension methods
JSArray<JSNumber>.toDartDoubleListandJSArray<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?>.toDartDoubleListandJSArray<JSNumber?>.toDartIntList(
JSArrayOfNullableJSNumberToList);List<num?>.toJS(
ListOfNullableNumberToJSArray);JSArray<JSString?>.toDartStringList(
JSArrayOfNullableJSStringToList);List<String?>.toJS(
ListOfNullableStringToJSArray);JSArray<JSBoolean?>.toDartBoolList(
JSArrayOfNullableJSBooleanToList); andList<bool?>.toJS(
ListOfNullableBoolToJSArray). These make it easier and more efficient toconvert between JS and Dart arrays of primitives.
Added
JSFunction.lengthand.namegetters.Added the
JSArray.fromAsyncstatic method to create an array from anasynchronous generator or a synchronous list of asynchronous values.
Added
JSPromise.resolveandJSPromise.rejectstatic methods.Added extension methods
FutureOr<JSAny>.toJSPromiseOrValue(
FutureOrToJSAny),FutureOr<JSAny?>.toJSPromiseOrValue(
FutureOrToNullableJSAny),JSAny.toDartFutureOr(JSAnyToFutureOr), andJSAny?.toDartFutureOr(NullableJSAnyToFutureOr). These make it easier andmore efficient to convert between possibly-synchronous values at the Dart/JS
boundary.
Added extension methods
R Function(JSArray<E>).toJSVarArgsandR Function(T, JSArray<E>).toJSCaptureThisVarArgswhich capture JS functionarguments as an array rather than as separate arguments to the Dart function.
Added the
JSErrortype to represent the JavaScriptErrorclass.Function.toJSandFunction.toJSCaptureThisnow support functions withoutoptional positional parameters that return
Future<T>(whereTisvoidora subtype of
JSAny?), automatically converting the returnedFutureto aJSPromise.For more details, see SDK issue #63496.
externalextension members can now be declared on generic type parametersbounded by a JS interop type (for example,
extension <T extends JSObject> on T).For more details, see SDK issue #61248.
dart:mirrorsdart:mirrorslibrary is now marked@deprecated, and will be removedin a future release. For details, see issue #44489.
Tools
Analyzer
js_interop_extension_constructor_js_annotation_has_no_effect)when an
@JSannotation is placed on anexternalconstructor or factory of adart:js_interopextension type, matching the CFE. Move the@JSannotation tothe extension type declaration itself to rename non-object literal constructors.
For more details, see SDK issue #54366.
Linter
future_sync_valuelint rule, which recommends usingFuture.syncValueinstead ofFuture.syncwhen the callback returns asynchronous (non-
Future) value.For more details, see SDK issue #61740.
Dart CLI
dart run <package>:<command>anddart testnow cache the precompiledexecutable in
.dart_tool/dartdev/bin/instead of.dart_tool/pub/bin/, andrecompile 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>anddart testrun a precompiledexecutable,
Platform.scriptnow points at the Dart source file instead ofthe kernel snapshot. Resolving paths relative to
Platform.scriptnow worksas it does when running from source.
dart run --enable-experiment=<experiment>anddart test --enable-experiment=<experiment>now run from a snapshot compiledwith 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 migratecommand, which updates packages to a newer Dart SDKversion. 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=cleanupor--step=all. Migrates the current directory bydefault, or specific package directories if provided. Packages must already
require Dart 3.0 or later.
--dry-runpreviews the proposed changes.--applyapplies the changes.--target-sdkmigrates across multiple versions in one run.--stepruns specific steps:prepare,bump,cleanup, orall.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/--evaltodart runto evaluate inline Dart code snippetswithout 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.yamlfile whenparsing 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 upgradenow accepts<package>@<constraint>,<package>@latest,and
<package>@resolvabletargets to upgrade specific dependencies within aversion constraint or inspect why a newer version cannot be selected
(issue dart-lang/pub#4569).
dart2js
--[no-]deprecated-js-interopflag (dart compile jsanddart2js). Passing--no-deprecated-js-interopdisallows importing thedeprecated 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 theirdart.library.*environment conditions tofalsein conditional imports andbool.fromEnvironment.For more details, see SDK issue #63919.
Dart Development Compiler (dartdevc)
--[no-]deprecated-js-interopflag. Passing--no-deprecated-js-interopdisallows importing the deprecated JS interoplibraries (
dart:html,dart:html_common,dart:indexed_db,dart:js,dart:js_util,dart:svg,dart:web_audio, anddart:web_gl) and setstheir
dart.library.*environment conditions tofalsein conditionalimports and
bool.fromEnvironment.For more details, see SDK issue #63919.
dart2wasm
dart2wasmnow emits standardized WebAssemblytry_tableexception handlinginstructions by default (#54394).
dart2wasmnow requires nativewasm:js-stringbuilt-in support and worksaround
WebAssembly.compileStreamingbugs in Safari 26.5 and earlier(#63543).
dart.library.isolatenow evaluates tofalsein conditional imports(
if (dart.library.isolate)) when compiling withdart2wasm(#64328).dart compile wasm --standaloneno longer supportsdart:js_interop.Int32x4,Float32x4,Float64x2, and their typed-data list views(
Int32x4List,Float32x4List,Float64x2List) now compile to hardware128-bit WebAssembly SIMD (
v128) instructions (#64170).v3.13.7Compare Source
Released on: 2026-10-22
This is a patch release that:
dart:io, so that root CA additions and distrusts delivered via Google Playsystem updates are honored. (issue #64696)
number of compromised intermediate certificates and X.509 path validation
fixes. (issue #568000)
v3.13.6Compare Source
Released on: 2026-10-20
This is a patch release that:
multiple calls in the compiled JS code. (issue [#64410])
v3.13.5Compare Source
Released on: 2026-09-29
This is a patch release that:
reachable methods containing static JS interop calls (issue #64153).
v3.13.4Compare Source
Released on: 2026-09-15
This is a patch release that:
and --minify flags. (issue [#64150])
v3.13.3Compare Source
Released on: 2026-09-01
This is a patch release that:
produced incorrect executables if the applicatios used
build hooks to link native code. (issue #63953)
v3.13.2Compare Source
Released on: 2026-08-25
This is a patch release that:
the class was determined to be not allocatable. (issue #63809)
nested constants in
record_use. (issue #64070)dart formatcrash and incorrect formatting withenums that use primary constructors.
(issues dart-lang/dart_style#1885, dart-lang/dart_style#1888)
v3.13.1Compare Source
Released on: 2026-08-18
This is a patch release that:
dart fix --apply --code=migrate_design_widgetstoreplace URIs in both import and export statements. (issue #63968)
(issue #63904)
Typeimplementations exist.(issue #63843)
target a getter implementation that was inferred to never return.
mixed "required"-ness. (issue #60583)
closure.hashCodesometimes returningnull. (issue #64035)v3.13.0Compare 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:
Now you can write:
If a primary constructor needs an initializer list, a body, or both,
you can specify them inside the class using the
thisbody syntax:As part of this feature, you can also use the
newandfactorykeywords todeclare constructors in the class body without repeating the class name:
To learn more about the feature, check out the
feature specification.
Other changes
finalorvaron non-declaringparameters. Dart now reserves both for
declaring parameters in primary constructors.
Remove
finalorvarfrom affected parameter declarations. If you stillwant to prevent parameter reassignment, you can use the
parameter_assignmentslint rule.unsound behavior. See SDK issue #62889 for details.
Libraries
dart:asyncFuture.pauseas an alternative toFuture.delayedwith no callback.dart:coreList.unmodifiableOfwith better typing thanList.unmodifiable.Map.unmodifiableOfwith better typing thanMap.unmodifiable.intfor efficient bit-counting:trailingZeroBitCount(ctz) andoneBitCount(popcount). On nativeplatforms 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:ioThe 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 precisioninstead of truncating or rounding to millisecond accuracy. See SDK issue
#42444.
Breaking change:
Added
InterfaceAddress, a subtype ofInternetAddressthat exposes aprefixLengthfield and abroadcastgetter for network interface addresses.NetworkInterface.addressesnow returnsList<InterfaceAddress>instead of
List<InternetAddress>. Code that implementsNetworkInterfaceand overrides
addresseswill need to update the return type.For more details, see SDK issue #63216.
The
InternetAddress.lookupfunction no longer accepts invalidIPv4 addresses that are traditionally accepted by
inet_aton.dart:isolateIsolate:Isolate.runSync,Isolate.create,Isolate.shutdownSync,Isolate.pinToCurrentThread,Isolate.isPinnedToCurrentThread,Isolate.runEventLoopSync,Isolate.onEvent, andIsolate.handleEvent.dart:js_interopJSFunctionandJSExportedDartFunctionare now generic.JSExportedDartFunction<T>.toDartnow casts the original wrapped function tothe type argument
T. Calls toisA<JSExportedDartFunction<T>>now alsocheck that the wrapped function is a
T. Otherwise, this type argument ispurely descriptive and intended for increased static type safety. Importantly,
the runtime types of
JSFunctionandJSExportedDartFunctiondo not change.For more details, see SDK issue #54557.
JSObject.getPrototypeOfis added.Tools
Analyzer
textDocument/inlineValue), allowingIDEs and debuggers to render inline variable evaluations during active
debugging sessions.
dart/textDocument/getFlutterWidgetPreviewsand
dart/workspace/getFlutterWidgetPreviews) to serve Flutter WidgetPreview metadata to editor clients.
dart/connectToDtdenabling language serverclients to pair the Analysis Server with the Dart Tooling Daemon (DTD).
no_raw_typeslint rule is introduced, which replaces thestrict-raw-typesanalysis option, offering a more consistent approach.no_dynamic_castslint rule is introduced, which replaces thestrict-castsanalysis option, offering a more consistent approach.deprecated:
avoid_private_typedef_functions, andone_member_abstracts.If there is desire to keep using these, they can be re-implemented with
analyzer plugins.
Linter
async_return_with_no_await: Warns onasyncfunctions returning anon-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 theirdeclaration site where applicable.
unnecessary_const_in_enum_constructor: Flags redundantconstkeywordsin enum constructors.
unnecessary_primary_constructor_body: Flags unnecessary or empty bodieson primary constructors.
unnecessary_type_name_in_constructor: Flags redundant explicit typenames in constructor declarations.
use_declaring_parameters: Encourages declaring parameters in primaryconstructors.
use_primary_constructorsto encourageadopting primary constructor syntax when Dart 3.13 primary constructor
feature is enabled.
Formatter
dart format --version --verbose.analysis_options.yamlfile has anincludethat points toa 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
;inan 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:
Write a trailing comma in split extension type representation clauses when
formatting code at language version 3.13 or higher (dart_style #1845).
Fix a bug in an eager splitting optimization that would led the formatter to
prefer less desirable solutions (dart_style #1847).
Prefer to split call chains for single-element targets (dart_style #1732).
Allow block formatting parameter lists (dart_style #1693).
Allow
as,is, andis!expressions to be block formatted(dart_style #1542).
Separate imports into sections (dart_style #1120).
In if-case pieces, split the guard if the pattern block-splits
(dart_style #1596).
When no solution fits the page width, prefer solutions where the overflowing
lines have trailing string literals or comments (dart_style #1802,
dart_style #1803, dart_style #1837).
Force blank lines around a mixin or extension type declaration if it doesn't
have a
;body.Pub
dart pub workspace listcommand to list all packages in theworkspace along with their directory paths, with support for JSON output via
--json.dart pub check-resolution-up-to-dateinternal command for fasttimestamp-based package resolution validation without contacting remote
servers.
dart pub cache preloadcommand for installing packages intoPUB_CACHEdirectly from.tar.gzarchives.Dart CLI
dart build clicommand via the--target-osand--target-archflags.dart buildanddart compilenow support using locally-built targetbinaries from a local SDK build directory (identifiable by the presence of a
build.ninjafile), avoiding the need to download them from Google CloudStorage.
Dart Runtime
found are no longer included. The existing
--root-certs-fileand--root-certs-cacheoptions to the standalone VM may be used to providecertificates if the system certificates cannot be found.
C Embedder API
Dart_FileModifiedCallbackinruntime/include/dart_tools_api.hto passint64_t sincein microsecondssince epoch (matching
FileStatmicrosecond precision), updated frommilliseconds.
Dart_SetCurrentThreadOwnsIsolateandDart_GetCurrentThreadOwnsIsolatefunctions inruntime/include/dart_api.h(and
dart_api_dl.h), allowing custom embedders to bind and query isolatethread ownership.
v3.12.2Compare Source
Released on: 2026-06-09
This is a patch release that:
dart formatif ananalysis_options.yamlfile has aninclude that points to a non-existent file (issue #1840).
v3.12.1Compare Source
Released on: 2026-05-26
This is a patch release that:
ThreadLocalwhich manifests as some static fields indart:*libraries being reset across suspension points, e.g.
print()bypassesan override specified by the current
Zoneafter suspension.(issue #63408)
dart analyzecrash on Windows ARM64, where analysis servercrashes on shutdown trying to delete perf_witness control socket.
(issue #63343)
v3.12.0Compare 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:
This means that, before 3.12, initializing a private field from
a named parameter required an explicit initializer list:
All the initializer list is doing is removing the leading
_.In Dart 3.12, the language does that for you. Now you can write:
This code behaves exactly like the previous example. The initialized fields are
private, but the argument names written at the call site are public:
Libraries
dart:coreRegExpimplementation now supportsmodifier spans and duplicate named capture groups.
dart:js_interopBreaking change in extension name of
isA:isAis moved fromJSAnyUtilityExtensiontoNullableObjectUtilExtensionto supporttype-checking any
Object?.isA<JSObject>()also now handles JS objectswith no prototypes correctly and
isA<JSAny>()does a non-trivial check tomake sure the value is a JS value. See #56905 for more details. As
JSAnyUtilityExtensionis onJSAny?andNullableObjectUtilExtensionis onthe supertype
Object?, this change is only breaking if users referred to theextension name directly, either through applying the extension directly or
through using
show/hidedirectives.isA<JSExportedDartFunction>()now checks whether the function isactually a JS wrapper function that is returned from
Function.toJSorFunction.toJSCaptureThis.Added
JSIterableProtocol,JSIterable,JSIteratorProtocol,JSIterator,and
JSIteratorResulttypes to model JavaScript's iteration protocols.JSArrayandJSStringnow implementJSIterable.Added extension types to provide
Iterable.toJSIterable,JSIterable.toDartIterable,Iterator.toJSIterator, andJSIterator.toDartIterator.Tools
Analyzer
The new
simple_directive_pathslint and its associated fixflag and simplify unnecessarily complex
importandexportpaths,such as those containing redundant
./or backtracking../segments.Use
dart fix --code=simple_directive_paths(with either--dry-runor--apply) to bulk fix existing lint violations.The
prefer_initializing_formalslint rule highlights named parametersthat could be private named parameters.
Use
dart fix --code=prefer_initializing_formals(with either--dry-runor--apply) to bulk fix existing lint violations.Violations of the
avoid_final_parameterslint can now befixed with
dart fix --code=avoid_final_parameters.The analyzer now warns when a function that contains a
parameter annotated with
@mustBeConstis torn off.The
invalid_runtime_check_with_js_interop_typesrule now checks for JSinterop types used in a catch clause's on-type and instructs users to
use
isAfor 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,
printcalls are now redirected to the analysisserver, 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 optionsfiles. The improvement is greater for systems with slower disk access.
Various other improvements to analysis performance.
Pub
dart pub cache repairnow, by default, only repairs thepackages referenced by the current project's
pubspec.lockfile.For the old behavior of repairing all packages, use the
--allflag.dart pub addanddart pub unpacknow accept@as an alternative to:for separating a package name from its version constraint.
Dart CLI
dart run <package>@<descriptor>syntax (#62123). This enables dynamicexecution of remote tools (similar to
npxin Node) without requiring explicitinstallation or activation via
dart pub global activate.dart2wasm
deferred modules. The embedder now takes
loadDeferredModulesinstead ofloadDeferredModulewhere the new function should now expect an array ofmodule names rather than individual module names. All the module loading
functions must now also accept an
instantiatorcallback to which theyshould pass the loaded results.
dart2js
JSExportedDartFunction.toDartsometimes incorrectly returned the originalDart 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.toJSorFunction.toJSCaptureThis.v3.11.6Compare Source
Released on: 2026-05-05
This is a patch release that:
(issue [#63156]).
v3.11.5Compare Source
Released on: 2026-04-15
This is a patch release that:
dart-lang/ai#439)
v3.11.4Compare Source
Released on: 2026-03-24
This is a patch release that:
dot shorthand function expression invocation. (issue dart-lang/sdk#62595)
v3.11.3Compare Source
Released on: 2026-03-17
This is a patch release that:
(issue flutter/devtools#9701).
v3.11.2Compare Source
Released on: 2026-03-10
This is a patch release that:
load lightweight tags (as opposed to annotated tags).
(issue dart-lang/pub#4756).
v3.11.1Compare Source
Released on: 2026-02-24
This is a patch release that:
v3.11.0Compare Source
Released on: 2026-02-11
Language
There are no language changes in this release.
Libraries
dart:ioAF_UNIX) on Windows. Support isrestricted to the subset of features supported by the OS. Windows currently
does not support the following features for
AF_UNIXsockets: datagramsockets, 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:ioAPIs: for exampleFile(socketPath).existsSync()will returntrueon POSIX operating systems,but
falseon Windows. UseFileSystemEntity.typeSync()instead to getportable behavior.
dart:js_interopJSSymbol, as well asJSSymbol.key,JSSymbol.description, and static methods for all well-known ECMAScriptsymbols.
dart:js_utildart:js_util. Any code that importsdart:js_utilwill no longer compile with dart2wasm. Consequently, code thatdepends on
package:jswill no longer compile with dart2wasm either. The namedart.library.js_utilis no longer a key in dart2wasm compilationenvironments, including in conditional imports and exports.
See #61550 for more details.
Tools
Analyzer
data regarding the "Message Scheduler."
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 analyzerun, on the order of 10 seconds.callmethod on a Function object, like "goto definition," and completion.
errorandstackTraceparameters oftry/catch statements.
hovers, quick fixes, assists, "rename" refactoring, and "go to imports."
@DanTup for many of the above enhancements!)
simplify_variable_pattern, which encouragesusing the pattern shorthand for variables and property names of the same
name.
avoid_null_checks_in_equality_operatorslint rule is now deprecated.prefer_final_parameterslint rule is now deprecated.use_if_null_to_convert_nulls_to_boolslint rule is now deprecated.Dart Development Compiler (dartdevc)
Futurereturned bydeferred_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:Supported if the Dart SDK constraint of the containing package is 3.11.0 or
higher.
New command
dart pub cache gcfor reclaiming disk space from your pubcache.
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-warningsGiven this flag,
dart pub publish --dry-runwill only exit non-zero if yourproject validation has errors.
dart pub cache repairnow by default only repairs the packages referencedby the current projects pubspec.lock. For the old behavior of repairing all
packages use the
--allflag.v3.10.9Compare Source
Released on: 2026-02-03
This is a patch release that:
libraries with dot shorthands. (issue dart-lang/sdk#62504)
v3.10.8Compare Source
Released on: 2026-01-27
This is a patch release that:
shorthands. (issue dart-lang/sdk#62416)
v3.10.7Compare Source
Released on: 2025-12-23
This is a patch release that:
v3.10.6Compare Source
Released on: 2025-12-16
This is a patch release th
Configuration
📅 Schedule: (UTC)
🚦 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.
This PR was generated by Mend Renovate. View the repository job log.