Firebase Crashlytics in Flutter is a production crash reporting tool that collects fatal crashes and non-fatal errors from real users. It helps identify stability issues that appear only in release builds and real-world conditions.
Crashlytics hooks into the Flutter error system and the platform runtime.
When an error occurs, it records:
Reports are sent to Firebase and grouped automatically by root cause.
Many Flutter crashes:
Crashlytics provides visibility into real production failures, which is critical for maintaining app quality.
After adding firebase_core and firebase_crashlytics, initialize error handling in main().
FlutterError.onError =
FirebaseCrashlytics.instance.recordFlutterFatalError;
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(
error,
stack,
fatal: true,
);
return true;
};This approach replaces older runZonedGuarded patterns and captures both:
Use Crashlytics when:
Avoid Crashlytics when:
Using only FlutterError.onError misses many runtime crashes. Always register PlatformDispatcher.instance.onError.
Crashlytics works mainly in Release mode. Debug builds are not representative of production behavior.
On iOS, Crashlytics requires dSYM files to decode crash reports. If dSYM files are not uploaded:
You must configure a Run Script Phase in Xcode that uploads dSYM files automatically during build. Without this step, Crashlytics is effectively blind on iOS.
If you build with obfuscation:
flutter build apk --obfuscate --split-debug-info=./symbolsCrash reports will be unreadable unless symbol files are uploaded. Always store and upload symbol mappings for each release.
recordError for handled exceptions. This exposes silent failures that hurt UX.setCustomKey and log to attach user actions or screen names. This often explains why a crash happened, not just where.Crashlytics support for Flutter Web is limited:
For web-heavy projects, consider combining Crashlytics with dedicated web error tracking tools.
10 min. • Aug 9, 2023
We dive into the topic of UI testing in Flutter. Read more about automated UI tests' benefits and available solutions and why UI testing plays a crucial role, especially in large-scale applications.
10 min • Dec 8, 2025
Patrol 4.0 is here! By far the biggest update since improvements were made to the test building, it brings support for a web platform, a VS Code extension, a better debugging experience, and many smaller improvements. Let’s dive into the details and the brief backstory behind this release.
10 min • Dec 8, 2025
Patrol has reached version 4.0, marking a major milestone. Among the many new features, one stands out in particular: Patrol now supports Web! In this article, you’ll find a rundown of what Patrol Web can do, but also a look behind the scenes: how we designed it, why certain decisions were made, and what it took to bring Patrol’s architecture from mobile into the browser.