• Allows code excerpts in example/README.md.


  • Moves source to flutter/packages.


  • Expands the --packages-for-branch detection of main to include ancestors of origin/main and upstream/main.


  • Makes --packages-for-branch detect any commit on main as being main, so that it works with pinned checkouts (e.g., on LUCI).


  • Adds the ability to validate minimum supported Dart/Flutter versions in pubspec-check.


  • Renames podspecs to podspec-check. The old name will continue to work.
  • Adds validation of the Swift-in-Obj-C-projects workaround in the podspecs of iOS plugin implementations that use Swift.


  • Replaces deprecated flutter format with dart format in format implementation.


  • Falls back to other executables in PATH when clang-format does not run.


  • Updates version-check to recognize Pigeon's platform test structure.
  • Pins package:git dependency to 2.0.x until dart >=2.18.0 becomes our oldest legacy.
  • Updates test mocks.


  • Renames all-plugins-app to create-all-packages-app to clarify what it actually does. Also renames the project directory it creates from all_plugins to all_packages.


  • Modifies publish_check_command.dart to do a dart pub get in all examples of the package being checked. Workaround for dart-lang/pub#3618.


  • Changes the behavior of --packages-for-branch on main/master to run for packages changed in the last commit, rather than running for all packages. This allows CI to test the same filtered set of packages in post-submit as are tested in presubmit.
  • Adds a fix command to run dart fix --apply in target packages.


  • Renames publish-plugin to publish.
  • Renames arguments to list:
    • --package now lists top-level packages (previously --plugin).
    • --package-or-subpackage now lists top-level packages (previously --package).


  • Recognizes run_test.sh as a developer-only file in version-check.
  • Adds readme-check validation that the example/README.md for a federated plugin's implementation packages has a warning about the intended use of the example instead of the template boilerplate.


  • Improves the logic in version-check to determine what changes don't require version changes, as well as making any dev-only changes also not require changelog changes since in practice we almost always override the check in that case.
  • Removes special-case handling of Dependabot PRs, and the (fragile) --change-description-file flag was only still used for that case, as the improved diff analysis now handles that case more robustly.


  • Raises minimum compileSdkVersion to 32 for the all-plugins-app command.


  • Adds checking of code-excerpt configuration to readme-check, to validate that if the excerpting tags are added to a README they are actually being used.


  • Adds a --downgrade flag to analyze for analyzing with the oldest possible versions of packages.


  • Replaces PR-description-based version/changelog/breaking change check overrides in version-check with label-based overrides using a new pr-labels flag, since we don't actually have reliable access to the PR description in checks.


  • Adds a new remove-dev-dependencies command to remove dev_dependencies entries to make legacy version analysis possible in more cases.
  • Adds a --lib-only option to analyze to allow only analyzing the client parts of a library for legacy verison compatibility.


  • Includes dev_dependencies when overridding dependencies using make-deps-path-based.
  • Bypasses version and CHANGELOG checks for Dependabot PRs for packages that are known not to be client-affecting.


  • Allows pre-release versions in version-check.


  • Supports empty custom analysis allow list files.
  • drive-examples now validates files to ensure that they don't accidentally use test(...).
  • Adds a new dependabot-check command to ensure complete Dependabot coverage.
  • Adds skip-if-not-supporting-dart-version to allow for the same use cases as skip-if-not-supporting-flutter-version but for packages without Flutter constraints.


  • Adds update-release-info to apply changelog and optional version changes across multiple packages.
  • Fixes changelog validation when reverting to a NEXT state.
  • Fixes multiplication of --force flag when publishing multiple packages.
  • Adds minimum deployment target flags to xcode-analyze to allow enforcing deprecation warning handling in advance of actually dropping support for an OS version.
  • Checks for template boilerplate in readme-check.
  • readme-check now validates example READMEs when present.


  • Updates test to inculde the Dart unit tests of examples, if any.
  • drive-examples now supports non-plugin packages.
  • Commands that iterate over examples now include non-Flutter example packages.


  • readme-check now validates that there's a info tag on code blocks to identify (and for supported languages, syntax highlight) the language.
  • readme-check now has a --require-excerpts flag to require that any Dart code blocks be managed by code_excerpter.


  • Adds a new update-excerpts command to maintain README files using the code-excerpter package from flutter/site-shared.
  • license-check now ignores submodules.
  • Allows make-deps-path-based to skip packages it has alredy rewritten, so that running multiple times won't fail after the first time.
  • Removes UWP support, since Flutter has dropped support for UWP.


  • Adds a new readme-check command.
  • Updates publish-plugin command documentation.
  • Fixes all-plugins-app to preserve the original application's Dart SDK version to avoid changing language feature opt-ins that the template may rely on.
  • Fixes custom-test to run pub get before running Dart test scripts.


  • Adds a new custom-test command.
  • Switches from deprecated flutter packages alias to flutter pub.


  • Fixes an analyze regression in 0.8.0 with packages that have non-example sub-packages.


  • Ensures that firebase-test-lab runs include an integration_test runner.
  • Adds a make-deps-path-based command to convert inter-repo package dependencies to path-based dependencies.
  • Adds a (hidden) --run-on-dirty-packages flag for use with make-deps-path-based in CI.
  • --packages now allows using a federated plugin‘s package as a target without fully specifying it (if it is not the same as the plugin’s name). E.g., --packages=path_provide_ios now works.
  • --run-on-changed-packages now includes only the changed packages in a federated plugin, not all packages in that plugin.
  • Fixes federation-safety-check handling of plugin deletion, and of top-level files in unfederated plugins whose names match federated plugin heuristics (e.g., packages/foo/foo_android.iml).
  • Adds an auto-retry for failed Firebase Test Lab tests as a short-term patch for flake issues.
  • Adds support for CHROME_EXECUTABLE in drive-examples to match similar flutter behavior.
  • Validates default_package entries in plugins.
  • Removes allow-warnings from the podspecs command.
  • Adds skip-if-not-supporting-flutter-version to allow running tests using a version of Flutter that not all packages support. (E.g., to allow for running some tests against old versions of Flutter to help avoid accidental breakage.)


  • native-test now builds unit tests before running them on Windows and Linux, matching the behavior of other platforms.
  • Adds --log-timing to add timing information to package headers in looping commands.
  • Adds a --check-for-missing-changes flag to version-check that requires version updates (except for recognized exemptions) and CHANGELOG changes when modifying packages, unless the PR description explains why it's not needed.


  • Update Firebase Testlab deprecated test device. (Pixel 4 API 29 -> Pixel 5 API 30).
  • native-test --android, --ios, and --macos now fail plugins that don't have unit tests, rather than skipping them.
  • Added a new federation-safety-check command to help catch changes to federated packages that have been done in such a way that they will pass in CI, but fail once the change is landed and published.
  • publish-check now validates that there is an AUTHORS file.
  • Added flags to version-check to allow overriding the platform interface major version change restriction.
  • Improved error handling and error messages in CHANGELOG version checks.
  • license-check now validates Kotlin files.
  • pubspec-check now checks that the description is of the pub-recommended length.
  • Fix license-check when run on Windows with line ending conversion enabled.
  • Fixed pubspec-check on Windows.
  • Add support for main as a primary branch. master continues to work for compatibility.


  • Add support for .pluginToolsConfig.yaml in the build-examples command.


  • native-test now supports --linux for unit tests.
  • Formatting now skips Dart files that contain a line that exactly matches the string // This file is hand-formatted..


  • Fixed build-examples to work for non-plugin packages.


  • Added Android native integration test support to native-test.
  • Added a new android-lint command to lint Android plugin native code.
  • Pubspec validation now checks for implements in implementation packages.
  • Pubspec valitation now checks the full relative path of repository entries.
  • build-examples now supports UWP plugins via a --winuwp flag.
  • native-test now supports --windows for unit tests.
  • Breaking change: publish no longer accepts --no-tag-release or --no-push-flags. Releases now always tag and push.
  • Breaking change: publish's --package flag has been replaced with the --packages flag used by most other packages.
  • Breaking change Passing both --run-on-changed-packages and --packages is now an error; previously it the former would be ignored.


  • --exclude and --custom-analysis now accept paths to YAML files that contain lists of packages to exclude, in addition to just package names, so that exclude lists can be maintained separately from scripts and CI configuration.
  • Added an xctest flag to select specific test targets, to allow running only unit tests or integration tests.
  • Breaking change: Split Xcode analysis out of xctest and into a new xcode-analyze command.
  • Fixed a bug that caused firebase-test-lab to hang if it tried to run more than one plugin's tests in a single run.
  • Breaking change: If firebase-test-lab is run on a package that supports Android, but for which no tests are run, it now fails instead of skipping. This matches drive-examples, as this command is what is used for driving Android Flutter integration tests on CI.
  • Breaking change: Replaced xctest with a new native-test command that will eventually be able to run native unit and integration tests for all platforms.
    • Adds the ability to disable test types via --no-unit or --no-integration.
  • Breaking change: Replaced java-test with Android unit test support for the new native-test command.
  • Commands that print a run summary at the end now track and log exclusions similarly to skips for easier auditing.
  • version-check now validates that NEXT is not present when changing the version.


  • Improved license-check output.
  • Use java -version rather than java --version, for compatibility with more versions of Java.


  • Modified the output format of many commands
  • Breaking change: firebase-test-lab no longer supports *_e2e.dart files, only integration_test/*_test.dart.
  • Add a summary to the end of successful command runs for commands using the new output format.
  • Fixed some cases where a failure in a command for a single package would immediately abort the test.
  • Deprecated --plugins in favor of new --packages. --plugins continues to work for now, but will be removed in the future.
  • Make drive-examples device detection robust against Flutter tool banners.
  • format is now supported on Windows.


  • Add a --build-id flag to firebase-test-lab instead of hard-coding the use of CIRRUS_BUILD_ID. CIRRUS_BUILD_ID is the default value for that flag, for backward compatibility.
  • xctest now supports running macOS tests in addition to iOS
    • Breaking change: it now requires an --ios and/or --macos flag.
  • Breaking change: build-examples for iOS now uses --ios rather than --ipa.
  • The tooling now runs in strong null-safe mode.
  • publish plugins check against pub.dev to determine if a release should happen.
  • Modified the output format of many commands
  • Removed podspec's --skip in favor of --ignore using the new structure.


  • Remove xctest's --skip, which is redundant with --ignore.


  • Add a pubspec-check command


  • Cosmetic fix to publish-check output
  • Add a --dart-sdk option to analyze
  • Allow reverts in version-check


  • Add against-pub flag for version-check, which allows the command to check version with pub.
  • Add machine flag for publish-check, which replaces outputs to something parsable by machines.
  • Add skip-conformation flag to publish-plugin to allow auto publishing.
  • Change run-on-changed-packages to consider all packages as changed if any files have been changed that could affect the entire repository.


  • Update the allowed third-party licenses for flutter/packages.


  • Re-add the bin/ directory.


  • NOTE: This is no longer intended as a general-purpose package, and is now supported only for flutter/plugins and flutter/tools.
  • Fix version checks
    • Remove handling of pre-release null-safe versions
  • Fix build all for null-safe template apps
  • Improve handling of web integration tests
  • Supports enforcing standardized copyright files
  • Improve handling of iOS tests


  • Pin collection to 1.14.13 to be able to target Flutter stable (v1.22.6).


  • Make publish-plugin to work on non-flutter packages.


  • Don't call flutter format if there are no Dart files to format.


  • Add exclude flag to exclude any plugin from further processing.


  • all-plugins-app doesn't override the AGP version.


  • Fix code formatting.


  • Remove -v flag on drive-examples.


  • Fix bug where directory isn't passed


  • More verbose logging


  • Remove pre-alpha Windows workaround to create examples on the fly.


  • Print packages that passed tests in xctest command.
  • Remove printing the whole list of simulators.


  • Add ‘xctest’ command to run xctests.


  • Allow minor *-nullsafety pre release packages.


  • Fix test command when --enable-experiment is called.


  • Allow *-nullsafety pre release packages.


  • Support --enable-experiment flag in subcommands test, build-examples, drive-examples, and firebase-test-lab.


  • Support integration_test/ directory for drive-examples command


  • Support integration_test/ directory for package:integration_test


  • Add C++ and ObjC++ to clang-format.


  • Make http and http_multi_server dependency version constraint more flexible.


  • All_plugin test puts the plugin dependencies into dependency_overrides.


  • Only builds mobile example apps when necessary.


  • Add support for Linux plugins.


  • Default to showing podspec lint warnings


  • Serialize linting podspecs.


  • Remove retry on Firebase Test Lab's call to gcloud set.
  • Remove quiet flag from Firebase Test Lab's gcloud set command.
  • Allow Firebase Test Lab command to continue past gcloud set network failures. This is a mitigation for the network service sometimes not responding, but it isn't actually necessary to have a network connection for this command.


  • Minor cleanup to the analyze test.


  • Firebase Test Lab command generates a configurable unique path suffix for results.


  • Firebase Test Lab command now only tries to configure the project once
  • Firebase Test Lab command now retries project configuration up to five times.



  • Version check command now fails on breaking changes to platform interfaces.
  • Updated version check test to be more flexible.


  • Ensure that Firebase Test Lab tests have a unique storage bucket for each test run.


  • Ensure that Firebase Test Lab tests have a unique storage bucket for each package.


  • Remove --fail-fast and --silent from lint podspec command.


  • Update publish-plugin to use flutter pub publish instead of just pub publish. Enforces a pub publish command that matches the Dart SDK in the user's Flutter install.


  • Update Firebase Testlab deprecated test device. (Pixel 3 API 28 -> Pixel 4 API 29).


  • Runs pub get before building macos to avoid failures.


  • Default macOS example builds to false. Previously they were running whenever CI was itself running on macOS.


  • analyze now asserts that the global analysis_options.yaml is the only one by default. Individual directories can be excluded from this check with the new --custom-analysis flag.


  • Add --skip and --no-analyze flags to podspec command.


  • Add support for macos on DriveExamplesCommand and BuildExamplesCommand.


  • Adopt pedantic analysis options, fix firebase_test_lab_test.


  • Add a command to run pod lib lint on podspec files.


  • Increase Firebase test lab timeouts to 5 minutes.


  • Run tests with --platform=chrome for web plugins.


  • Add a command for publishing plugins to pub.


  • Update DriveExamplesCommand to use ProcessRunner.
  • Make DriveExamplesCommand rely on ProcessRunner to determine if the test fails or not.
  • Add simple tests for DriveExamplesCommand.


  • Gracefully handle pubspec.yaml files for new plugins.
  • Additional unit testing.


  • Add a test case for transitive dependency solving in the create_all_plugins_app command.


  • Updated firebase-test-lab command with updated conventions for test locations.
  • Updated firebase-test-lab to add an optional “device” argument.
  • Updated version-check command to always compare refs instead of using the working copy.
  • Added unit tests for the firebase-test-lab and version-check commands.
  • Add ProcessRunner to mock running processes for testing.


  • Support the --plugins argument for federated plugins.


  • Support for finding federated plugins, where one directory contains multiple packages for different platform implementations.


  • Use package:file for file I/O.


  • Use java as language when calling flutter create.


  • Rename command for CreateAllPluginsAppCommand.


  • Use flutter create to build app testing plugin compilation.


  • Fix .travis.yml file name in README.md.


  • Skip version check if it contains publish_to: none.


  • Add option to exclude packages from generated pubspec command.


  • Avoid trying to version-check pubspecs that are missing a version.



  • Fix exception handling for version checker


  • Fix bug where we used a flag instead of an option


  • Add a command for checking the version number


  • Add a command for generating pubspec.yaml for All Plugins app.


  • Add a command for running driver tests of plugin examples.


  • Check for dependencies->flutter instead of top level flutter node.


  • Differentiate between Flutter and non-Flutter (but potentially Flutter consumed) Dart packages.