Get readable crash reports in the Crashlytics dashboard (Flutter)

Select platform:


By default, Firebase Crashlytics automatically instruments your Flutter project to upload the necessary symbol files that ensure crash reports are deobfuscated and human readable.

Unfortunately, there are cases that can result in the project not being fully configured. This guide outlines what the automation does and provides first steps to debug your project setup.

Apple platforms

Check your configuration for uploading dSYM files

Adding the Crashlytics Flutter plugin and running the flutterfire configure command will attempt to add a run script to your project’s Xcode workspace that finds and uploads the necessary dSYM symbol files to Crashlytics . Without these files, you'll see a "Missing dSYM" alert in the Crashlytics dashboard and exceptions will be held by the backend until the missing files are uploaded.

If you have this issue, first make sure that you have the run script installed:

  1. Locate and open the Xcode workspace file in your project's iOS directory ( FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace ).

  2. Identify whether a run script titled [firebase_crashlytics] Crashlytics Upload Symbols has been added to the Runner target's Build Phases.

    See the applicable section below for whether the run script does not exist or the run script exists .

Run script for auto-upload of dSYMs does not exist

If this run script does not exist, you can add it manually:

  1. Locate the Firebase App ID for your Apple app. Here are two different places where you can find this ID:

    • In the Firebase console, go to your > Project settings . Go to the Your apps card, then click your Firebase Apple App to view the app's information, including its App ID .

    • In your Flutter project's top-level directory, find your firebase_options.dart file. The Firebase App ID for your Apple app is labeled as appId .

  2. Click > New Run Script Phase.

    Make sure this new Run Script phase is your project's last build phase. Otherwise, Crashlytics can't properly process dSYMs.

  3. Expand the new Run Script section.

  4. In the script field (located under the Shell label), add the following run scripts.

    These scripts process your dSYM files and upload the files to Crashlytics .

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID 
    -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID 
    -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    • FIREBASE_APP_ID : Your Firebase Apple App ID (not your Apple bundle ID)
      Example Firebase Apple App ID: 1:1234567890:ios:321abc456def7890

    Need to find your Firebase App ID?

    Here are two ways to find your Firebase App ID:

    • In your GoogleService-Info.plist file, your App ID is the GOOGLE_APP_ID value; or

    • In the Firebase console, go to your Project settings . Go to the Your apps card, then click the intended Firebase App to find its App ID.

  • In the Input Files section, add the paths for the locations of the following files:

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
  • Run script for auto-upload of dSYMs exists

    If the run script does exist, refer to the Apple-specific guide for troubleshooting dSYM issues . You'll need to take the following additional steps if you choose to upload your dSYM files via the described process:

    1. Locate the Firebase App ID for your Apple app. Here are two different places where you can find this ID:

      • In the Firebase console, go to your > Project settings . Go to the Your apps card, then click your Firebase Apple App to view the app's information, including its App ID .

      • In your Flutter project's top-level directory, find your firebase_options.dart file. The Firebase App ID for your Apple app is labeled as appId .

    2. When running the upload-symbols script, use -ai FIREBASE_APPLE_APP_ID instead of -gsp /path/to/GoogleService-Info.plist .

    Check your version configuration for Flutter and Crashlytics (if using the --split-debug-info flag)

    If your Flutter project uses the --split-debug-info flag (and, optionally, also the --obfuscate flag), additional steps are required to show readable stack traces for your app.

    Make sure that your project is using the recommended version configuration (Flutter 3.12.0+ and Crashlytics Flutter plugin 3.3.4+) so that your project can automatically generate and upload Flutter symbols (dSYM files) to Crashlytics .

    Android

    Check your dependency configuration

    The flutterfire configure command attempts to add necessary dependencies to your project's Gradle build files. Without these dependencies, crash reports in the Firebase console may end up obfuscated if obfuscation is turned on.

    Make sure the following lines are present in the project-level build.gradle and in the app-level build.gradle :

    • In the project-levelbuild file ( android/build.gradle ), check for the following line:

      dependencies {
      // ... other dependencies
      
      classpath 'com.google.gms:google-services:4.3.5' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'}
    • In the app-levelbuild file ( android/app/build.gradle ), check for the following line:

       // ... other imports 
       android 
        
       { 
       // ... your android config 
       } 
       dependencies 
        
       { 
       // ... your dependencies 
       } 
       // This section must appear at the bottom of the file 
       apply 
        
       plugin 
       : 
        
       'com.google.gms.google-services' 
        apply 
        
       plugin 
       : 
        
       'com.google.firebase.crashlytics' 
      

    Check that you're using the CLI to upload Flutter symbols (if using the --split-debug-info flag)

    If your Flutter project uses the --split-debug-info flag (and, optionally, also the --obfuscate flag), additional steps are required to show readable stack traces for your app.

    Use the Firebase CLI (v.11.9.0+) to upload Flutter debug symbols. You need to upload the debug symbols before reporting a crash from an obfuscated code build.

    From the root directory of your Flutter project, run the following command:

    firebase crashlytics:symbols:upload --app= FIREBASE_APP_ID 
     PATH/TO 
    /symbols
    • FIREBASE_APP_ID : Your Firebase Android App ID (not your package name)
      Example Firebase Android App ID: 1:567383003300:android:17104a2ced0c9b9b

      Need to find your Firebase App ID?

      Here are two ways to find your Firebase App ID:

      • In your google-services.json file, your App ID is the mobilesdk_app_id value; or

      • In the Firebase console, go to your Project settings . Go to the Your apps card, then click the intended Firebase App to find its App ID.

    • PATH/TO /symbols : The same directory that you pass to the --split-debug-info flag when building the application

    If problems persist, refer to the Android-specific guide for troubleshooting obfuscated reports .

    Design a Mobile Site
    View Site in Mobile | Classic
    Share by: