• /
  • EnglishEspañolFrançais日本語한국어Português
  • 로그인지금 시작하기

Third Party Incompatibility (iOS)

Problem

Including both the New Relic iOS agent and certain Firebase SDKs in the same app can cause conflicts due to overlapping instrumentation. The affected Firebase SDKs are:

  • FirebasePerformance — swizzles NSURLSession for network monitoring and UIViewController lifecycle methods for screen traces, directly overlapping with New Relic's automatic instrumentation.
  • FirebaseCrashlytics — installs its own uncaught exception handler and signal handlers (SIGABRT, SIGSEGV, etc.), which can overwrite or be overwritten by New Relic's crash reporter depending on initialization order.

Known symptoms include:

  • Crashes in auto-instrumented functions caused by conflicting NSURLSession or UIViewController method swizzling.
  • Missing or incomplete crash reports in one or both tools because only one exception handler can be active at a time.
  • Duplicate network events appearing in New Relic or Firebase consoles.

Solution

Preferred: Remove conflicting Firebase components

If you only need crash reporting and network monitoring from one source, the cleanest solution is to remove the conflicting Firebase pods:

  • Remove FirebasePerformance to eliminate NSURLSession and UIViewController swizzling conflicts.
  • Remove FirebaseCrashlytics to eliminate exception and signal handler conflicts.

If you are using Firebase for analytics or other features (e.g., FirebaseAnalytics, FirebaseAuth, FirebaseFirestore), those pods do not conflict with the New Relic agent and can remain.

Alternative: Disable overlapping features

If removing Firebase components is not an option, disable the overlapping instrumentation explicitly:

Disable Firebase performance automatic instrumentation:

// In your AppDelegate, before FirebaseApp.configure()
Performance.sharedInstance().isInstrumentationEnabled = false
Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(false)

Disable New Relic features that overlap with Crashlytics:

See the New Relic iOS SDK configuration guide for flags such as NRFeatureFlag_CrashReporting and NRFeatureFlag_NSURLSessionInstrumentation.

Initialization order

If both SDKs remain active, initialize the New Relic agent as early as possible — as the first call in application(_:didFinishLaunchingWithOptions:) — before FirebaseApp.configure(). This ensures New Relic's exception and signal handlers are registered first, though Crashlytics may still overwrite them via +load methods that run before your app code executes.

If you need additional help, get support at support.newrelic.com.

Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.