0
0
FlutterHow-ToBeginner · 4 min read

How to Use Firebase Crashlytics in Flutter for Crash Reporting

To use Firebase Crashlytics in Flutter, add the firebase_crashlytics package, initialize Firebase in your app, and enable Crashlytics to automatically capture crashes. You can also log custom errors and messages to monitor app stability.
📐

Syntax

The main steps to use Firebase Crashlytics in Flutter are:

  • Import the firebase_crashlytics package.
  • Initialize Firebase in your main() function.
  • Enable Crashlytics error collection.
  • Use FirebaseCrashlytics.instance.recordError() to log custom errors.
dart
import 'package:flutter/widgets.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;

  runApp(MyApp());
}
💻

Example

This example shows a simple Flutter app that initializes Firebase Crashlytics and logs a custom error when a button is pressed.

dart
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Crashlytics Demo')),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              try {
                throw Exception('Test custom error');
              } catch (e, s) {
                FirebaseCrashlytics.instance.recordError(e, s);
              }
            },
            child: Text('Log Custom Error'),
          ),
        ),
      ),
    );
  }
}
Output
App shows a button labeled 'Log Custom Error'. Pressing it logs a custom error to Firebase Crashlytics.
⚠️

Common Pitfalls

  • Not initializing Firebase before using Crashlytics causes errors.
  • Forgetting to set FlutterError.onError means Flutter errors won't be reported.
  • Not enabling Crashlytics in Firebase Console disables crash reporting.
  • Running in debug mode may not send crash reports; test in release mode.
dart
/// Wrong: Missing Firebase initialization
void main() {
  runApp(MyApp());
}

/// Right: Initialize Firebase before runApp
Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
  runApp(MyApp());
}
📊

Quick Reference

ActionCode Snippet
Initialize Firebaseawait Firebase.initializeApp();
Enable Flutter error reportingFlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
Log custom errorFirebaseCrashlytics.instance.recordError(error, stack);
Force a crash (for testing)FirebaseCrashlytics.instance.crash();

Key Takeaways

Always initialize Firebase before using Crashlytics in Flutter apps.
Set FlutterError.onError to report uncaught Flutter errors automatically.
Use recordError to log custom exceptions and messages.
Test crash reporting in release mode, as debug mode may not send reports.
Enable Crashlytics in the Firebase Console to start receiving crash data.