What’s New in Dart 3.10
Stay updated with the latest content!
Somnio Software Logo
Services
OverviewFull Product DevelopmentProduct DiscoveryStaff Augmentation
About
CompanyFlutter ExpertisePress & NewsCareers
Our work
Industries
Fintech
Healthcare
Education
Fashion
Media & Entertainment
Retail & Ecommerce
Other
Success Cases
MyBotPal
MyBotPal
ProWallet
ProWallet
Pronti
Pronti
Siigo
Siigo
CAA Club Group of Companies (CCG)
CAA Club Group of Companies (CCG)
Tracer Golf
Tracer Golf
Meet
Meet
View all
Resources
Open SourceTutorials & TalksDownloadables
Somnio Solutions
OverviewE-commerceNews
Blog
Let’s talk

What’s New in Dart 3.10

Explore Dart 3.10’s latest features — including dot shorthand syntax, better tools, and performance updates — with insights from Somnio Software, LATAM’s leading Flutter agency.

What’s New in Dart 3.10
Authors
Lucas Oliveira
Lucas Oliveira
Software Developer
Technical
N
min read
/
November 12, 2025
Share
Copy post url
linkedin
Facebook
Twitter

Dart 3.10 just landed! This version is packed with incremental improvements to the Dart SDK, with the most awaited feature being the dot shorthand syntax that we're excited to explore with you.

In this article, we'll dive into the most important updates, breaking changes, and migration guidance for developers planning to adopt Dart 3.10.

Dot shorthands

Have you ever found yourself typing the same type name over and over again? Dot shorthand is here to help! It's a simple but powerful feature that lets you skip the type name when Dart already knows what type you're working with. The key requirement is that Dart must be able to determine the type from the surrounding context, such as a variable declaration, function parameter, or comparison.

The result is less typing. When you're working with enums in a switch statement or calling multiple constructors, you often repeat the same type name. Dot shorthand removes that repetition while keeping your code type-safe.

Here's a simple example:

Before:

After:

Because the variable alignment is explicitly typed as MainAxisAlignment, Dart knows that .center refers to MainAxisAlignment.center.

Dot shorthand is especially useful in Flutter where you frequently work with enums. For example:

Before:

After:

In this case, Dart infers the enum types from the parameter type annotations in the Column constructor. See the sections below for more examples and details on when dot shorthand works.

Here are the main ways to use dot shorthand in practice:

Enums

Before:

After:

Constructors

Before:

After:

You can use .new() as a shorthand for unnamed constructors when the context type makes it clear which class's constructor you're calling.

Static methods

Before:

After:

To dive deeper into how and where you can use dot shorthand, check out the official documentation: Official Dot shorthands Documentation.

Eliminating spurious nulls in generator return types

Another quality-of-life tweak in Dart 3.10 is how return types are inferred for generator functions. Previously, Dart inferred nullable element types even when no null values could actually be yielded.

Earlier releases inferred f as returning Iterable<int?>, even though the return; statement stops iteration instead of yielding null. Dart 3.10 now infers Iterable<int>, which eliminates the spurious nullable type.

Tools

Analyzer

The Dart analyzer’s headline upgrade in 3.10 is a revamped plugin system that makes it much easier to build and share project-specific rules, lints, and assists. If you want to extend those capabilities, see the documentation on writing analyzer plugins and on using analyzer plugins.

Beyond the plugin system, the tooling now calls out incompatible lint rules, autofills missing required field formals, embraces the new @Deprecated and @experimental annotations, refreshes assists for constructor bindings and nullable calls, and adds a remove_deprecations_in_breaking_versions lint to help you retire legacy APIs ahead of breaking releases.

Dart CLI and Dart VM

Dart 3.10 separates the CLI from the virtual machine. The new dart executable focuses on CLI parsing and dispatch, while the lean dartvm binary is dedicated to running code. When you execute dart hello.dart, the CLI spins up dartvm behind the scenes, and the same flow powers dart run and dart test. The CLI now runs only in AOT mode and is no longer produced for ia32 targets (the standalone VM binary still runs there). This split gives embedders clearer control over the runtime and unlocks future optimizations across the toolchain.

Libraries

dart:async

A new constructor, Future.syncValue, has been added for creating futures with a known synchronous value. Unlike Future.value, this constructor does not accept another Future<T> as its value — ensuring that your future always resolves immediately.

dart:core

URI parsing has been improved: Uri.parseIPv4Address and the parsing of embedded IPv4 addresses in IPv6 no longer permit leading zeros. Additionally, these functions now accept start and end parameters, allowing substring parsing without needing to create new string instances.

Dart now has more precise deprecation tools, so you don’t have to mark a whole class as “off-limits” if you don’t want to. Now, you can specifically say what you’d prefer others not to do, like extending, implementing, subclassing, mixing in, or instantiating a class. It gives you much more control over how your APIs are used.

dart:io

One major change is that IOOverrides is now an abstract base class, which means it can no longer be implemented directly. Additionally, it's now possible to override the exit(...) behavior within IOOverrides, enabling finer control over process termination in tests and custom environments.

dart:js_interop

The new JSArray.add method makes migrating from List to JSArray safer. Type checks using isA<JSBoxedDartObject> now correctly verify if a value was created with toJSBox. Factories for extension types can use the @JS() annotation to rename keys within object literals.

Additionally, compile-time checks that previously applied to Function.toJS are now also enforced for toJSCaptureThis. Typed lists that are wrappers around typed arrays now return the original typed array when unwrapped instead of instantiating a new typed array with the same buffer.

With this release, dartify on dart2wasm converts JavaScript Promises to Dart Futures, bringing its behavior in line with dart2js and DDC. Finally, createJSInteropWrapper now supports an optional JavaScript prototype parameter, similar to the functionality provided by createStaticInteropMock.

dart:js_util

dart2wasm drops support for dart:js_util (and package:js/js_util.dart), throwing UnsupportedError when invoked, while package:js/js.dart continues to work.

Closing

Dart 3.10 brings exciting refinements that make development faster, cleaner, and more expressive, especially for teams building at scale with Flutter. As these updates roll out, they’re paving the way for smarter, more efficient app architectures and better developer experiences across the board.

At Somnio Software, we stay ahead of every change to help companies turn ideas into high-impact digital products. Whether you’re exploring how to adopt Dart 3.10, planning to enhance your current app, or ready to bring a new concept to life, our team is here to help you make it real.

Contact us

Stay in the loop!

Receive tech news, software tips, and business insights.
Subscribe to our newsletter!

Thank you! Your submission has been received!
Oops! Something went wrong.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Read next

Announcements

Somnio Software: Premier Verified Company on Clutch and Global Award-Winning Leader

Read more
Somnio Software: Premier Verified Company on Clutch and Global Award-Winning Leader
Read more
Business

Revolutionizing Healthcare with Technology: Empowering Better Patient Care

Read more
Revolutionizing Healthcare with Technology: Empowering Better Patient Care
Read more
Somnio Software Logo
Services
Full Product DevelopmentProduct DiscoveryStaff Augmentation
Our work
IndustriesFintechHealthcareEducationEntertainmentSuccess Cases
About
CompanyFlutter ExpertiseCareersPress & NewsPrivacy PolicyCompany Presentation Brochure
Resources
Open SourceTutorials & TalksDownloadablesBlog
Office
José Ellauri 1142
Montevideo, Uruguay
11300
Contact
hello@somniosoftware.comjobs@somniosoftware.com
(+598) 98 168 142 - Uruguay+1 (786) 726‑1751 - US
Clutch Award Top B2B Company 2022
Clutch Award Top B2B Company 2022Clutch Award Top B2B Company 2022Clutch Award Top B2B Company 2022Clutch Award Top B2B Company 2023Clutch Award Top B2B Company 2023Clutch Award Top B2B Company 2023Clutch Award Top B2B Company 2023Clutch Award Top B2B Company 2022The Manifest Award Top Flutter Developers 2021Clutch Award Top 1000 Companies Global 2022Clutch Award Top B2B Company 2023