Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when logging analytics events, setting user properties, configuring default event parameters, building funnels, or adding screen-view tracking.
.claude/skills/evanca-firebase-analytics/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 36% | 0% |
| case-15 | ✓→✓ | = Same ✓ | 19% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 18% | 0% |
This skill defines how to correctly implement Firebase Analytics in Flutter applications, covering setup, event logging, user properties, and data collection best practices.
Use this skill when:
flutter pub add firebase_analytics
flutter rundartimport 'package:firebase_analytics/firebase_analytics.dart'; // After Firebase.initializeApp(): FirebaseAnalytics analytics = FirebaseAnalytics.instance;
FirebaseAnalyticsCore under Swift Package Manager, or FirebaseAnalytics/Core under CocoaPods) instead of the default FirebaseAnalytics dependency to avoid App Store review questions about advertising identifiers:FIREBASE_ANALYTICS_WITHOUT_ADID=true when building (FIREBASE_ANALYTICS_WITHOUT_ADID=true flutter build ios).dartMaterialApp( navigatorObservers: [ FirebaseAnalyticsObserver(analytics: FirebaseAnalytics.instance), ], );
For GoRouter, log screen views manually on route changes:
dartGoRouter( observers: [FirebaseAnalyticsObserver(analytics: FirebaseAnalytics.instance)], );
Firebase.initializeApp() completes before accessing FirebaseAnalytics.instance.first_open, session_start) appear without extra code.Use predefined event methods when possible for maximum detail in reports and access to future Google Analytics features:
dartawait FirebaseAnalytics.instance.logSelectContent( contentType: "image", itemId: itemId, );
Use the general logEvent() method for both predefined and custom events:
dartawait FirebaseAnalytics.instance.logEvent( name: "select_content", parameters: { "content_type": "image", "item_id": itemId, }, );
dartFuture<void> logAddToCart(String productId, String productName, double price) async { await FirebaseAnalytics.instance.logEvent( name: 'add_to_cart', parameters: { 'product_id': productId, 'product_name': productName, 'price': price, 'currency': 'USD', }, ); }
firebase_, google_, and ga_ are reserved — do not use them for parameter names.Set default parameters for all future events (not supported on web):
dartawait FirebaseAnalytics.instance.setDefaultEventParameters({ 'app_version': '1.2.3', 'environment': 'production', });
Clear a default parameter by setting it to null.
dartawait FirebaseAnalytics.instance.setUserProperty( name: 'favorite_food', value: favoriteFood, );
Set the user ID to correlate events across devices:
dartawait FirebaseAnalytics.instance.setUserId(id: 'user_12345');
adb shell setprop debug.firebase.analytics.app <package_name>-FIRDebugEnabled to scheme arguments in Xcode.Other measured skills in the registry, with their headline benchmark lift.