firebase-crashlytics
Use when implementing crash reporting, capturing fatal/non-fatal errors, recording isolate/async exceptions, customizing reports, or uploading obfuscated symbols.
Install / Use
npx skills add evanca/flutter-ai-rules --skill firebase-crashlyticsInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of firebase-crashlytics
firebase-crashlytics scores 87/100 on our quality scale, 1745th of 4,634 Development & Engineering skills we index (top 38%).
Its SKILL.md is 5.4 KB long, well organised into 9 sections with 11 code examples: a solid amount of guidance for an agent.
It has 646 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated 19 days ago, so firebase-crashlytics is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
firebase-crashlytics compared with similar skills
All 4 of these similar skills score higher than firebase-crashlytics; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| firebase-crashlytics (this skill)by evanca | 87 | 646 | 19d ago | SKILL.md |
| ai-job-searchby MadsLorentzen | 100 | 44.9k | today | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.7k | 3d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
Frequently asked questions
- How do I install firebase-crashlytics?
- Run
npx skills add evanca/flutter-ai-rules --skill firebase-crashlytics. The install tabs above show the steps for each supported agent. - Which AI agents does firebase-crashlytics work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is firebase-crashlytics safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is firebase-crashlytics still maintained?
- The repository was last updated 19 days ago, so firebase-crashlytics is actively maintained.
Skill content
View source on GitHubname: firebase-crashlytics description: "Use when implementing crash reporting, capturing fatal/non-fatal errors, recording isolate/async exceptions, customizing reports, or uploading obfuscated symbols." license: MIT
Firebase Crashlytics Skill
This skill defines how to correctly use Firebase Crashlytics in Flutter applications.
When to Use
Use this skill when:
- Implementing crash reporting in a Flutter project.
- Capturing fatal errors, non-fatal exceptions, and async/isolate errors.
- Customizing crash reports with keys, logs, and user identifiers.
- Configuring opt-in data collection or disabling reporting in debug builds.
- Uploading symbol files for obfuscated builds.
1. Setup and Configuration
flutter pub add firebase_crashlytics
flutter pub add firebase_analytics # enables breadcrumb logs for better crash context
Run flutterfire configure to update the Firebase configuration and add the required Crashlytics Gradle plugin for Android.
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
Obfuscated code:
- For apps built with
--split-debug-infoand/or--obfuscate, upload symbol files for readable stack traces. - iOS: Flutter 3.12.0+ and Crashlytics Flutter plugin 3.3.4+ handle symbol upload automatically.
- Android: Use Firebase CLI (v11.9.0+) to upload Flutter debug symbols:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
2. Error Handling
Configure comprehensive error capture in main() to catch errors from all sources:
Fatal Flutter errors:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// Pass all uncaught fatal errors from the framework to Crashlytics
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
// Catch async errors not handled by the Flutter framework
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
runApp(MyApp());
}
Non-fatal Flutter errors: use recordFlutterError instead of recordFlutterFatalError.
Isolate errors:
Isolate.current.addErrorListener(RawReceivePort((pair) async {
final List<dynamic> errorAndStacktrace = pair;
await FirebaseCrashlytics.instance.recordError(
errorAndStacktrace.first,
errorAndStacktrace.last,
fatal: true,
);
}).sendPort);
Caught exceptions (non-fatal):
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error',
information: ['further diagnostic information about the error', 'version 2.0'],
);
- Crashlytics only stores the most recent 8 non-fatal exceptions per session — older ones are discarded.
3. Crash Report Customization
Custom keys (max 64 key/value pairs, up to 1 kB each):
FirebaseCrashlytics.instance.setCustomKey('str_key', 'hello');
FirebaseCrashlytics.instance.setCustomKey('bool_key', true);
FirebaseCrashlytics.instance.setCustomKey('int_key', 1);
Custom log messages (limit: 64 kB per session):
FirebaseCrashlytics.instance.log("User tapped on payment button");
User identifier:
FirebaseCrashlytics.instance.setUserIdentifier("user-123");
// Clear by setting to blank string
FirebaseCrashlytics.instance.setUserIdentifier("");
- Avoid putting unique values (user IDs, timestamps) directly in exception messages — use custom keys instead.
4. Performance and Optimization
- Crashlytics processes exceptions on a dedicated background thread to minimize performance impact.
- Fatal reports are sent in real-time without requiring an app restart.
- Non-fatal reports are written to disk and sent with the next fatal report or on app restart.
- Use breadcrumb logs (requires Firebase Analytics) to understand user actions leading up to a crash.
Disable Crashlytics in debug builds:
if (kReleaseMode) {
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
} else {
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(false);
}
5. Testing and Debugging
Force a test crash to verify the setup:
FirebaseCrashlytics.instance.crash();
Verification workflow:
- Build and run the app in release mode.
- Trigger the test crash.
- Reopen the app so the crash report is uploaded.
- Check the Firebase Console Crashlytics dashboard within 5 minutes.
- Verify that custom keys, logs, and user identifiers appear on the crash report.
- Verify stack traces are properly symbolicated when using code obfuscation.
6. Opt-in Reporting
By default, Crashlytics automatically collects crash reports for all users.
To give users control over data collection:
- Disable automatic reporting and enable it only via
setCrashlyticsCollectionEnabled(true)when users opt in. - The override value persists across all subsequent app launches.
- To opt a user out, pass
false— this applies from the next app launch. - When disabled, crash info is stored locally; if later enabled, locally stored crashes are sent to Crashlytics.
References
Related Skills
ai-job-search
44.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
