NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Firebase Analytics provider for analytics_hub. Sends LogEvent events to Firebase via the official SDK.
Last release 2 months ago
05 Aug 2026
Release timing varies
gaps range from 2 weeks to 5 months
Nearly every release is documented
notes for 10 of 10 stable releases
Nothing withdrawn
no release was ever pulled
8 months old
10 releases · first in 2026
One column per month.
Release 0.5.0: port zeely-mobile fixes, drop session support, add CI
Port behavior fixes made in the zeely-mobile copies of these packages:
Remove session support (breaking): Session, HubSessionDelegate,
AnalyticsHub.sessionDelegate and AnalytycsProvider.setSession are gone;
apps manage user identity directly on the underlying SDKs. The
getAnonymousId parameters of the Mixpanel/Appsflyer providers are
removed with it.
Add GitHub Actions CI modeled on basalt_dart: analyze/format/test plus
publish dry-run on every push/PR, and tag-driven pub.dev publishing via
OIDC (-v tags).
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
dart testtest from the provider packageslints from mixpanel (inherited fromtest from the root package (no tests there).Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Fix the long-standing typo in the provider base class name across all
packages, docs, examples, and tests. No compatibility alias is kept —
the packages have no external consumers yet.
Also move resolution: workspace from pubspec_overrides.yaml into each
package's pubspec.yaml (the layout basalt_dart and zeely-mobile use, and
what dart test's workspace validation expects) and delete the
overrides files.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Ran pana (the tool pub.dev uses to compute package score) against all
four packages. analytics_hub itself scores a clean 160/160.
Found a real bug via the "compatible with dependency constraint lower
bounds" check: mixpanel_flutter's declared minimum (2.0.0) allows
versions up to 2.2.0 where Mixpanel.track() returns void instead of
Future. MixpanelEventResolver.resolve declares a Future
return type and returns the track() call directly, so pinning an old
2.x mixpanel_flutter breaks analysis (and would break at runtime for
anyone actually on that range). Raised the lower bound to >=2.3.0,
where track() became async. Verified dart analyze is clean and tests
pass with dependencies downgraded to their lower bounds.
The three provider packages can't get a full pana score yet since they
depend on analytics_hub, which isn't published to pub.dev — pana (like
pub.dev itself) resolves dependency_overrides are ignored for scoring,
so this is a publish-order concern rather than a code issue: publish
analytics_hub first, then the providers.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Covers badges + workspace banners on all READMEs, a "what's inside"
reference table in the core README, a packages/analytics_hub/doc/
folder with four deep-dive guides, and a root CONTRIBUTING.md —
scoped down from basalt_dart's equivalent docs to this repo's size.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Badges + "part of workspace" banners on every README (EN/UA), a
"what's inside" reference table in the core README, a
packages/analytics_hub/doc/ folder with four deep-dive guides
(getting started, providers, interceptors & context, testing), and a
root CONTRIBUTING.md — implements the design spec, which is removed
now that it's realized in the actual docs.
Skipped the MIT license badge from the original spec: the repo has no
LICENSE file, so that badge would have been false.
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
SDK lifecycle belongs in the app — keep only flush for buffered backends.
Co-authored-by: Cursor cursoragent@cursor.com
Co-authored-by: Cursor cursoragent@cursor.com
Co-authored-by: Claude Fable 5 noreply@anthropic.com
Co-authored-by: Cursor cursoragent@cursor.com
interceptors constructor parameter for provider-level interceptors.logging dependency; flush() no longer logs a "not supported"
message and simply inherits the base no-op.setSession along with core session support. Set the Firebase user id
directly via FirebaseAnalytics.setUserId.initialize override that called setAnalyticsCollectionEnabled(true).
Enable collection on the FirebaseAnalytics instance in the app if needed.analytics_hub: ">=0.5.0 <0.6.0".Updated dependency constraint to analytics_hub: ">=0.4.0 <0.5.0" to align with the core 0.4.0 release and the new EventProvider.overrides API.
analytics_hub: ">=0.4.0 <0.5.0" to align with
the core 0.4.0 release and the new EventProvider.overrides API.FirebaseAnalyticsHubProviderIdentifier to
FirebaseAnalyticsHubIdentifier for consistency with other official providers.FirebaseAnalyticsHubIdentifier
instead of FirebaseAnalyticsHubProviderIdentifier.Updated dependency constraint to analytics_hub: ">=0.3.3 <0.4.0".
analytics_hub: ">=0.3.3 <0.4.0".logging dependency and provider-level logging for lifecycle behavior.FirebaseAnalyticsHubProvider constructor call to the new core provider contract (explicit interceptors).flush() override (no-op with informational log; Firebase SDK has no explicit flush API).Updated dependency constraint to analytics_hub: ">=0.3.1 <0.4.0".
analytics_hub: ">=0.3.1 <0.4.0".Context/ContextEntry-based dispatch context).0.3.1.Reverted Firebase provider to a single LogEvent flow.
LogEvent flow.List<EventProvider> and ProviderIdentifier.analytics_hub: ">=0.3.0 <0.4.0".FirebaseAnalyticsEventResolver to new core resolver API based on
ResolvedEvent and EventDispatchContext.FirebaseAnalyticsECommerceEventResolver.ECommerceEventResolver implementation from FirebaseAnalyticsEventResolver.analytics_hub_firebase no longer supports e-commerce event types from core.resolve({required ResolvedEvent event, required EventDispatchContext context}).Updated FirebaseAnalyticsEventResolver to support nullable values in LogEvent.properties by filtering out null entries before calling FirebaseAnalytic
FirebaseAnalyticsEventResolver to support nullable values in
LogEvent.properties by filtering out null entries before calling
FirebaseAnalytics.logEvent.analytics_hub: ">=0.2.2 <0.3.0".Updated README to use providers and FirebaseAnalyticsHubProviderIdentifier.
providers and FirebaseAnalyticsHubProviderIdentifier.FirebaseAnalyticsHubProviderKey was renamed to FirebaseAnalyticsHubProviderIdentifier.Migrated provider identity usage from ProviderKey to ProviderIdentifier.
ProviderKey to ProviderIdentifier.Event.providers API with EventProvider.analytics_hub: ">=0.2.0 <0.3.0".FirebaseAnalyticsHubProvider now uses identifier instead of key.FirebaseAnalyticsHubProviderKey now extends ProviderIdentifier<FirebaseAnalyticsEventResolver>.providers (List<EventProvider<...>>) instead of providerKeys.Implemented all GA4 e-commerce events in FirebaseAnalyticsECommerceEventResolver: AddToCart, AddToWishlist, ViewCart, AddPaymentInfo, AddShippingInfo,
FirebaseAnalyticsECommerceEventResolver: AddToCart, AddToWishlist, ViewCart, AddPaymentInfo, AddShippingInfo, BeginCheckout, Purchase, RemoveFromCart, SelectItem, ViewItem, ViewItemList, ViewPromotion, Refund (in addition to existing SelectPromotion).analytics_hub: ">=0.1.0 <0.2.0".Initial Firebase Analytics provider integration for analytics_hub.
analytics_hub.FirebaseAnalyticsHubProvider and FirebaseAnalyticsHubProviderKey for routing events to Firebase.FirebaseAnalyticsEventResolver mapping LogEvent to FirebaseAnalytics.logEvent.FirebaseAnalyticsECommerceEventResolver handling SelectPromotionECommerceEvent via FirebaseAnalytics.logSelectPromotion.FirebaseAnalytics.setUserId based on Session.id.Your coding agent can read these notes before it upgrades. Set up the MCP server →