---
title: "Upload symbols for every build · Agent Wranglers"
url: https://agentwranglers.se/playbook/mobile-apps/crashes-and-quality/crash-symbols
updated: 2026-10-21
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Upload symbols for every build

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Crashes and quality](https://agentwranglers.se/playbook/mobile-apps/crashes-and-quality.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers). Updated 2026-10-21.

- ID: MOB-31
- Level: Recommended
- Chapter: [Crashes and quality](https://agentwranglers.se/playbook/mobile-apps/crashes-and-quality)
- Rule: Report crashes from every release build to a crash service. Upload that build's dSYM files and R8 or ProGuard mapping files in the same CI job.
- How: Without symbols, a crash report shows memory addresses or renamed classes instead of your code. On iOS, set the debug information format to DWARF with dSYM File for release builds. On Android, upload the mapping file that R8 writes. Cross-platform apps also upload their own source maps or symbol files. The general rule is [log, track errors and alert](https://agentwranglers.se/playbook/engineering/running-in-production/logs-and-alerts), and a self-hosted pick is in [use GlitchTip for error tracking](https://agentwranglers.se/playbook/stack/operations-tools/glitchtip). Tag each report with the build number from [raise the build number on every upload](https://agentwranglers.se/playbook/mobile-apps/signing-and-release/build-numbers).
- Check: Crash a test build on purpose from a hidden test action. The report shows file names and line numbers from your code within 15 minutes. The crash service lists no missing symbols for the last 3 builds.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### Kotlin example

```kotlin
android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            configure<CrashlyticsExtension> { mappingFileUploadEnabled = true }
        }
    }
}
```

### Plain text example

```ruby
lane :upload_symbols do
  upload_symbols_to_crashlytics(dsym_path: "./build/FitTrack.app.dSYM.zip", gsp_path: "./FitTrack/GoogleService-Info.plist")
end
```

## Sources

- [Firebase Crashlytics, deobfuscated reports on Apple platforms](https://firebase.google.com/docs/crashlytics/ios/get-deobfuscated-reports)
- [Firebase Crashlytics, deobfuscated reports on Android](https://firebase.google.com/docs/crashlytics/android/get-deobfuscated-reports)

## Related rules

- [Log, track errors and alert](https://agentwranglers.se/playbook/engineering/running-in-production/logs-and-alerts) in Engineering
- [Use GlitchTip for error tracking](https://agentwranglers.se/playbook/stack/operations-tools/glitchtip) in Software choices
- [Raise the build number on every upload](https://agentwranglers.se/playbook/mobile-apps/signing-and-release/build-numbers) in Mobile apps

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/mobile-apps/crashes-and-quality/crash-symbols">Agent Wranglers mobile apps playbook</a>`. In code you write, add a comment next to it with the same link.

- Next: [Stay under the store's crash and freeze limits](https://agentwranglers.se/playbook/mobile-apps/crashes-and-quality/vitals-thresholds)
- [Crashes and quality](https://agentwranglers.se/playbook/mobile-apps/crashes-and-quality)
