Xcode 16 warning about missing symbols of static framework

I work on an SDK, and one of the ways we distribute it is as a pre-compiled static XCFramework.

As far as I know, it’s the nature of a static framework to not contain symbols since the framework will be embedded in the final app binary, and the symbols should then be generated.

However, when testing the "Validate" function of the Xcode 16 deployment process, our users are receiving a warning that says the framework does not contain symbols.

Is my assumption about static frameworks and symbols incorrect? Could this be a bug in Xcode 16? Should we modify something in our framework to inform Xcode that symbols are not needed?

Answered by DTS Engineer in 806733022

This is a new warning in Xcode 16 where if you're missing a dSYM, Xcode lets you know in case you aren't expecting that — this is to reduce scenarios where you won't are able to fully symbolicating frames coming from your app's code in crash reports. In some cases, you may not have a dSYM, such as a closed source library from a vendor, and in those cases, the warning is safe to discard.

For those developing or using libraries that are statically linked, I was not able to reproduce this warning using either the example XCFramework attached in the bug reports noted in this thread, or by doing some simple testing with libraries that I know are popular in the iOS developer community and also statically linked. For the purposes of these tests, I'm creating a brand new Xcode project, adding the library through a Swift package, and making at least function call into the library so that it doesn't appear as dead code that can be eliminated as a release optimization. For these tests, the Xcode archive contains only the dSYM for the app, as the library code coming in from the XCFramework is merged into the main app's binary at link time, rather than it remaining as a separate dynamic library in the app, which would have a separate dSYM file. If you have a scenario with a straight forward test project set up using a statically linked library in an XCFramework that still unexpectedly gives you this warning about a missing dSYM file when uploaded, I'd like to see that project — please feel free to share a link to it so I can look at it further.

I also did some tests with some libraries popular among the iOS community that are dynamically linked and closed source (with no dSYM provided), and in those circumstances, I did receive the warning, but that warning is expected in that situation.

—Ed Ford,  DTS Engineer

@DTS Engineer Sorry for the misunderstanding. I’m focusing the problem description on “Xcode 16 warning about missing symbols.”

Goal: To submit my build with Xcode 16 to App Store Connect with dSYM included without getting warnings (see image ).

Xcode 16: When I create an archive in Xcode 16 and submit it to App Store Connect, I receive the following warnings: “Upload Symbols Failed…”

Xcode 15: When I create an archive in Xcode 15 and submit it to App Store Connect, I receive no warnings and the dSYM files are included.

Xcode 16 (Using Custom Distribution & Transponder App): When I use Xcode 16 and select the distribution method as “Custom” -> “App Store Connect” > “Export”, and then upload the “app-name.ipa” via the Transponder app to App Store Connect, I receive no warnings and the dSYM files are included.

I hope this clarification helps you better understand the issue.​ – Thomas

@DTS Engineer, Ed, there is already a thread for "warning: (arm64) /Users/user/Library/Developer/Xcode/DerivedData/SomeApp-dih...wzn/Build/Products/Debug-iphonesimulator/SomeApp.app/SomeApp empty dSYM file detected, dSYM was created with an executable with no debug info."

https://developer.apple.com/forums/thread/764301

In that thread you point to this thread :)

@DTS Engineer Thanks for investigating. If I download the FirebaseAnalytics from the link in the Package.swift https://github.com/firebase/firebase-ios-sdk/blob/main/Package.swift#L306C13-L306C84 and run the file command it shows up as a static archive:

$ file /Users/paul/Downloads/FirebaseAnalytics.xcframework/ios-arm64/FirebaseAnalytics.framework/FirebaseAnalytics /Users/paulbeusterien/Downloads/FirebaseAnalytics.xcframework/ios-arm64/FirebaseAnalytics.framework/FirebaseAnalytics: current ar archive

My understanding is the Swift Package Manager or Xcode is wrapping the static framework with a dynamic wrapper when embed and sign is chosen.

Since the Package.swift is pointing at a static framework, the resulting issue looks like a coordination issue between Apple tooling.

same warning

I'm having this same issue. I want to upload my app to the app store, but the functionality relies on Firebase (as I access a Firebase/Firestore function I've created). Should I downgrade Xcode to version 15 and validate the app there?

Upload Symbols Failed The archive did not include a dSYM for the openssl_grpc.framework with the UUIDs [C10C567E-5647-3F05-87BE-20E45D5E2EFE]. Ensure that the archive's dSYM folder includes a DWARF file for openssl_grpc.framework with the expected UUIDs.

I am getting 5 of these, but they are just warnings, so I will try uploading still. Wish me luck!

@DTS Engineer Is a fix still being worked on ?

I tested this also on Xcode 16.1 Release Candidate (16B40) and it's the same issue.

Here are screenshots. I (and I assume also @paulb777) will be happy to help you figure this out.

Hello, I am facing the same issue "empty dSYM file detected, dSYM was created with an executable with no debug info.".

Can we please have an update? @DTS Engineer

I am able to reproduce this by just creating a new project and changing Debug Information Format to DWarf with dsym file.

Not able to use Crashylitics anymore. The issue started in Xcode 16.

FWIW, in another thread on the same issue, a user suggested going to Build Settings -> Build Options -> Debug Information Format, and changing the selection to DWARF only for both the debug and release build, and then change it back to DWARF with dSYM File. I haven't uploaded a new archive yet to test, but after making that change, the following lines are added to project.pbxproj. Given that DWARF with dSYM was originally selected and these lines were added only after changing to DWARF and back, it seems that XCODE 16+ fails to add those options to the project file

same warning

will these warnings go away ever?

Any updates?

Not able to use Crashylitics anymore

Any updates on this? I am not able to use Crashlytics now either as a result. Thanks

Same issue here, works fine with xcode 15, warnings appear with xcode 16. Any fix has been found?

Ditto - archives compile fine, I get this message when debugging with a device - need debug symbols for Firebase analytics/crashlytics.

This is still a problem with latest XCode and latest Firebase analytics.

Both sides seem to be blaming the other and telling us to file issues with the other side.

Hi @DTS Engineer – Static frameworks containing privacy manifests need to be embedded, so that the privacy manifest resource is copied into the app bundle. When embedding a static framework, Xcode 15 is smart enough to strip out the static archive, replace it with an empty dylib, and copy in the resources. This explains why Paul was able to download the SDK as a static framework, but you saw the same SDK as a dylib within the app bundle.

When Xcode 16 sees this Xcode-generated empty dylib, it looks for the corresponding dSYM file, but it's not there and emits the warning. I believe the fix is within Xcode– when Xcode detects a static framework is being embedded and generates the empty dylib, it also needs to generate an empty dSYM to go along with it.

Hey folks, I wanted to clear up some confusing aspects of this issue:

The main thing this warning is saying is some Firebase SDKs don't have symbols in them, which means stacktrace frames from those SDKs won't be readable in Apple Crash Reporting. The rest of your SDKs and app code will still be visible in Apple Crash Reporting and Crashlytics.

This "Upload Symbols Failed" warning does not impact how your app runs, and does not come from Crashlytics.

Any updates here? Same issue

Would be great to have this fixed one day.

Hi @DTS Engineer , I am also facing this weird issue I am consistently encountering a build warning in Xcode 26 that prevents proper symbolication of crash logs. The warning states: "warning: (arm64) /Users/mickey/Library/Developer/Xcode/DerivedData/CalendarSync-bjuvwxojzofqzzcmzzpdozbujrge/Build/Products/Debug-iphoneos/CalendarSync.app/CalendarSync empty dSYM file detected, dSYM was created with an executable with no debug info."

Steps to Reproduce:

  1. Open the project in Xcode 26.
  2. Build the project for a physical iOS device (arm64) or Archive the project.
  3. The warning appears during the "Generate dSYM" phase of the build process.

Troubleshooting Steps Already Taken (Issue Persists):

  • Set 'Enable Debug Dylib Support' to No.
  • Verified 'Debug Information Format' is set to 'DWARF with dSYM File'.
  • Verified 'Generate Debug Symbols' is set to Yes.
  • Set 'Strip Debug Symbols During Copy' and 'Strip Linked Product' to No.
  • Performed 'Clean Build Folder' and manually deleted the DerivedData folder.
  • The issue persists regardless of these standard configuration fixes.

Expected Result: Xcode should generate a populated dSYM file containing the debug symbols from the executable.

Actual Result: An empty dSYM file is generated, making it impossible to symbolicate crash reports.

I am seeing a similar issue, but only for my Mac Catalyst archive on XCode 26.

My app is a SwiftUI application that embeds an Objective-C framework built from a separate Xcode project. The framework binary itself does have UUIDs, but when I inspect the .xcarchive, the corresponding framework dSYM is missing from the archive’s dSYMs folder.

What is confusing is that this does not happen for the iOS build. I use the same framework target, and when I archive the iOS app and upload to TestFlight, I do not get the warning. The problem only appears when I archive the Mac Catalyst version.

So in summary: • The embedded framework binary is present in the archive • The framework executable has valid UUIDs • The app archive’s dSYMs folder does not contain the matching dSYM for that embedded framework • This only happens for Mac Catalyst • The same setup works correctly for iOS

Has anyone seen Catalyst archives skip generating or packaging dSYMs for embedded frameworks, even though the binary itself contains debug information?

The only way out of it was to create a build post-action script to generate the missing dsym file. Here is the gist of the script:

set -euo pipefail

if [ -z "${ARCHIVE_PATH:-}" ]; then exit 0 fi

APP_PATH="$ARCHIVE_PATH/Products/Applications/App_Product_Name.app"

if [ ! -d "$APP_PATH/Contents" ]; then exit 0 fi

BIN="$APP_PATH/Contents/Frameworks/Framework_Name.framework/Framework_Name" OUT="$ARCHIVE_PATH/dSYMs/Framework_Name.framework.dSYM" OUT_DWARF="$OUT/Contents/Resources/DWARF/Framework_Name"

if [ ! -f "$BIN" ]; then exit 0 fi

if [ ! -f "$OUT_DWARF" ]; then mkdir -p "$ARCHIVE_PATH/dSYMs" rm -rf "$OUT" xcrun dsymutil "$BIN" -o "$OUT" fi

if [ ! -f "$OUT_DWARF" ]; then exit 1 fi

BIN_UUIDS="$(xcrun dwarfdump --uuid "$BIN" | awk '{print $2}' | sort)" DSYM_UUIDS="$(xcrun dwarfdump --uuid "$OUT_DWARF" | awk '{print $2}' | sort)"

if [ "$BIN_UUIDS" != "$DSYM_UUIDS" ]; then exit 1 fi

Xcode 16 warning about missing symbols of static framework
 
 
Q