NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Multi-flavor Flutter toolkit. Reads annspec.yaml, generates typed flavor classes, and wires Android, iOS, Firebase, AdMob and RevenueCat.
Last release 1 months ago
05 Sep 2026
Release timing varies
gaps range from 8 days to 5 weeks
Nearly every release is documented
notes for 58 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
3 months old
79 releases · first in 2026
One column per month.
Nothing published for this version
Fixed: Generated plist files (e.g. exportOptions.plist) escaped < and & in string values but left > as a literal character — for example came out as <
Fixed: Generated plist files (e.g. exportOptions.plist) escaped < and & in string values but left > as a literal character — for example <none> came out as <none> instead of <none>. Still valid XML either way, but inconsistent with the plist convention every other tool follows. > is now escaped consistently.
Changed: If your annspec.yaml doesn't pin a tooling.gradle_plugin version, sync now looks up the real, currently-published ANN Gradle plugin version f
Changed: If your annspec.yaml doesn't pin a tooling.gradle_plugin version, sync now looks up the real, currently-published ANN Gradle plugin version from Maven Central instead of using a version bundled with this package — so you always get an up-to-date version even if you haven't upgraded ann_flutter_flavor in a while. This does mean sync now needs network access in that specific case; pin tooling.gradle_plugin in your annspec.yaml if you want sync to stay fully offline. If the lookup fails (no network, registry down), sync now fails with a clear error instead of silently using a possibly-outdated version.
Added: sync now generates a per-flavor, per-build-type ios/ann/ExportOptions/ - .plist from your annspec.yaml, replacing a hand-maintained exportOptio
Added: sync now generates a per-flavor, per-build-type ios/ann/ExportOptions/<flavor>-<build_type>.plist from your annspec.yaml, replacing a hand-maintained exportOptions.plist shared across your whole app. It auto-fills your team ID and App Store provisioning profile, and you can add or override any key with a new export_options: field (cascades the same way as your other iOS settings). If you were setting credentials.app_store.export_options_plist, export_options_team_id, or export_options_signing_certificate, remove them — they're retired and no longer read.
Fixed: 1.7.2 was published broken — every command failed immediately with a dependency resolution error. Fully fixed, safe to upgrade.
Fixed: 1.7.2 was published broken — every command failed immediately with a dependency resolution error. Fully fixed, safe to upgrade.
Changed: Version-only release, published alongside the other plugins for parity. No functional changes.
Changed: Version-only release, published alongside the other plugins for parity. No functional changes.
Fixed: Plugin-contributed permission text (added in 1.7.0) was being mixed into the wrong generated file, making it harder to tell what came from your
Fixed: Plugin-contributed permission text (added in 1.7.0) was being mixed into the wrong generated file, making it harder to tell what came from your own config versus a plugin. It now goes into its own file, with no change to the final build output.
Added: Plugins can now ship default Info.plist/entitlements values (e.g. permission descriptions) that your annspec.yaml can always override. Useful f
Added: Plugins can now ship default Info.plist/entitlements values (e.g. permission descriptions) that your annspec.yaml can always override. Useful for plugins like ad SDKs that need standard iOS permission text.
Fixed: A bug where syncing could accidentally remove a local development override for the CocoaPods plugin dependency.
Fixed: A bug where syncing could accidentally remove a local development override for the CocoaPods plugin dependency.
Added: Generated iOS build files that don't need to be committed to git are now automatically ignored.
Added: Generated iOS build files that don't need to be committed to git are now automatically ignored.
Fixed: Info.plist and entitlements overrides configured for debug (or any non-release) build type were silently ignored and never made it into the gen
Fixed: Info.plist and entitlements overrides configured for debug (or any non-release) build type were silently ignored and never made it into the generated app.
Changed: These per-build-type files are now merged into the app at pod-install time rather than being baked in earlier, working together with a matching update to the CocoaPods plugin.
Added: A new env: option lets you pass custom key-value pairs straight into the generated iOS build settings, with the same per-flavor override behavi
Added: A new env: option lets you pass custom key-value pairs straight into the generated iOS build settings, with the same per-flavor override behavior as other settings. Also, a Google/Supabase sign-in setting (REVERSED_CLIENT_ID) is now generated automatically from your auth configuration, so you no longer need to set it by hand.
Changed: The Fastlane integration gem name changed (matching a rename of the underlying package). Syncing your project now updates your Gemfile automa
Changed: The Fastlane integration gem name changed (matching a rename of the underlying package). Syncing your project now updates your Gemfile automatically. Note: you still need to manually update the fastlane_require line in your Fastfile.
Changed: Generated iOS entitlements files now contain only the values you explicitly configured, instead of also duplicating your app's base entitleme
Changed: Generated iOS entitlements files now contain only the values you explicitly configured, instead of also duplicating your app's base entitlements file. There's no change to your actual built app — only to what the intermediate generated file contains.
Changed: Generated iOS Info.plist files no longer duplicate your app's base Info.plist content or hardcode values like app name and version — those al
Changed: Generated iOS Info.plist files no longer duplicate your app's base Info.plist content or hardcode values like app name and version — those already resolve correctly through Xcode's own build settings.
Added: Syncing your project now automatically fixes a few standard keys in your app's Info.plist if they're missing or set incorrectly. If you'd hand-written a literal value for one of these (like a hardcoded app name), it will be replaced with the correct placeholder — move any such values into your annspec.yaml instead. This may reformat the file the first time it runs; that's expected and harmless.
Added: You can now configure entitlements (like Sign in with Apple) per flavor in annspec.yaml, generating a proper entitlements file for each one. Pr
Added: You can now configure entitlements (like Sign in with Apple) per flavor in annspec.yaml, generating a proper entitlements file for each one. Previously, hand-authored entitlements could be silently lost when iOS project files were regenerated — this keeps that configuration safe and version-controlled.
Fixed: A bug in a third-party icon-generation library was corrupting iOS project build settings during app icon generation. Icon generation now protec
Fixed: A bug in a third-party icon-generation library was corrupting iOS project build settings during app icon generation. Icon generation now protects your project file from this corruption automatically.
Fixed: Generating iOS icons for more than one flavor in a single run used to crash starting with the second flavor. All flavors now generate successfu
Fixed: Generating iOS icons for more than one flavor in a single run used to crash starting with the second flavor. All flavors now generate successfully in one pass.
Changed: Removed a redundant source-image validation step for iOS icon generation. Any problem with your source image (wrong format, too small, etc.)
Changed: Removed a redundant source-image validation step for iOS icon generation. Any problem with your source image (wrong format, too small, etc.) is now reported directly and consistently, matching how Android and web icon generation already behave.
Fixed: Icon generation could fail with a "command not found" error when launched from the Studio plugin, depending on the system environment. It now r
Fixed: Icon generation could fail with a "command not found" error when launched from the Studio plugin, depending on the system environment. It now reliably finds the correct tool regardless of how it was launched.
Fixed: Web icon generation as part of the icon-generation command was silently doing nothing. It now works correctly. Also fixed a side effect where a
Fixed: Web icon generation as part of the icon-generation command was silently doing nothing. It now works correctly. Also fixed a side effect where a previous run's generated web icons could be left behind unintentionally.
Added: A new generate-icons command is now the single, unified way to generate app icons for Android, iOS, and web — used both from the command line a
Added: A new generate-icons command is now the single, unified way to generate app icons for Android, iOS, and web — used both from the command line and from Studio's "Generate App Icons" action.
Fixed: A long-standing bug meant generated iOS icons were being written into your app's own shared icon catalog instead of a dedicated per-flavor location — overwriting your app's default icon instead of creating a separate icon per flavor. This is now fixed, and your app's original icon is preserved.
Fixed: A pre-flight check that runs before iOS builds could fail silently on machines with certain system language settings, leaving a real configurat
Fixed: A pre-flight check that runs before iOS builds could fail silently on machines with certain system language settings, leaving a real configuration problem unfixed. This now works reliably regardless of system locale.
Fixed: A new project's very first iOS build could fail with a Swift version conflict error. An additional pre-flight fix now runs early enough to prev
Fixed: A new project's very first iOS build could fail with a Swift version conflict error. An additional pre-flight fix now runs early enough to prevent this.
Added: You can now set the iOS deployment target and Swift version for your whole app in annspec.yaml, generated automatically into your iOS build set
Added: You can now set the iOS deployment target and Swift version for your whole app in annspec.yaml, generated automatically into your iOS build settings.
Fixed: Fixed a fresh project's first iOS build failing because Flutter's default project template ships with the iOS platform line commented out.
Changed: The flavor name property no longer requires null-checking — it now always falls back to a sensible default instead of potentially being null.
Changed: The flavor name property no longer requires null-checking — it now always falls back to a sensible default instead of potentially being null.
Added: Added a convenient id shorthand for getting a flavor's identifier.
Internal: Internal refactor of how generated flavor code is structured. No change to any public API or app behavior.
Internal: Internal refactor of how generated flavor code is structured. No change to any public API or app behavior.
Added: Restored convenient shorthand accessors (like .name, .auth) for the common case of querying the currently active platform and build type.
Changed (breaking): Reworked how generated code lets you query flavor properties (name, id, auth, Firebase options, custom config) for a specific plat
Changed (breaking): Reworked how generated code lets you query flavor properties (name, id, auth, Firebase options, custom config) for a specific platform. Each method now takes optional parameters, and a new existsOn check lets you safely test whether a flavor is configured for a given platform before querying it. The older separate convenience properties (.name, .auth, etc.) were removed in favor of this unified approach. Querying a property for a platform your flavor doesn't support now throws a clear error instead of silently returning wrong data.
Fixed: Previously, querying a flavor's name or ID for a platform it wasn't configured on could silently return an unrelated default value instead of failing clearly. Also fixed a case where a full ID override in configuration was being ignored.
Nothing published for this version
Deprecated: A few older method names are deprecated in favor of the new, clearer ones.
Added: New per-platform accessor methods (nameFor, idFor, authFor, firebaseOptionsFor) give consistent, predictable behavior when a flavor's configuration varies — or is missing — for a specific platform.
Changed: Older properties like .name and .auth still work as convenient shortcuts built on top of the new methods.
Deprecated: A few older method names are deprecated in favor of the new, clearer ones.
Removed (breaking): Some old top-level helper functions for Firebase options were removed; use the new per-flavor methods instead.
Fixed: Fixed several bugs where flavor names, custom config values, and generated string values could resolve incorrectly or inconsistently across platforms and build types.
Fixed: Critical fix — installing this package from pub.dev (rather than using it inside its own monorepo) was completely broken, causing every command
Fixed: Critical fix — installing this package from pub.dev (rather than using it inside its own monorepo) was completely broken, causing every command to fail with a package-resolution error. This is now fixed and verified against a real pub.dev-style install.
Added: Added support for generating per-flavor iOS launch screen images, matching what Studio's plugin already offered.
Added: Added support for generating per-flavor iOS launch screen images, matching what Studio's plugin already offered.
Added: Internal groundwork for a future Info.plist customization feature. No visible behavior change in this release.
Added: Internal groundwork for a future Info.plist customization feature. No visible behavior change in this release.
Fixed: Fixed a case where a stale Firebase configuration file path could cause iOS builds to fail with a "file not found" error during the build phase
Fixed: Fixed a case where a stale Firebase configuration file path could cause iOS builds to fail with a "file not found" error during the build phase that copies Firebase config into your app.
Added: Syncing your project now automatically adds a required Firebase setup hook to your iOS Podfile if it's missing, so Firebase config works correc
Added: Syncing your project now automatically adds a required Firebase setup hook to your iOS Podfile if it's missing, so Firebase config works correctly out of the box for new projects.
Changed: Syncing your project no longer automatically regenerates iOS app icons as a side effect, since that step is slow and requires an extra depend
Changed: Syncing your project no longer automatically regenerates iOS app icons as a side effect, since that step is slow and requires an extra dependency. Generate icons explicitly instead, using the dedicated icon-generation action or command.
Fixed: Generated code for custom configuration values no longer includes a redundant, always-identical case for "profile" builds, slightly simplifying
Fixed: Generated code for custom configuration values no longer includes a redundant, always-identical case for "profile" builds, slightly simplifying the generated output.
Fixed: Fixed the upgrade command looking up the wrong package names for the Gradle and Fastlane plugins, which caused version lookups to silently fail
Fixed: Fixed the upgrade command looking up the wrong package names for the Gradle and Fastlane plugins, which caused version lookups to silently fail. Also fixed syncing writing an incorrect, uninstallable Fastlane gem name into your Gemfile — this is now corrected automatically, including fixing any already-broken Gemfile from a previous sync.
Changed: Configuration parsing now goes through a shared internal library instead of ad-hoc parsing logic.
Changed: Configuration parsing now goes through a shared internal library instead of ad-hoc parsing logic.
Fixed: Fixed a precedence bug where a flavor's own Firebase settings could be incorrectly overridden by unrelated default settings. Also fixed custom configuration not resolving correctly for profile builds.
Added: New tooling: section in annspec.yaml lets you declare and pin plugin versions. A new upgrade command automatically finds and applies the latest
Added: New tooling: section in annspec.yaml lets you declare and pin plugin versions. A new upgrade command automatically finds and applies the latest matching versions.
Changed: Syncing now writes more precise version constraints into your project files when a version is declared in the new tooling: section.
Fixed: Bundled plugin updates fix a profile-build Firebase config issue on Android and a Firebase file path issue on iOS.
Fixed: Bundled plugin updates fix a profile-build Firebase config issue on Android and a Firebase file path issue on iOS.
Fixed: Bundled Android plugin update fixes a bug where your Firebase config file was being deleted after every build, causing failures on subsequent b
Fixed: Bundled Android plugin update fixes a bug where your Firebase config file was being deleted after every build, causing failures on subsequent builds.
Changed: Maintenance release — no user-facing changes.
Changed: Maintenance release — no user-facing changes.
Changed: Bundled Android plugin update stops an unnecessary file rewrite on every build when nothing actually changed.
Changed: Bundled Android plugin update stops an unnecessary file rewrite on every build when nothing actually changed.
Fixed: Fixed a bug that could create duplicate entries in your Gemfile depending on which quote style was used.
Fixed: Fixed a bug that could create duplicate entries in your Gemfile depending on which quote style was used.
Fixed: Fixed the required Podfile setup lines that get written during sync.
Fixed: Fixed the required Podfile setup lines that get written during sync.
Fixed: Fixed an incorrect plugin name being written into your Podfile during sync.
Fixed: Fixed an incorrect plugin name being written into your Podfile during sync.
Changed: Maintenance release — no user-facing changes.
Changed: Maintenance release — no user-facing changes.
Fixed: Fixed duplicate-entry detection in your Gemfile to handle both quote styles correctly.
Fixed: Fixed duplicate-entry detection in your Gemfile to handle both quote styles correctly.
Changed: Removed web icon generation from the sync-web command (use the dedicated app icons command instead) and stopped automatically modifying .giti
Changed: Removed web icon generation from the sync-web command (use the dedicated app icons command instead) and stopped automatically modifying .gitignore for web build output files, since those are meant to be tracked in git.
Added: Web asset syncing now correctly excludes a Cloudflare Workers config template from being copied into your web output. Also added a new template
Added: Web asset syncing now correctly excludes a Cloudflare Workers config template from being copied into your web output. Also added a new template variable for referencing the per-flavor web output directory.
Added: Your app's App Store ID (if configured) is now available at runtime through the generated flavor config.
Added: Your app's App Store ID (if configured) is now available at runtime through the generated flavor config.
Nothing published for this version
Added: Added per-flavor iOS icon support, including automatic generation from a source image and the build settings needed for Xcode to pick up the ri
Added: Added per-flavor iOS icon support, including automatic generation from a source image and the build settings needed for Xcode to pick up the right icon per flavor. Syncing now includes icon generation as an automatic step for any flavor with an icon configured.
Fixed: Fixed a bug where platform-level default auth configuration was being ignored for web and Windows, and in some cases for Android and iOS as wel
Fixed: Fixed a bug where platform-level default auth configuration was being ignored for web and Windows, and in some cases for Android and iOS as well.
Fixed: Fixed a Dart compile error in generated code that only configured some platforms. Also cleaned up a lint warning in generated files.
Fixed: Fixed a Dart compile error in generated code that only configured some platforms. Also cleaned up a lint warning in generated files.
Added: Added separate helper functions for getting Firebase options by build type, and a convenient default auth() method that automatically picks the
Added: Added separate helper functions for getting Firebase options by build type, and a convenient default auth() method that automatically picks the right config for the current build.
Breaking: The auth() method was renamed to authRelease() — if you had overridden it, rename your override. Running sync regenerates the affected file automatically with the correct name.
Fixed: Bundled Android plugin update ensures Firebase file copying happens reliably before build cleanup runs.
Fixed: Bundled Android plugin update fixes a Firebase config file copy path issue.
Fixed: Bundled Android plugin update fixes a Firebase config file copy path issue.
Fixed: Fixed an incorrect command-line flag name used when generating Firebase configuration for iOS.
Fixed: Fixed an incorrect command-line flag name used when generating Firebase configuration for iOS.
Added: You can now specify which Xcode target Firebase setup should target, configurable per flavor and build type.
Added: You can now specify which Xcode target Firebase setup should target, configurable per flavor and build type.
Fixed: Fixed Firebase setup for iOS failing due to an incorrect output file argument.
Your coding agent can read these notes before it upgrades. Set up the MCP server →