Exported Symbols Metadata

In an iOS binary, exported symbols refer to identifiers, such as functions or variables, that are intended for external use. These symbols are typically included in frameworks to facilitate linking or dynamic usage by external components. However, within the app binary itself, these exported symbols serve no practical purpose, as no other app will link against or use them directly.

Example Exports Metadata in an app

Example Exports Metadata in an app

How to remove them

In most cases you don't need any of the symbols, so you can remove all of them adding the following flag to Other Linker Flags in Xcode:

-Wl, -exported_symbols_list,/dev/null

But if you are using these symbols dynamically (using dlsym() like Firebase Crashlytics does), you might need to keep some symbols in your app.

If you know the symbols you will need, create a file containing them, for example if you only need them for Crashlytics:

__mh_execute_header

Add add its path to Exported Symbols File setting in Xcode (do not use the previous Other Linker Flags):

Example of Exported Symbols File

Example of Exported Symbols File