NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #136 most downloaded on pub.dev
A build system for Dart code generation and modular compilation.
Last release 1 months ago
02 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
202 releases · first in 2016
- Use the latest build_daemon.
build_daemon.- Use the latest build_config.
build_config.Clarify terminology: refer to .dart_tool/build/generated as the "artifact tree", and the normal output location as the "package path".
.dart_tool/build/generated as the "artifactOne column per quarter.
Remove usage of set literals to fix errors on older sdks that don't support them.
Fix an issue where we might re-use stale build snapshots, which could only be resolved by deleting the .dart_tool dir (or doing a clean).
.dart_tool dir (or doing a clean).build_runner_core and build_daemon releases.Fix issue where daemon command wouldn't properly shutdown.
test.Fix issue where daemon command would occasionally color a log.
Prevent terminals being launched when running the daemon command on Windows.
build_daemon to version 0.4.0.build_runner_core to version 2.0.3.Fix a bug with the build daemon where the output options were ignored.
Update build_resolvers to version 1.0.0.
build_resolvers to version 1.0.0.Fix a bug where changing between --live-reload and --hot-reload might not work due to the etags for the injected JS not changing when they should.
--live-reload and --hot-reload might not
work due to the etags for the injected JS not changing when they should.Change the format of Build Daemon messages.
Update package:build_runner_core to version 2.0.1.
package:build_runner_core to version 2.0.1.Support building through package:build_daemon.
package:build_daemon.package:build_runner_core to version 2.0.0.Update to package:graphs version 0.2.0.
package:graphs version 0.2.0.build version 1.1.x.Improve error message when the generated build script cannot be parsed or compiled and exit with code 78 to indicate that there is a problem with conf
78 to indicate that there is a problem with
configuration in the project or a dependency's build.yaml.Handle re-snapshotting the build script on SDK updates.
Bootstrap logger.The build script will now be ran from snapshot, which improves startup times.
Massive cleanup of the public api. The only thing exported from this package is now the run method. The goal is to reduce the surface area in order to
run method. The goal is to reduce the surface area in order to
stabilize this package, since it is directly depended on by all users.
build and watch functions directly, as well as the
ServeHandler.Improve performance tracking and visualization using the timing package.
timing package.clean command.Added --hot-reload cli option and appropriate functionality.
--hot-reload cli option and appropriate functionality.Added --live-reload cli option and appropriate functionality
--live-reload cli option and appropriate functionalityAdded better error handling when a socket is already in use in serve mode.
serve mode.Implementations of BuildEnvironment must now implement the finalizeBuild method. There is a default implementation if you extend BuildEnvironment that
BuildEnvironment must now implement the finalizeBuild
method. There is a default implementation if you extend BuildEnvironment
that is a no-op.
assumeTty argument on IOEnvironment has moved to a named argument
since null is an accepted value.outputMap field on BuildOptions has moved to the IOEnvironment
class.outputSymlinksOnly option to IOEnvironment constructor, that
causes the merged output directories to contain only symlinks, which is much
faster than copying files.FinalizedAssetView class which provides a list of all available
assets to the BuildEnvironment during the build finalization phase.
outputMap has moved from BuildOptions to this constructor, as a named
argument.OverridableEnvironment now supports overriding the new finalizeBuild
api.Changed the default file caching logic to use an LRU cache.
The hash dir for the asset graph under .dart_tool/build is now based on a relative path to the build script instead of the absolute path.
.dart_tool/build is now based on a
relative path to the build script instead of the absolute path.
.dart_tool/build directories to be reused across different
computers and directories for the same project.Increased the upper bound for the sdk to <3.0.0.
<3.0.0.Added the --log-performance option which will dump performance information to after each build.
--log-performance <dir> option which will dump performance
information to <dir> after each build.BuildPerformance class is now serializable, it has a fromJson
constructor and a toJson instance method.global_options in build.yaml of the root package.Resolvers implementation.BuildPhasePerformance.action has been replaced with
BuildPhasePerformance.builderKeys.BuilderActionPerformance.builder has been replaced with
BuilderActionPerformance.builderKey.BuildResult no longer has an exception or stackTrace field.run will no longer set an exit code. All manual
build scripts which call run should use the Future<int> return to set the
exit code for the process.failOnSevere arguments and --fail-on-severe flag. Severe logs are
always considered failing.stdout along with other logs rather than
stderr. Uncaught exceptions from the build_runner system itself still go
to stderr.All builders with build_to: source will now be ran regardless of which directory is currently being built, see https://github.com/dart-lang/build/issu
build_to: source will now be ran regardless of which
directory is currently being built, see
https://github.com/dart-lang/build/issues/1454 for context.build will now throw instead of returning a failed build result if nothing
was built.build.yaml with a missing
dependency.target will no longer appear in the asset
graph, so they will not be readable or globbable.Added support for building only specified top level directories.
build, watch commands support positional arguments which are the
directories to build. For example, pub run build_runner build web will
only build the web directory.serve command treats positional args as it did before, except it will
only build the directories you ask it to serve.test command will automatically only build the test directory.-o option, with the <dir-to-build>:<output-dir> syntax,
then the <dir-to-build> will be added to the list of directories to build.
serve logic to only serve files which were part of the actual
build, and not stale assets. This brings the semantics exactly in line with
what would be copied to the -o output directory.Improve search behavior on the /$graph page. Users can now query for paths and AssetID values – pkg_name|lib/pkg_name.dart.
/$graph page. Users can now query for
paths and AssetID values – pkg_name|lib/pkg_name.dart.Improve error handling on the /$graph page.
/$graph page.package:buildForward default options for PostProcessBuilders in the generated build script.
PostProcessBuilders in the generated build
script.Add log message for merged output errors.
Deprecated PostProcessBuilder and PostProcessBuildStep. These should be imported from package:build instead.
isRoot field for BuilderOptions so that builders can
do different things for the root package.PostProcessBuilder and PostProcessBuildStep. These should be
imported from package:build instead.Clean and summarize stack traces printed with --verbose.
--verbose.clean command which deletes generated to source files and the entire
build cache directory.Bug Fix: Correctly parse Window's paths with new --output semantics.
--output semantics.The .packages file is now always created in the root of the output directory instead of under each top level directory.
.packages file is now always created in the root of the output directory
instead of under each top level directory.Allow passing multiple --output options. Each option will be split on :. The first value will be the root input directory, the second value will be th
--output options. Each option will be split on
:. The first value will be the root input directory, the second value will
be the output directory. If no delimiter is provided, all resources
will be copied to the output directory.--release flag to choose the options from release_options in
build.yaml. This should replace the need to use --config pointing to a
release version of build.yaml.Improved the layout of /$perf, especially after browser window resize.
/$perf, especially after browser window resize.pub run build_runner exits with a error when invoked with an unsupported
command.web/index.html is not read to produce any
generated outputs changes to this file will now get picked up during pub run build_runner watch --output build.Added the new PostProcessBuilder class. These are not supported in bazel, and are different than a normal Builder in some fundamental ways:
PostProcessBuilder class. These are not supported in bazel,
and are different than a normal Builder in some fundamental ways:
applyPostProcess method which takes PostProcessBuilderFactorys
instead of BuilderFactorys.BuilderApplication now has a builderActionFactories getter instead of a
builderFactories getter.BuilderApplication has been replaced with
BuilderApplication.forBuilder and
BuilderApplication.forPostProcessBuilder.Fix a bug where a chain of Builders would fail to run on some outputs from previous steps when the generated asset did not match the target's sources.
Builders would fail to run on some outputs from
previous steps when the generated asset did not match the target's sources.Fix a concurrent modification error when using listAssets when an asset could be written.
listAssets when an asset
could be written.Added the --log-requests flag to the serve command, which will log all requests to the server.
--log-requests flag to the serve command, which will log all
requests to the server.findAssets will be more smartly invalidated.serve mode but no directories were found to serve.--output option now only outputs files that were required for the latest
build. Previously when switching js compilers you could end up with ddc
modules in your dart2js output, even though they weren't required. See
https://github.com/dart-lang/build/issues/1033.create_merged_dir binary is now removed, it can't be easily
supported any more and has been replaced by the --output option.source are no longer guaranteed to run before
builders which write to cache.runs_before configuration from Builder definitions.applies_builders configuration from Builder definitions.Performance tracking is now disabled by default, and you must pass the --track-performance flag to enable it.
--track-performance flag to enable it.test command.build.yaml files.Switch to use a PollingDirectoryWatcher on windows, which should fix file watching with the --output option. Follow along at https://github.com/dart-l
PollingDirectoryWatcher on windows, which should fix file
watching with the --output option. Follow along at
https://github.com/dart-lang/tools/issues/1713 for more details.Added a basic performance visualization. When running with serve you can now navigate to /$perf and get a timeline of all actions. If you are experien
serve you can
now navigate to /$perf and get a timeline of all actions. If you are
experiencing slow builds (especially incremental ones), you can save the
html of that page and attach it to bug reports!--output we will only clean up files we know we previously output
to the specified directory. This should allow running long lived processes
such as servers in that directory (as long as they don't hold open file
handles).Fix bug where relative imports in a dependencies build.yaml would break all downstream users, https://github.com/dart-lang/build/issues/995.
Added command line args to override config for builders globally. The format is --define " = = ". As an example, enabling the dart2js compiler for the
--define "<builder_key>=<option>=<value>". As an example, enabling the
dart2js compiler for the build_web_compilers|entrypoint builder would look
like this: --define "build_web_compilers|entrypoint=compiler=dart2js".Support the latest analyzer package.
analyzer package.Fixed a bug with build to source and watch mode that would result in an infinite build loop, #962.
Add --config option to use a different build.yaml at build time.
--config option to use a different build.yaml at build time.The top level run method now returns an int which represents an exitCode for the command that was executed.
run method now returns an int which represents an exitCode
for the command that was executed.
await
the call to run and assign that to exitCode to be future-proofed.Avoid watching hosted dependencies for file changes.
We are treating this as a non-breaking change because there are no known users of this interface.
0.12.0.DigestAssetReader interface, the digest method has now moved
to the core AssetReader interface. We are treating this as a non-breaking
change because there are no known users of this interface.Add more human friendly duration printing.
--output <dir> (or -o) argument which will create a merged
output directory after each build.--verbose (or -v) flag which enables verbose logging.
Level.ALL.pubspec.yaml and pubspec.lock to the allow list for the root package
sources.Bug fix for using the --output flag when you have no test directory.
--output flag when you have no test directory.Allows using files in any build targets in the root package as sources if they fall outside the hardcoded allow list.
.packages file during watch mode will now cause the
build script to exit and prompt the user to restart the build.Added the flag --low-resources-mode, which defaults to false.
--low-resources-mode, which defaults to false.Added the flag --fail-on-severe, which defaults to false. In a future version this will default to true, which means that logging a message via log.se
--fail-on-severe, which defaults to false. In a future
version this will default to true, which means that logging a message via
log.severe will fail the build instead of just printing to the terminal.
This would match the current behavior in bazel_codegen.test command to the build_runner binary.Your coding agent can read these notes before it upgrades. Set up the MCP server →