What's new
- November 15, 2023: 3.2 release
- August 16, 2023: 3.1 release
- May 10, 2023: 3.0 release
- January 25, 2023: 2.19 + 3.0 alpha releases
- August 30, 2022: 2.18 release
- May 11, 2022: 2.17 release
- February 3, 2022: 2.16 release
- December 8, 2021: 2.15 release
- September 8, 2021: 2.14 release
- May 19, 2021: 2.13 release
- March 3, 2021: 2.12 release
- October 1, 2020: 2.10 release
This page describes what’s new on the Dart website and blog. To see what’s new in Flutter, visit the Flutter what’s new page.
For a list of Dart language changes in each Dart SDK, see the language evolution page. To stay on top of announcements, including breaking changes, join the Dart announcements Google group and follow the Dart blog.
November 15, 2023: 3.2 release
This section lists notable changes made from August 17, 2023, through November 15, 2023. For details about the 3.2 release, check out 3.2 blog post and the SDK changelog.
Docs updated or added to dart.dev
In addition to bug fixes and incremental improvements, we made the following changes to this site:
- Updated the Fixing type promotion failures page
for a new type promotion feature: private final field promotion.
- Made minor related adjustments to the Effective Dart entry on type promotion, the Understanding Null Safety page, and other various places across the site.
- Introduced documentation on the experimental native assets feature to the C interop page.
- Created a new page dedicated to documenting Breaking changes.
- Accounted for new and updated lints and diagnostics in their respective doc pages.
- Added documentation for the new
--tighten
flag to thepub upgrade
page. - Removed the cheatsheet in favor of the Language overview page.
- Clarified the relationship between guard clauses and patterns.
- Adjusted the Constructors page to better represent best practices.
- Improved contents of the Package dependencies page to be more actionable and easier to follow.
- Elaborated on static members in the Extension methods page.
- Changed the Objective-C multithreading limitations content to account
for the new
NativeCallable
API. - Added new annotations and mentioned deprecations on the Metadata page.
- Improved contrast by adjusting text colors and highlighting across in code samples across the site.
- Reorganized and simplified site infrastructure across the board, in preparation to move away from using Jekyll.
August 16, 2023: 3.1 release
This section lists notable changes made from May 11, 2023, through August 16, 2023. For details about the 3.1 release, check out Dart 3.1 & a retrospective on functional style programming in Dart 3 and the SDK changelog.
Docs updated or added to dart.dev
In addition to bug fixes and incremental improvements, we made the following changes to this site:
- Overhauled the linter rule documentation to replace the old linter site:
- Moved each linter rule’s documentation to its own page.
For example:
avoid_dynamic_calls
. - Added an example
analysis_options.yaml
that enables all linter rules available in the latest Dart release. - Updated the index of all available linter rules to enable easier lint discovery.
- Moved each linter rule’s documentation to its own page.
For example:
- Augmented the class modifiers documentation by adding a Class modifiers reference to outline how they interact with each other.
- Introduced a Class modifiers for API maintainers guide to help developers best use class modifiers.
- Rewrote the switch expression documentation to better account for its differences to switch statements.
- Documented support for specifying topics in your pubspec file to categorize your package on the pub.dev site.
- Clarified that package screenshots are meant to showcase package functionality, not the logo or icon of the package.
- Added previous and next buttons to Dart’s language documentation to enable a guided learning experience.
- Continued expanding the new site-wide glossary.
- Added a migration note about how the pub cache move on Windows was finalized in Dart 3.
- Simplified and updated older docs now that Dart’s type system is always null safe.
Articles added to the Dart blog
We published the following article on the Dart blog:
May 10, 2023: 3.0 release
This section lists notable changes made from January 26, 2023, through May 10, 2023. For details about the major 3.0 release, check out Announcing Dart 3, and the SDK changelog.
Docs updated or added to dart.dev
In preparation for Dart 3, we split up and reorganized the Language Tour into new conceptual categories. You can access the restructured language documentation under Language in the side navigation menu, or by visiting the updated Introduction to Dart.
Taking advantage of this new structure, we added documentation for each of Dart 3’s major features:
- Pattern matching and the different types of patterns.
- Switch expressions with support for patterns and exhaustiveness checking.
- If statements with case clauses to support pattern matching.
- Records, a new anonymous, immutable, and aggregate type that enables multiple returns.
- Class modifiers that give libraries more control over exported types.
To help you transition to Dart 3’s enforcement of sound null safety and other changes, we also prepared the following updates:
- Created a comprehensive Dart 3 migration guide.
- Migrated all documentation and code examples to Dart 3, the latest tool releases, and the latest dependencies.
- Clarified that Dart’s type system is now always null-safe in Dart 3.
- Updated and reorganized the Language evolution page and its language versioning discussion.
- Removed remnants of Dart 1 and early Dart 2 docs, notes, and resources.
In addition to the new Dart 3 content and corresponding updates across the site, we made the following changes:
- Added a guide on configuring compilation environment declarations.
- Continued Dart’s native interoperability work by adding a guide on experimental support for Java interop.
- Clarified the usage and limitations of unnamed extensions.
- Added a page for the new
dart info
command that helps with tooling diagnostics. - Overhauled the
dart pub add
documentation to cover its new source descriptor syntax. - Surfaced preview Linux RISC-V (RV64GC) builds on the beta channel in the SDK archive.
- Began a new site-wide glossary to contain common terms used throughout the site.
- Highlighted experimental work on Dart’s JS static interop support.
- Documented the existence and current limitations of analyzer plugins.
Articles added to the Dart blog
We published the following article on the Dart blog:
Videos released by the Dart team
During Google I/O 2023, we released the following videos:
- What’s new in Dart and Flutter (American Sign Language version)
- Rethinking Dart interoperability with Android
- How to build a package in Dart
January 25, 2023: 2.19 + 3.0 alpha releases
This section lists notable changes made from August 31, 2022, through January 25, 2023. For details about the 2.19 + 3.0 alpha releases, see Introducing Dart 3 alpha, and the SDK changelog.
Docs updated or added to dart.dev
In addition to bug fixes and incremental improvements, we made the following changes to this site:
- Introduced the Fetch data from the internet tutorial about using
package:http
. - Added a page on Automated publishing of packages to pub.dev.
- Included links to two new site translations in our community resources section:
- Updated null safety content in preparation of Dart 3:
- Changed the version constraints in the migration guide for Dart 3 compatibility.
- Added Dart 3 full sound null safety overview to the Sound null safety page.
- Emphasized Dart 3’s incompatibility with unsound null safety in a note.
- Introduced the new Learning Dart as a Swift developer guide.
- Replaced an Effective Dart section with more general guidance on booleans and equality operators.
- Documented content-hashing across the pub docs.
- Began effort to overhaul the Zones page by
changing examples to use
runZonedGuarded
instead ofonError
. - Updated content on libraries to cover new no-name declarations development:
- Effective Dart: Documentation, Style, and Usage
- New library directive section in The language tour
- Improved clarity surrounding Dart’s single-threaded or multi-threaded status:
- Removed the outdated
dart:io
page. - Added two sections to the FAQ:
- Expanded on Dart’s web concurrency capabilities.
- Removed the outdated
- Rearranged and clarified discussion of default values for optional and positional parameters.
- Updated Concurrency in Dart to default to new
Isolate.run()
function. - Documented specifying a file path when activating a package on the
pub global
page. - Rewrote Learning Dart as a JavaScript developer.
- Added a brief overview of Dart DevTools to
dart run
page. - Provided more clarity around operator precedence and associativity in the Language tour.
- Expanded Library tour section on Building URIs with URI http and factory constructor info.
- Accounted for pub’s transition to pub.dev from pub.dartlang.org.
- Added documentation on package screenshots.
- Improved the explicit downcast section of The Dart type system page.
- Increased analyzer and lint coverage:
- Included SDK version support info for linter rules.
- Added diagnostic and lint messages for 2.19 changes.
Articles added to the Dart blog
We published the following articles on the Dart blog:
- Better isolate management with Isolate.run()
- Screenshots and automated publishing for pub.dev
- The road to Dart 3: A fully sound, null safe language
- Google Summer of Code 2022 Results
- Partnering with GitHub on supply chain security for Dart packages
August 30, 2022: 2.18 release
This section lists notable changes made from May 12, 2022, through August 30, 2022. For details about the 2.18 release, see Dart 2.18: Objective-C & Swift interop, and the SDK changelog.
In addition to bug fixes and incremental improvements, we made the following changes to this site:
- Introduced the Objective-C and Swift interop page, which explains how to use Dart packages to call APIs from those languages.
- Added a workaround to Fixing common type problems, for the rare case where type inference might incorrectly infer an argument type is null.
- Removed all mention of discontinued
.packages
files from What not to commit. If you still need to generate a.packages
file due to third-party legacy dependencies, seedart pub get
Options. - Removed dedicated pages and any other mention of discontinued
dart2js
anddartdevc
command line tools.- Added command line options and known issues previously associated with
dart2js
to thedart compile
page. - Added information on debugging production code to Debugging Dart web apps.
- Added command line options and known issues previously associated with
- Added support for downloading experimental Windows ARM builds to the Dart SDK archive.
- Updated the Library tour to include information on weak references and finalizers.
- Added a section on customizing
dart fix
.
May 11, 2022: 2.17 release
This section lists notable changes made from February 4, 2022, through May 11, 2022. For details about the 2.17 release, see Dart 2.17: Productivity and integration.
Docs updated or added to dart.dev
In addition to bug fixes and incremental improvements, we made the following changes to this site:
- Introduced the Learning Dart as a JavaScript developer guide, which aims to leverage your JavaScript programming knowledge when learning Dart.
- Documented the features and changes introduced in Dart 2.17:
- Updated the Named parameters section of the language tour to reflect support for specifying named arguments anywhere.
- Added documentation for super-initializer parameters.
- Expanded the Enumerated types section of the language tour and documented enhanced enums.
- Documented support for signing macOS and Windows executables
compiled with
dart compile exe
. - Updated the templates supported by
dart create
to their new, standardized names.
- Accounted for changes to the pub.dev site and the pub tool.
- Listed vendors offering Dart package repositories as a service.
- Removed documentation for the now discontinued
dart pub uploader
command. - Expanded the documentation for managing pub project uploaders.
- Removed most mentions to the deprecated
.packages
file, pointing instead to its.dart_tool/package_config.json
replacement.
- Updated the documentation for updating and installing Dart:
- Documented how to switch between Dart versions with Homebrew within the macOS install instructions.
- Updated the linux installation instructions to use SecureApt and follow the latest best practices.
- Added support for downloading experimental, Linux RISC-V (RV64GC) builds from the Dart SDK archive.
- Continued work to improve and update documentation
of the unified
dart
tool:- Expanded documentation about the functionality of the
dart fix
tool. - Adjusted the guidelines and documentation for the
dart doc
tool to match its functionality and underlying behavior. - Added further documentation and samples of
dart compile js
. - Removed mentions of removed standalone tools.
- Expanded documentation about the functionality of the
- Updated the documentation and usage of the analyzer and linter:
- Documented the analyzer’s new strict language modes.
- Incorporated changes to the diagnostic messages and linter rules pages.
- Updated documentation and samples
to use the
2.0.0
release of thelints
package.
- Began an overhaul of the documentation for web compilation:
- Documented for the deprecation and planned removal
of the
dart2js
anddartdevc
standalone tools. - Consolidated and clarified the documentation
of dart2js and dartdevc
as the underlying compilers of tools like
dart compile js
andwebdev
.
- Documented for the deprecation and planned removal
of the
- Increased documentation coverage of null safety:
- Documented the null assertion operator (
!
) as part of the Other operators section of the language tour. - Migrated the Low-level HTML tutorials to support null safety and discuss how to interact with web APIs while using it.
- Documented the null assertion operator (
- Made miscellaneous other updates:
- Documented the native types provided by
dart:ffi
for use in C interop. - Introduced a new section to the language tour documenting initializing formal parameters.
- Documented DartPad’s support for packages.
- Fixed formatting in the asynchronous programming codelab and elaborated on why asynchronous code matters.
- Updated the security page to match our current security practices.
- Added a key binding (
/
) to automatically focus the search bar.
- Documented the native types provided by
Articles added to the Dart blog
We published the following articles on the Dart blog:
- Bulk application of fixes
- Dart asynchronous programming: Streams
- Contributors for Google Summer of Code 2022
- Gradual null safety migration for large Dart projects
- Hosting a private Dart package repository
- Quick fixes for analysis issues
February 3, 2022: 2.16 release
This section lists notable changes made from December 8, 2021, through February 3, 2022. For details about the 2.16 release, see Dart 2.16: Improved tooling and platform handling.
Docs updated or added to dart.dev
We updated the website infrastructure to a Docker-based setup to enable easier contributions and more closely align with the setup for docs.flutter.dev.
In addition to other bug fixes and incremental improvements, we made the following changes to this site:
- Switched to documenting the new
dart doc
tool which replacesdartdoc
. - Documented the new
platform
entry to specify supported platforms within a package’spubspec.yaml
. - Updated the diagnostic messages and linter rules pages.
- Documented how to ignore all linter rules in a file.
- Removed mentions of the old standalone tools from the Dart SDK overview.
- Update remaining mentions of the old standalone tools
to their
dart
tool equivalents. - Added clarifications to the PREFER using interpolation to compose strings and values Effective Dart guideline.
December 8, 2021: 2.15 release
This section lists notable changes made from September 9, 2021, through December 8, 2021. For details about the 2.15 release, see Announcing Dart 2.15.
Docs updated or added to dart.dev
In addition to bug fixes and incremental improvements, we made the following changes to this site:
- Added Concurrency in Dart, which discusses features such as isolates that enable parallel execution of Dart code.
- Documented pub features added or improved in 2.15:
- Added a page for a new pub subcommand, dart pub token, and a page about custom package repositories
- Added information about package retraction
- Added the false_secrets field to the pubspec page
- Updated the syntax for hosted dependencies
- Removed all entries for Dart 1 books
- Expanded on DartPad troubleshooting tips
- Updated the diagnostic messages page
- Updated the linter rules page;
removed references to deprecated rule sets such as
effective_dart
- Updated the instructions for installing and using Dart DevTools
- Added information about what the Dart runtime provides, and clarified compilation formats
September 8, 2021: 2.14 release
This section lists notable changes made from May 20, 2021, through September 8, 2021. For details about the 2.14 release, see Announcing Dart 2.14.
Docs updated or added to dart.dev
In addition to bug fixes and incremental improvements, we made the following changes to this site:
- Fleshed out the page on fixing type promotion failures.
- Documented how to use the
.pubignore
file, a feature that was introduced in Dart 2.14. - Added coverage of the unsigned shift operator (
>>>
), which was introduced in Dart 2.14. - Built out the linter rule page; updated Effective Dart to link to it.
- Added pages for the
dart create
anddart test
commands. - Finished converting examples from using old command-line tools
(for example,
dartfmt
) to using the unifieddart
tool (for example,dart format
). - Updated site code to use the recommended linter rules, instead of pedantic.
- Updated the lists of core libraries and commonly used packages.
- Added a redirect from dart.dev/jobs to flutter.dev/jobs, to make it easier to find open positions on the Dart and Flutter teams.
- Finished migrating all analyzed or tested code to null safety, updating text to match. Found more site code that hadn’t been analyzed; fixed that.
Articles added to the Dart blog
We published the following articles on the Dart blog:
- Experimenting with Dart and Wasm
- How Dart’s null safety helped me augment my projects
- Implementing structs by value in Dart FFI
May 19, 2021: 2.13 release
This section lists notable changes made from March 4, 2021, through May 19, 2021. For details about the 2.13 release, see Announcing Dart 2.13.
Docs updated or added to dart.dev
In addition to bug fixes and incremental improvements, we made the following changes to this site:
- Updated the typedef section of the language tour to reflect non-function type aliases, which were introduced in Dart 2.13.
- Published or updated documentation related to the command line and servers:
- Using Google Cloud describes Google Cloud products that Dart servers can use, often with the help of pre-packaged Docker images.
- The HTTP server tutorial,
which featured the discontinued
http_server
package, has been temporarily replaced by an “under construction” page that links to helpful documentation and samples. - The command-line tutorial has been completely updated.
- Published some other new pages:
- Null safety codelab teaches you about Dart’s null-safe type system, which was introduced in Dart 2.12.
- Numbers in Dart has details about differences between native and web number implementations.
- Using Google APIs points to resources to help you use Firebase and Google client APIs from a Dart app.
- Writing package pages gives tips for writing a package README that works well on pub.dev.
- Fixing type promotion failures has information to help you understand why type promotion failures occur, and gives tips on how to fix them.
- The new
dart run
page describes how to run a Dart program from the command line.
- Continued work on migrating code to null safety, in particular the streams tutorial.
- Made miscellaneous other updates:
- Removed references to Stagehand, in favor of
dart create
. - Changed analytics options for dart.dev example code from
using
pedantic
to using the recommended rules inlints
. - Added Docker as a way to get Dart.
- Updated the language evolution page to reflect Dart 2.13.
- Removed references to Stagehand, in favor of
Articles added to the Dart blog
We published the following articles on the Dart blog:
- AngularDart, Flutter, and the web: Spring update
- Announcing Dart support for GitHub Actions
- Dart in Google Summer of Code 2021
March 3, 2021: 2.12 release
This section lists notable changes made from October 2, 2020, through March 3, 2021. For details about the 2.12 release, see Announcing Dart 2.12.
Docs updated or added to dart.dev
In addition to bug fixes and incremental improvements, we made the following changes to this site:
- Updated and fleshed out null safety docs. Notably:
- Provided a migration guide.
- Added a FAQ.
- Created Unsound null safety.
- Simplified the null safety homepage.
- Refreshed Effective Dart, updating code to be null safe and changing rules to reflect new guidance.
- Refreshed the language tour, updating code to be null safe and
adding information about new features such as
late
variables. - Updated the language evolution page to add information about language versioning and to reflect Dart 2.12.
- Updated the library tour and codelabs to reflect sound null safety.
- Updated pages across the site to use the
dart
tool instead of deprecated commands. Started adding pages for variousdart
commands, includingdart analyze
,dart compile
,dart fix
, anddart format
. - Created a page documenting the quality and support of Dart team packages.
- Replaced the Platforms page with a new Overview page.
- Created this page (“What’s new”).
We also switched from Travis CI to GitHub Actions, and we made multiple CSS changes to improve site legibility.
Articles added to the Dart blog
We published the following articles on the Dart blog:
- Preparing the Dart and Flutter ecosystem for null safety announced null safety API stability and invited developers to publish stable, null-safe versions of their packages.
- Dart and the performance benefits of sound types demonstrated how soundness and null safety enable Dart compilers to generate faster, smaller code.
- Why nullable types? expanded on a discussion on the /r/dart_lang subreddit, answering the question “Why not get rid of null completely?”
- Announcing Dart null safety beta invited developers to start planning their migration to null safety.
October 1, 2020: 2.10 release
This section lists notable changes made from July 1 through October 1, 2020. For details about the 2.10 release, see Announcing Dart 2.10.
Docs updated or added to dart.dev
In addition to bug fixes and small improvements, we made the following changes to this site:
- Added a
dart
tool page to document the new command-line interface to the Dart SDK. The newdart
tool is analogous to theflutter
tool in the Flutter SDK. Previously, thedart
command only ran command-line apps. We updated the previousdart
page accordingly and plan to update references to other tools over time. - Updated the package changelog documentation
to recommend a standard format for
CHANGELOG.md
files. This new format lets tools (such as the relaunched pub.dev) parse changelogs. - Changed an Effective Dart guideline to favor
using
Object
instead ofdynamic
. For details, see the revised guideline AVOID usingdynamic
unless you want to disable static checking. - Updated the diagnostic messages page to include more messages produced by the Dart analyzer.
- Updated the evolution page to include 2.9 and 2.10.
- Reorganized the language specification page to make it easier to find the PDF version of the latest, in-progress specification.
- Added or updated docs related to sound null safety,
a feature that’s coming to the Dart language:
- Clarified how to use experiment flags with IDEs.
- Updated the null safety page, adding information about how to enable null safety.
- Added a deep dive into null safety, Understanding null safety, written by Dart engineer Bob Nystrom.
Articles added to the Dart blog
We published the following articles on the Dart blog:
- Exploring collections in Dart helps you use collections (lists, maps, sets, and more), with special attention to 2.3 language features like collection if, collection for, and spreads.
- Google Summer of Code 2020 results describes the results of five projects that the Dart team mentored.
- Introducing a brand new pub.dev announces the relaunch of the pub.dev site, with new package scoring metrics, improved search, and a redesigned UI.
We also improved the blog navigation, adding announcement and archive tabs, plus a link to dart.dev.