Firebase Crashlytics not reporting crashes in .NET 10 MAUI application and startup crash with iOS linker settings

Vignesh Palthurai 50 Reputation points
2026-09-18T10:37:20.3933333+00:00

Hello @Nancy Vo (WICLOUD CORPORATION) ,

I am facing an issue while integrating Firebase Crashlytics into a .NET 10 / .NET MAUI 10 application using Plugin.Firebase 4.0.0.

Background

I successfully configured Firebase Crashlytics in one .NET MAUI application using the same configuration, and crash reports are being received correctly in the Firebase Crashlytics dashboard.

However, when I apply the same configuration to another MAUI application that uses a different Firebase project, Crashlytics does not receive the crash reports.

Configuration verified

For the second application, I have verified the following:

  • The application has a unique ApplicationId / iOS Bundle ID.

The correct GoogleService-Info.plist from the second Firebase project is included.

GoogleService-Info.plist is configured as a BundleResource.

The plist contains the required <Link>GoogleService-Info.plist</Link> configuration.

CrossFirebase.Initialize(CreateCrossFirebaseSettings()) is called from WillFinishLaunching.

Crashlytics collection is enabled.

The application has been cleaned and rebuilt.

Firebase Crashlytics currently shows:

“App detected. Waiting for a crash to happen.”

According to the recommended configuration, I added the following to the .csproj:

<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
  <_ExportSymbolsExplicitly>false</_ExportSymbolsExplicitly>
</PropertyGroup>

<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
  <_ReferencesLinkerFlags Include="-u __mh_execute_header" />
</ItemGroup>

There is an additional important observation regarding this issue:

When running the application in Debug mode, the application launches and runs successfully even with these linker settings.

However, when I create an IPA with the same linker configuration and install/run it through BrowserStack, the application crashes during startup.

The application crashes before I can reach the application UI, so I cannot reproduce the issue from within the application or capture the exception through normal application logging.

Because the crash occurs in the IPA/Release scenario, I currently do not have the actual exception or stack trace from the application.

When I remove the two linker configuration sections, the IPA launches successfully, but Firebase Crashlytics still remains in the state “App detected. Waiting for a crash to happen.”

This makes the issue particularly difficult to diagnose because Debug works, while the IPA/Release build crashes only when these linker settings are enabled.

Questions

Could you please help investigate the following?

  1. Why do the _ExportSymbolsExplicitly and _ReferencesLinkerFlags settings cause a startup crash specifically in the IPA/Release build?
  2. Why does the application run successfully in Debug mode with these settings but crash when the IPA is created and executed through BrowserStack?
  3. Are these linker settings still required for .NET 10 / MAUI 10 with Plugin.Firebase 4.0.0?
  4. Is there an alternative configuration for iOS that allows Firebase Crashlytics to work without adding these linker settings?
  5. Could this be related to changes in the .NET 10 / MAUI 10 iOS linker/trimmer/AOT build process?
  6. Since the IPA crashes during startup before I can capture an application-level exception, could you please advise how I can obtain the native iOS crash log or linker/AOT diagnostic information needed to identify the root cause?

The main issue is:

Without the linker settings: the application launches successfully, but Firebase Crashlytics does not receive crashes.

With the linker settings: Debug works, but the IPA/Release build crashes during startup when executed through BrowserStack, preventing me from obtaining the application exception.

Could you please advise on the correct configuration for .NET 10 / MAUI 10 + Plugin.Firebase 4.0.0 + Firebase Crashlytics on iOS?

Thank you.

Developer technologies | .NET | .NET Multi-platform App UI
0 comments No comments

1 answer

Sort by: Newest
  1. Nguyen Dam (WICLOUD CORPORATION) 595 Reputation points Microsoft External Staff Moderator
    2026-09-18T10:43:29.4+00:00

    Hello @Vignesh Palthurai , and thank you for reaching out. I was able to narrow this down to a known .NET 10 iOS Release-build issue involving Firebase Crashlytics.

    For your questions, here are the answers:

    1. Why do the _ExportSymbolsExplicitly and _ReferencesLinkerFlags settings cause a startup crash specifically in the IPA/Release build?

    The startup crash is a known .NET 10 iOS issue with _ExportSymbolsExplicitly=false in Release builds. It's tracked in .NET for iOS issue #25427, and issue #25491 so please refer to them if you want the detailed technical investigation.
    The underlying issue has since been fixed in PR #25494 but not available yet in .NET 10.

    1. Why does the application run successfully in Debug mode with these settings but crash when the IPA is created and executed through BrowserStack?

    The Debug/Release difference is expected for this issue.
    The failure occurs in the Release/native iOS build path, while Debug does not reproduce the same startup failure. BrowserStack is running the generated IPA, so it surfaces the Release-only behavior.

    1. Are these linker settings still required for .NET 10 / MAUI 10 with Plugin.Firebase 4.0.0?

    No, these linker settings are not documented as required configuration for Plugin.Firebase 4.0.0 on .NET 10.
    The _ExportSymbolsExplicitly=false setting was used as a workaround for the Crashlytics __mh_execute_header symbol issue, but it is affected by the .NET 10 Release-build issue described above. Plugin.Firebase 4.0.0's Crashlytics documentation does not list these linker settings as part of its standard iOS setup.

    1. Is there an alternative configuration for iOS that allows Firebase Crashlytics to work without adding these linker settings?

    There is now a confirmed fix for the Release startup crash, but it is not yet available in .NET 10. PR #25494 fixes the underlying strip issue.
    Your reported iOS workload is 26.5.10315, while the latest .NET 10 iOS servicing release is 26.5.10318. PR #25494 is not listed in the .NET 10 iOS release notes, so the fix does not appear to be available in .NET 10 yet.

    The available options you may want to try are:

    • Export __mh_execute_header directly through ReferenceNativeSymbol while leaving _ExportSymbolsExplicitly at its default value.
    <ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
      <ReferenceNativeSymbol Include="_mh_execute_header" SymbolType="Function" />
    </ItemGroup>
    
    • Use the older toolchain combination documented in issue #25491: Xcode 26.3, workload set 10.0.300, and iOS workload 26.2.10233, with _ExportSymbolsExplicitly=false.
    • Move to the .NET 11 preview line, where the fix from PR #25494 is available.
    • Update the .NET 10 iOS workload to 26.5.10318 and retest. (note: this approach is tried and didn't work)
    1. Could this be related to changes in the .NET 10 / MAUI 10 iOS linker/trimmer/AOT build process?

    Yes, the issue appears to be in the .NET 10 iOS linker/build pipeline.
    In particular, issue #25491 reproduces the Release startup failure with a clean MAUI app and shows different results across .NET/iOS workload and Xcode combinations.

    1. Since the IPA crashes during startup before I can capture an application-level exception, could you please advise how I can obtain the native iOS crash log or linker/AOT diagnostic information needed to identify the root cause?

    Although there may be no need to collect the crash log now - if you still need to obtain the native iOS crash report from a BrowserStack App Live session, you can do as follows:

    1. Open the BrowserStack App Live dashboard and upload or install the affected IPA.
    2. Start a session using the affected IPA on a real iOS device.
    3. Reproduce the startup crash during that session.
    4. On the App Live vertical toolbar, select iOS Settings.
    5. Under Crash Logs, select Fetch logs.
    6. BrowserStack will download the crash logs as a ZIP file. The ZIP contains the native .ips crash report.

    Please do note the logs checked under Console -> Logs are not the native crash report, but rather from iOS Settings -> Crash Logs -> Fetch logs instead. The .ips report contains the Exception Type, Termination Reason, and crashed thread.

    In summary, this is a known .NET iOS issue that has already been fixed, but the fix is not yet confirmed to be available in .NET 10. On affected versions, the _ExportSymbolsExplicitly=false workaround can cause the Release build to crash at startup. Until the fix becomes available in .NET 10, you can use the older working configuration mentioned above or try the alternative workaround.

    If you found my response helpful or informative, I would greatly appreciate it if you could follow this guide for your confirmation.

    Thank you.

    Was this answer helpful?

    3 people found this answer helpful.

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.