I have a Flutter application with code obfuscation enabled for both Android and iOS. I want to see readable stack traces in Firebase Crashlytics for crashes in production. For Android, this is well-documented: I can upload the mapping/symbols file using the Firebase CLI:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
After this, stack traces appear in readable form.
However, for iOS, this same command does not work. When using obfuscation in Flutter for iOS:
flutter build ios --obfuscate --split-debug-info=path/to/symbols
Crashlytics shows obfuscated Dart stack traces like:
#00 abs 0000000108cea5f7 _kDartIsolateSnapshotInstructions+0x357cf7
#01 abs 00000001096b0737 _kDartIsolateSnapshotInstructions+0xd1de37
...
I can decode them locally using:
flutter symbolize -i stack.txt -d path/to/app.<hash>.symbols
But this is not convenient, especially for non-developers or larger teams.
Question
Is it possible to make Firebase Crashlytics show readable stack traces for obfuscated Dart code on iOS?
If not, is there any official confirmation or documentation that this is not supported?
From what I’ve seen so far, the official Flutter docs on obfuscation mention flutter symbolize but don’t clearly state whether Crashlytics supports this automatically for iOS or not.
Would appreciate any clear answer, workaround, or links to official sources. Thanks!
I have a Flutter application with code obfuscation enabled for both Android and iOS. I want to see readable stack traces in Firebase Crashlytics for crashes in production. For Android, this is well-documented: I can upload the mapping/symbols file using the Firebase CLI:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
After this, stack traces appear in readable form.
However, for iOS, this same command does not work. When using obfuscation in Flutter for iOS:
flutter build ios --obfuscate --split-debug-info=path/to/symbols
Crashlytics shows obfuscated Dart stack traces like:
#00 abs 0000000108cea5f7 _kDartIsolateSnapshotInstructions+0x357cf7
#01 abs 00000001096b0737 _kDartIsolateSnapshotInstructions+0xd1de37
...
I can decode them locally using:
flutter symbolize -i stack.txt -d path/to/app.<hash>.symbols
But this is not convenient, especially for non-developers or larger teams.
Question
Is it possible to make Firebase Crashlytics show readable stack traces for obfuscated Dart code on iOS?
If not, is there any official confirmation or documentation that this is not supported?
From what I’ve seen so far, the official Flutter docs on obfuscation mention flutter symbolize but don’t clearly state whether Crashlytics supports this automatically for iOS or not.
Would appreciate any clear answer, workaround, or links to official sources. Thanks!
Share Improve this question asked Mar 27 at 21:35 FetFrumosFetFrumos 5,9549 gold badges68 silver badges114 bronze badges 1- firebase.google/docs/crashlytics/… – Robin Dijkhof Commented Mar 31 at 7:06
1 Answer
Reset to default 0Here’s how to do it as of Flutter 3.12.0+ and firebase_crashlytics
Build with Obfuscation:
flutter build ipa --obfuscate --split-debug-info=/path/to/symbols
This generates app.dSYM and symbol files in /path/to/symbols
2. Set Up Automatic dSYM Upload:
Ensure your project uses Flutter 3.12.0+ and firebase_crashlytics: ^3.3.4+.
Integrating Crashlytics via flutterfire configure adds a [firebase_crashlytics] Crashlytics Upload Symbols run script to your Xcode project (Runner > Build Phases).
"${PODS_ROOT}/FirebaseCrashlytics/run"
3. Build and deploy your app. After a crash, restart the app to send the report.