NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Type-safe analytics event tracking with code generation from YAML configuration. Supports multiple providers, testing utilities, and export formats.
Last release today
06 Oct 2026
Release timing varies
gaps range from 9 days to 3 months
Nearly every release is documented
notes for 25 of 25 stable releases
Nothing withdrawn
no release was ever pulled
10 months old
28 releases · first in 2025
One column per month.
chore(release): prepare 2.2.2
chore(release): prepare 2.2.2
analyzer constraint to >=7.7.1 <15.0.0. Projects on Dart 3.10+ need a newer analyzer for build_runner, freezed, and drift_dev, and the previous ^7.7.1 pin blocked their resolution. Projects that stay on analyzer 7 resolve as before.Added analytics-gen-yaml-schema , a package skill for AI agents creating, updating, and validating YAML tracking plans.
Added analytics-gen-yaml-schema, a package skill for AI agents creating, updating, and validating YAML tracking plans.
Install it from your application directory after upgrading to analytics_gen 2.2.1:
dart run skills@ get -p analytics_gen -s analytics-gen-yaml-schemaThe Dart API is unchanged.
analytics-gen-yaml-schema package skill for AI agents creating, updating, and validating YAML tracking plans. Install it from an application that depends on analytics_gen with dart run skills@ get -p analytics_gen -s analytics-gen-yaml-schema.Studio remembers your project file — after a reload the Studio reconnects to the last opened analytics-studio.json (Chrome/Edge, via the File System A
analytics-studio.json (Chrome/Edge, via the File System Access API) and remembers the file name on every browser, so you no longer re-open it each session. Save writes straight back to the same file; data is auto-saved locally regardless.analytics-studio.json now carries a meta block with a stable projectId, an optional name, and a content revision hash. The revision is deterministic and timestamp-free, so CI can compare project files across commits to detect analytics changes. The Dart studio target emits the same meta and preserves projectId across regenerations..json and ZIP file names) and optionally append the content-revision hash for unique CI-artifact names, via the new "Project…" dialog (which also shows the project ID and revision).analytics-studio.json changes on disk (an external edit, a git pull, a CI regeneration), the Studio offers to reload it instead of silently diverging (Chrome/Edge).revision hash (cyrb53 over canonical, key-sorted JSON) implemented in both the Studio (project-meta.ts) and the Dart generator (project_revision.dart), locked by a parity test so a studio-saved and a CI-generated file agree for identical content.Studio export as a first-class generation target — added targets.studio (with outputs.studio path) to analytics_gen.yaml. The Studio project file is n
targets.studio (with outputs.studio path) to analytics_gen.yaml. The Studio project file is now produced by the main pipeline alongside Dart code, docs, and exports.--studio CLI flag for dart run analytics_gen:generate. CLI flags follow the same precedence as --docs / --exports: explicit flag wins over config, with --no-studio to disable.generate_studio and studio_path are accepted at the root of the config for parity with other targets.parameters block (allowed by schema) no longer crash the import. YAML and JSON import paths share the same normalization logic.StudioGenerator so the standalone analytics_gen:studio_export binary and the main pipeline use the same zero-knowledge YAML reader.Analytics Gen Studio — web-based visual editor for analytics configuration, events, shared parameters, and contexts with real-time YAML preview.
schema/ now drive everything: Studio UI, TypeScript types, YAML templates, and documentation.Added boolean as an alias for bool type across type mapping, parsing, and documentation generation.
boolean as an alias for bool type across type mapping, parsing, and documentation generation.meta.auto_tracking_creation_date config option.
.analytics_tracking.json ledger file that records an ISO 8601 timestamp (yyyy-MM-ddTHH:mm:ss) when each event is first seen.tracking_creation_date value is automatically injected into each event's meta field during generation.analytics_gen.yaml and should be committed to version control.meta.include_meta_in_parameters config option to include event meta fields in the generated eventParameters map sent to analytics providers (e.g. Amplitude, Mixpanel). Default: false.Added dartReservedWords to StringUtil to prevent enum member name collisions with Dart keywords.
dartReservedWords to StringUtil to prevent enum member name collisions with Dart keywords.Export generated events from the analytics class renderer for easier access
Fixed NamingStrategy._toTitleCase stripping structural punctuation (e.g. :) from event_name_template. Previously, using casing: title_case with a temp
NamingStrategy._toTitleCase stripping structural punctuation (e.g. :) from event_name_template. Previously, using casing: title_case with a template like "{domain}: {event}" produced "Chat Under Dev Sheet Shown" instead of "Chat: Under Dev Sheet Shown". Only _ and - are now treated as word boundaries.Added templates/analytics_gen.yaml as a reference for all configuration options.
templates/analytics_gen.yaml as a reference for all configuration options.templates/events.yaml demonstrating event and parameter definitions.analytics_gen documentation.Introduced CapabilityProviderBase to replace CapabilityProviderMixin (deprecated).
CapabilityProviderBase to replace CapabilityProviderMixin (deprecated).--metrics flag to track generation performance.EventLoader now supports glob patterns (e.g., events/**/*.yaml).doc/PERFORMANCE.md, doc/TROUBLESHOOTING.md, doc/TESTING.md.Full Changelog: v1.0.1...v1.0.4
CapabilityProviderBase to replace CapabilityProviderMixin (deprecated).--metrics flag to track generation performance.EventLoader now supports glob patterns (e.g., events/**/*.yaml).doc/PERFORMANCE.md, doc/TROUBLESHOOTING.md, doc/TESTING.md.BatchingAnalytics where queue would stall after failed auto-flush.ConfigParser crash when optional fields are explicitly null.CapabilityRegistry now throws StateError on duplicate capability keys.BatchingAnalytics and MultiProviderAnalytics.Added "Dead Event" Audit Command (dart run analytics_gen:audit).
dart run analytics_gen:audit).test_matchers target to generate typed package:test matchers.dart_type parameter option to map parameters to existing Dart types.imports configuration for including external types.casing: snake_case, title_case, original).const maps for constant event parameters.test_matchers.Nothing published for this version
Enhanced SQL/CSV/JSON export formats with additional metadata.
AnalyticsParameter and AnalyticsDomain models.Enhance SQL generator with additional event and parameter metadata, sorting, and utility functions for improved data representation.
ParameterParser and its tests, consolidating parameter parsing logic into shared components.AnalyticsParameter and AnalyticsDomain models.Full Changelog: v1.0.0...v1.0.1
Add new documentation files and configure pubspec for API reference links and dartdoc inclusion.
Full Changelog: v0.2.1...v1.0.0
Nothing published for this version
Nothing published for this version
Note : The old flat structure is deprecated but may still work for some fields during a transition period, though migration is strongly recommended. e…
analytics_gen.yaml file has been completely restructured into logical groups (inputs, outputs, targets, rules) to improve readability and organization.
# Old (v0.2.0)
analytics_gen:
events_path: events
output_path: lib/src/analytics
docs_path: docs/analytics.md
generate_docs: true
strict_event_names: true
event_parameters_path: events/shared.yaml
# New (v0.2.1)
analytics_gen:
inputs:
events: events
shared_parameters:
- events/shared.yaml
outputs:
dart: lib/src/analytics
docs: docs/analytics.md
targets:
docs: true
rules:
strict_event_names: trueevent_parameters_path is strictly removed in favor of inputs.shared_parameters.Analytics.reset()).BatchingAnalytics.flush() behavior and updated README guidance.doc/VALIDATION.md.shared_parameters.
null).enforce_centrally_defined_parameters.prevent_event_parameter_duplicates.regex, min_length, max_length, min, max with runtime checks.PiiRenderer + Analytics.sanitizeParams).allowed_values.BaseRenderer to share common rendering logic across generators.GenerationTelemetry + implementations) integrated into CodeGenerator.SchemaValidator extracted from YamlParser with tests.YamlParser refactored to use loadYamlNode and enforces strict event-name rules.ignore_for_file lints and generation timestamp to generated files.Analytics.reset() for testing and hot-restart scenarios.Full Changelog: v0.2.0...v0.2.1
inputs, outputs, targets, rules).# Old → New
events_path → inputs.events
output_path → outputs.dart
docs_path → outputs.docs
event_parameters_path → inputs.shared_parameters
shared_parameters config.regex, min_length, max_length, min, max.allowed_values.Analytics.reset() for testing and hot-restart scenarios.Optimized generator performance with parallel processing and smart I/O.
meta) in YAML, propagated to code and exports.BatchingAnalytics for buffering events and AsyncAnalyticsAdapter for heavy providers.strict_event_names to prevent high-cardinality anti-patterns.Full Changelog: v1.0.6...v0.2.0
meta key-value pairs in YAML.BatchingAnalytics and AsyncAnalyticsAdapter.strict_event_names to prevent high-cardinality.Add include_event_description config option to optionally include an event's description property inside the emitted logger.logEvent parameters map. T
include_event_description config option to optionally include andescription property inside the emitted logger.logEventfalse to preserve existinganalytics_gen.yaml (key: include_event_description).
'description' key for events thatREADME.md were updated to document this flag.event_name strings
event_name using{parameter_name} and the code generator will replace them with"Screen: {screen_name}" → "Screen: ${screenName}").event_name still appears unchanged in docs/exports soinclude_event_description config option.event_name (e.g., "Screen: {screen_name}").- Full test coverage. - Added GitHub Actions CI.
Event deprecation lifecycle with deprecated + replacement.
--validate-only, --watch, --verbose, --plan.MultiProviderAnalytics with error isolation and onProviderFailure hook.deprecated + replacement.allowed_values for parameters with runtime validation.RecordedAnalyticsEvent for typed mock assertions.- Fix badge issues.
Refactor string interpolation in code generation.
- Minor updates and fixes.
- Minor updates and fixes.
- Initial release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →