dart_apitool
A tool to analyze the public API of a package, create a model of it and diff it against another version to check semver.
0.23.2
5.0K downloads/mo
#3831 most downloaded on pub.dev
bmw-tech/dart_apitool
What this package is like to depend on
Last release 1 months ago
23 Jul 2026
Release timing varies
gaps range from 1 weeks to 8 months
Nearly every release is documented
notes for 43 of 44 stable releases
2 versions withdrawn
withdrawn after publishing
4 years old
48 releases · first in 2022
3 releases in the last 12 months
see the full history below
Release timeline
48 releases · Aug 2022 to Jul 2026Releases
latest 48-
0.23.223 Jul 2026Release notes
Open source →--set-exit-on-version-check-failureto suppress exit code != 0 in case a mismatch is detected
-
0.23.120 Feb 2026Release notes
Open source →- technical: bump analyzer to ^10.0.2.
- Fix type hierarchy calculations when the type no longer is known by the new public API
- Fix hyphens in packages bug.
-
0.23.031 Aug 2025Release notes
Open source →- technical: use package_config to interact with package configs
- fix: problem resolving external packages
-
0.22.130 Jul 2025Release notes
Open source →- feat: Support git references for package analysis
- Supports both HTTPS and SSH git repository formats
- Optional branch/tag/commit specification (e.g., git://https://github.com/user/repo:branch)
- Automatic cloning, dependency resolution, and cleanup
- Formats: git://https://github.com/user/repo or git://[email protected]:user/repo
- fix: package name resolving for types referenced via a package-reference ('package:some_package/some_entrypoint.dart)
- fix: private top level methods where treated as part of the public API (resulting in all types used there treated as part of the public API as well)
- fix: don't print color control sequences if no terminal is attached (e.g. when piping the output to a file)
- fix: carry over entry points of type aliases to the aliased type (especially important for private types)
- fix: naming of unary operators was wrong (unaryunary...)
- fix: handling of top level functions in the context of show / hide in exports
- fix: report type parameter change in a base class as new change kind instead of removal + addition of base classes
- fix: handling of relative package paths
- feat: Support git references for package analysis
-
0.22.022 Jul 2025Release notes
Open source →- fix: Fixes an issue if we have to deal with two types with the same name
- feat: add support for @internal annotations
- fix: Narrowing return types (generics) should not be considered a breaking change
- feat: Report usages of non-exported interfaces in JSON
-
0.21.107 Jun 2025 -
0.21.007 Jun 2025 withdrawnRelease notes
Open source →- chore: adapt to new analyzer API. This may break things
- feat: run pub get indirectly
-
0.20.215 Jan 2025 -
0.20.111 Dec 2024Release notes
Open source →- fix: remove dependency overrides from the pubspec.yaml file of the package to analyze as those might point to relative paths that are not resolvable in the context of the package to analyze
-
0.20.015 Oct 2024Release notes
Open source →- update analyzer's lower boundary to avoid the 'withNullability' required param (it is required on lower versions)
-
0.19.115 Oct 2024Release notes
Open source →- fix JSON report to specify "major" as change type for breaking changes
- adapt pub ref mechanism to also support omitting the version (and using the latest version if no version has been specified)
- fix: locking upper version of analyzer and adding 'withNullability' param
-
0.19.004 Oct 2024Release notes
Open source →- introduces
force-use-flutteroption for all commands to force dart_apitool to use thefluttercommand. - extend type usage tracking and fix situations in which types that are used in @visibleForTesting contexts were detected as not exported
- fix: don't treat adding static elements (methods, fields) or consts to a required interface as breaking
- fix: changed default for
--check-sdk-versionfromontooffas changing the SDK version can not lead to breaking existing consumer code
- introduces
-
0.18.010 Feb 2024Release notes
Open source →- add missing export to json output for
extractcommand - adds analysis of readability and writability of fields.
- fixes interface equality logic in the differ functionality to be less strict on library renaming (if the entry points are still the same)
- fix change compatibility check for
dynamicandObject?parameters - fix compatibility checks for return types of executables
- add missing export to json output for
-
0.17.019 Dec 2023Release notes
Open source →- bump dart SDK requirements to >=3.0.0
- Search downloaded packages in entire .pub-cache hosted directory in case path naming changes
- adds information about the package versions and the version check result to the reports (console, json, markdown)
-
0.16.328 Sep 2023Release notes
Open source →- adds more diff result reporting options (cli, json, markdown)
- fixes broken local packages refs
-
0.16.226 Sep 2023Release notes
Open source →- fixes relative path handling in package config (leading to unresolvable types)
-
0.16.126 Sep 2023Release notes
Open source →- fixes issues with pubspec_overrides.yaml that got published with a pub package
-
0.16.026 Sep 2023Release notes
Open source →- simplify preparation of packages by replacing the directory structure copy operation with carrying over the package config (that contains the absolute paths to the original path references). Thanks to @mosuem and @jonasfj for this idea! This makes the
--include-path-dependenciesoption obsolete. This option has no effect anymore and will be removed in a future version.
- simplify preparation of packages by replacing the directory structure copy operation with carrying over the package config (that contains the absolute paths to the original path references). Thanks to @mosuem and @jonasfj for this idea! This makes the
-
0.15.126 Sep 2023Nothing published for this version
-
0.15.003 Jul 2023Release notes
Open source →- Remove effect of
--dependency-check-modeand add a deprecation warning (for why refer to https://github.com/bmw-tech/dart_apitool/issues/144)
- Remove effect of
-
0.14.107 Jun 2023Release notes
Open source →- Fixes an issue with path dev-dependencies
- Fixes issues with isSealed handling (extracted JSON was wrong) thanks @hamsbrar
-
0.14.010 May 2023Release notes
Open source →- improves change type detection for parameter type changes (widening types is now considered non-breaking)
- ignores enum constructors and elements marked with @override
- detects @sealed classes and doesn't consider them as required interfaces
- removes '[no]-merge-base-classes' option as this functionality is crucial now
- improved entry point tracking
- warning if a root level type is part of the public API but not exported
- can be turned into an error with
--[no-]set-exit-on-missing-export
- can be turned into an error with
- new option
--ignore-requirednessto be less strict about interface changes (only advised for packages with controlled usage)
-
0.13.009 Mar 2023Release notes
Open source →- fixes an issue with required interface detection on property and field usage
- default behavior of
--ignore-prereleaseis nowon - improved pre-release handling. Now dart_apitool plays well in scenarios where released pre-release versions are compared to the new stable release
- fall back to system Flutter executable if no matching Flutter executable can be found
-
0.12.102 Mar 2023 -
0.12.015 Feb 2023Release notes
Open source →- extend handling of change types to include "breaking", "non-breaking-minor" and "non-breaking-patch" changes
- only output sub process output in a "window" if stdout is a terminal
-
0.11.113 Feb 2023 -
0.11.010 Feb 2023Release notes
Open source →- replaces
--check-versionswith--version-check-mode - reduces the amount of directories to copy in a path-dependency-context
- prints sub process output
--remove-exampleoption (defaults to true) that deletes the "example" directory of the package to analyze (in the temporary directory) to avoid issues with the example project
- replaces
-
0.10.201 Feb 2023 -
0.10.120 Jan 2023Release notes
Open source →- fixes an issue with projects having path dependencies to projects inside their folder structure
-
0.10.013 Jan 2023Release notes
Open source →- adds include-path-dependencies parameters
- dependencies are ignored if one side of the diff is a path dependency
-
0.9.120 Dec 2022Release notes
Open source →- use the relative path only for top level entities
- use a more stable way of getting the relative path
-
0.9.015 Dec 2022Release notes
Open source →- Adds detection and consideration of @experimental flag
- Increases robustness regarding
- analysis_options: Those get now removed (in a temporary copy) to not limit the scope of dart_apitool
- Duplicate names: Detection of interfaces now considers the relative path of the library file to avoid crashes on duplicate names
-
0.8.017 Nov 2022Release notes
Open source →- Improves handling of elements without root
- Changing required interfaces (even adding things) is now considered a breaking change interfaces are considered 'required' if they are abstract and used in a public method or field. This indicates that this interfaces is intended to be implemented by the user and therefore adding things also is breaking the API.
- Detect changes in package dependencies
- Adds codes for API diff reasons that point to an explanation here
-
0.7.024 Oct 2022Release notes
Open source →- BREAKING: renamed "Class" model elements to "Interface" to reflect the abstraction it represents
- Fixes Extension handling (are now treated as interfaces)
-
0.6.005 Oct 2022Release notes
Open source →- BREAKING: removes capability to use stored models in diffs
- BREAKING: CommandMixin's "analyze" no longer does clean up preparation results. For this the newly introduced "cleanUp" method has to be called
- Fixes major issue with equal class names (or top-level variables, functions or type aliases) imported in different namespaces
- Improve diff tree output
- Analyzes and diffs platform constraints
- Analyzes and diffs SDK versions
-
0.5.109 Sep 2022 -
0.5.006 Sep 2022Release notes
Open source →- PackageAPI semantics are now an enum
- Fixes issues with entry points for fields and executables (differ ignored them)
- API changes for the diff command are now printed as a proper tree
-
0.4.028 Aug 2022Release notes
Open source →- adds type aliases to Package API model
- fixes missing entry points for root level fields and functions
- fixed typo in
PackageApiDiffResult
-
0.3.228 Aug 2022 -
0.3.127 Aug 2022 -
0.3.027 Aug 2022Release notes
Open source →- BREAKING: by default base class elements get now merged with the derived class. This makes previously saved models incompatible.
"dart_apitool" will detect that, but it is not possible to diff an old model with a new one. (can only happen if you saved the model, doesn't affect live analysis of pub or directory references).
To deactivate that behavior you can use the--no-merge-base-classesoption. - fixes entry point handling
- fixes minimum version handling for versions with major == 0
- BREAKING: by default base class elements get now merged with the derived class. This makes previously saved models incompatible.
-
0.2.127 Aug 2022 -
0.2.027 Aug 2022 withdrawnRelease notes
Open source →- Command cleanup
- Calls
dart puborflutter pubdepending on the package dependencies - Refactor Dart and Pub Interaction helpers
- Entry points are now analyzed and diffed as well (List of publicly available import destinations that this element can be reached with)
-
0.1.221 Aug 2022 -
0.1.121 Aug 2022 -
0.1.021 Aug 2022Release notes
Open source →- Fixes pre-release handling: in case of a pre-release version there is no differentiation between breaking and non-breaking changes
- Fixes some issues with the analyzer and pub package references
- loosened strictness on pre-release versions
-
0.1.0-dev.120 Aug 2022 pre-releaseNothing published for this version
-
0.0.1-dev.120 Aug 2022 pre-release