Skip to content
Latchkey

How to Upload a dSYM in GitHub Actions

dSYM files live inside the .xcarchive under dSYMs; upload them as an artifact so crash reports can be symbolicated later.

After xcodebuild archive, the symbols sit in <archive>.xcarchive/dSYMs. Upload that directory with actions/upload-artifact (or push it to your crash reporter) so released crashes are readable.

Steps

  • Archive the app so Xcode emits dSYMs.
  • Point at <archive>.xcarchive/dSYMs.
  • Upload it with actions/upload-artifact, or send it to your crash service.

Workflow

.github/workflows/ci.yml
steps:
  - name: Archive
    run: |
      xcodebuild archive \
        -scheme MyApp \
        -archivePath $RUNNER_TEMP/MyApp.xcarchive \
        DEBUG_INFORMATION_FORMAT=dwarf-with-dsym
  - uses: actions/upload-artifact@v4
    with:
      name: dsyms
      path: ${{ runner.temp }}/MyApp.xcarchive/dSYMs

Gotchas

  • dSYMs are produced only when DEBUG_INFORMATION_FORMAT=dwarf-with-dsym; a debug build with inline DWARF has none.
  • Bitcode-recompiled builds get new dSYMs from App Store Connect; download those for symbolication instead of the local ones.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →