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
Run Builders which write to the source tree before those which write to the build cache.
BUG FIX: Running the build_runner binary without arguments no longer causes a crash saying Could not find an option named "assume-tty"..
build_runner binary without arguments no longer
causes a crash saying Could not find an option named "assume-tty"..One column per quarter.
Actions are now invalidated at a fine grained level when BuilderOptions change.
toRoot Package filter.BuilderOptions
change.lib/$lib$, you should
declare your buildExtensions like this {r'$lib$': 'my_output_file.txt'},
which would result in an output file at lib/my_output_file.txt in the
package.web/$web$ and
test/$test$ which should cover most use cases. Please file an issue if you
need additional placeholders.AssetNotFoundException.BuildAction. Changed build and watch to take a
List<BuilderApplication>. See apply and applyToRoot to set these up.apply to take a single String argument - a Builder key from
package:build_config rather than a separate package and builder name.hideOutput from false to true for apply.
With applyToRoot the value remains false.PackageGraph.orderedPackages and PackageGraph.dependentsOf.writeToCache argument of build and watch. Each apply call
should specify hideOutput to keep this behavior.PackageBuilder and PackageBuildActions classes. Use the new
magic placeholder files instead (see new features section for this release).The following changes are technically breaking but should not impact most clients:
build_barback v0.5.0 which uses strong mode analysis and no
longer analyzes method bodies.dependencyType, version, includes, and excludes from
PackageNode.PackageNode.noPubspec constructor.InputSet.root node is the only node with
isRoot == true.Deprecate PackageGraph.orderedPackages and PackageGraph.dependentsOf.
enableLowResourcesMode option to build and watch, which will
consume less memory at the cost of slower builds. This is intended for use in
resource constrained environments such as Travis.createBuildActions. After finding a list of Builders to run, and defining
which packages need them applied, use this tool to apply them in the correct
order across the package graph.PackageGraph.orderedPackages and PackageGraph.dependentsOf.Nothing published for this version
Added orderedPackages and dependentsOf utilities to PackageGraph.
orderedPackages and dependentsOf utilities to PackageGraph.noPubspec constructor to PackageNode.PackageBuilder and PackageBuildAction classes. These builders
only run once per package, and have no primary input. Outputs must be well
known ahead of time and are declared with the Iterable<String> get outputs
field, which returns relative paths under the current package.isOptional field to BuildAction. Setting this to true means
that the action will not run unless some other non-optional action tries to
read one of the outputs of the action.PackageNode.location has become PackageNode.path, and is
now a String (absolute path) instead of a Uri; this prevents needing
conversions to/from Uri across the package.RunnerAssetReader interface requires you to implement
MultiPackageAssetReader and DigestAssetReader. This means the
packageName named argument has changed to package, and you have to add the
Future<Digest> digest(AssetId id) method. While technically breaking most
users do not rely on this interface explicitly.
Future<DateTime> lastModified(AssetId id) method, as it has been replaced
with the DigestAssetReader interface.ServeHandler.handle has been replaced with
Handler ServeHandler.handleFor(String rootDir). This allows you to create
separate handlers per directory you want to serve, which maintains pub serve
conventions and allows interoperation with pub run test --pub-serve=$PORT.AssetReader#findAssets implementations now return a
Stream<AssetId> to match the latest build package. This should not affect
most users unless you are extending the built in AssetReaders or using them
in a custom way.findAssets could return declared outputs from previous
phases that did not actually output the asset.writeToCache:
PackageGraphWatcher and PackageNodeWatcher as a wrapper API,
including an AssetChange class that is now consistently used across the
package.Now using package:pool to limit the number of open file handles.
package:pool to limit the number of open file handles.writeToCache: true.Breaking: Removed buildType field from BuildResult.
buildType field from BuildResult.watch now returns a ServeHandler instead of a
Stream<BuildResult>. Use ServeHandler.buildResults to get back to the
original stream.serve has been removed. Instead use watch and use the
resulting ServeHandler.handle method along with a server created in the
client script to start a server..dart_tool for more hermetic builds.writeToCache argument to build and watch which separates generated
files from the source directory and allows running builders against other
packages.package:shelf.Depend on build 0.10.x and build_barback 0.4.x
build 0.10.x and build_barback 0.4.xBug fix: Don't crash after a Builder reads a file from another package.
Bug fix: Don't try to delete files generated for other packages.
Breaking: The PhaseGroup class has been replaced with a List in build, watch, and serve. The PhaseGroup and Phase classes are removed. If your current
PhaseGroup class has been replaced with a
List<BuildAction> in build, watch, and serve. The PhaseGroup and
Phase classes are removed.
If your current build has multiple actions in a single phase which are
depending on not seeing the outputs from other actions in the phase you will
need to instead set up the InputSets so that the outputs are filtered out.resolvers argument has been removed from build, watch,
and serve.package:build v0.10.xSupport the latest release of analyzer.
analyzer.Support the latest release of build_barback.
build_barback.- Support for build 0.9.0
Internal refactoring of RunnerAssetReader.
Bug Fix: Update AssetGraph version so builds can be run without manually deleting old build directory.
Fixed a race condition bug 175 that could cause invalid output errors.
RunnerAssetWriter now requires an additional field, onDelete which is a
callback that must be called synchronously within delete.Nothing published for this version
Add support for the new bytes apis in build.
Add support for the new bytes apis in build.
FileBasedAssetReader and FileBasedAssetWriter now support reading/writing
as bytes.AssetCache, CachedAssetReader, and CachedAssetWriter. These
may come back at a later time if deemed necessary, but for now they just
complicate things unnecessarily without proven benefits.BuildResult#outputs now has a type of List<AssetId> instead of
List<Asset>, since the Asset class no longer exists. Additionally this was
wasting memory by keeping all output contents around when it's not generally
a very useful thing outside of tests (which retain this information in other
ways).Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →