Jump to top

Firebase JSON Config

Configure @react-native-firebase modules

You can configure your installed modules by creating a file named firebase.json at the root of your project directory. An example configuration file is available for inspection in our internal test app: <repo>/tests/firebase.json

JSON Schema

Add the Config Schema to your firebase.json file to use the Editor Intellisense

{
  "$schema": "./node_modules/@react-native-firebase/app/firebase-schema.json"
}

Configs

APITypeDescription
analytics_auto_collection_enabled
boolean

Disable or enable auto collection of analytics data. This is useful for opt-in-first data flows, for example when dealing with GDPR compliance. This can be overridden in JavaScript. Re-enable analytics data collection, e.g. once user has granted permission.

analytics_collection_deactivated
boolean

If you need to deactivate Analytics collection permanently in a version of your app. This cannot be altered at runtime once set in the config.

analytics_idfv_collection_enabled
boolean

If you wish to disable collection of the IDFV (Identifier for Vendor) in your iOS app. This cannot be altered at runtime once set in the config.

google_analytics_adid_collection_enabled
boolean

If you wish to disable collection of the Advertising ID in your Android app. This cannot be altered at runtime once set in the config.

google_analytics_ssaid_collection_enabled
boolean

If you wish to disable collection of SSAID (Settings.Secure.ANDROID_ID) in your Android app,. This cannot be altered at runtime once set in the config.

google_analytics_automatic_screen_reporting_enabled
boolean

If you wish to disable automatic screen reporting in your app. This cannot be altered at runtime once set in the config.

google_analytics_registration_with_ad_network_enabled
boolean

For your convenience, on iOS the SDK automatically registers your app with Apple for ad network attribution with SKAdNetwork. Defaults to true, include this key as false to disable.

analytics_default_allow_ad_personalization_signals
boolean

Configure whether a user's Analytics data may be used for personalized advertising in other products. If set, may be overridden at runtime by calling setUserProperty on the key 'allow_personalized_ads'

app_data_collection_default_enabled
boolean

Whether automatic data collection is enabled for all products, unless overridden by product-specific data collection settings. Setting this to false is useful for opt-in-first data flows, for example when dealing with GDPR compliance. This may be overridden dynamically in Javascript via automaticDataCollectionEnabled FirebaseAppConfig property.

app_log_level
string

Set the log level across all modules. Only applies to iOS currently. Can be 'error', 'warn', 'info', 'debug'. Logs messages at the configured level or lower. Note that if an app is running from AppStore, it will never log above info even if level is set to a higher (more verbose) setting

app_check_token_auto_refresh
boolean

If this flag is disabled then Firebase App Check will not periodically auto-refresh the app check token. This is useful for opt-in-first data flows, for example when dealing with GDPR compliance. If unset it will default to the SDK-wide data collection default enabled setting. This may be overridden dynamically in Javascript.

crashlytics_auto_collection_enabled
boolean

Additionally, you can configure whether Crashlytics sends out any reports through the auto_collection_enabled option in your firebase.json config. If you want users to opt-in, it is recommended that you disable this here and enable it later through the method once they opt-in.

crashlytics_debug_enabled
boolean

Stack traces are readily available while you`re debugging your app, so Crashlytics is disabled by default in debug mode. You can set Crashlytics to be enabled regardless of debug mode through the debug_enabled option in your firebase.json. This may be useful to test your integration, remembering reports are sent next app start.

crashlytics_is_error_generation_on_js_crash_enabled
boolean

By default React Native Firebase Crashlytics installs a global javascript-level unhandled exception handler that will log unhandled javascript exceptions as fatal crashes (since v11.3.0, non-fatal prior) with javascript stacks. Set to false to disable javascript-level crash handling.

crashlytics_javascript_exception_handler_chaining_enabled
boolean

By default React Native Firebase Crashlytics will preserve existing global javascript-level unhandled exception handlers by reporting to Crashlytics then passing the exception on for further handling. This could lead to duplicate reports, for example a fatal javascript-level report and a fatal native level report for the same crash. Set to false to terminate error handling after logging the javascript-level crash.

crashlytics_ndk_enabled
boolean

React Native Firebase supports Crashlytics NDK reporting which is enabled by default. This allows Crashlytics to capture crashes originating from the Yoga layout engine used by React Native. You can disable Crashlytics NDK in your firebase.json config.

in_app_messaging_auto_collection_enabled
boolean

In App Messaging can be further configured to enable or disable automatic data collection for Firebase In-App Messaging. This is useful for opt-in-first data flows, for example when dealing with GDPR compliance. This can be overridden in JavaScript.

messaging_auto_init_enabled
boolean

Firebase generates an Instance ID, which FCM uses to generate a registration token and which Analytics uses for data collection. When an Instance ID is generated, the library will upload the identifier and configuration data to Firebase. In most cases, you do not need to change this behavior. If you prefer to prevent Instance ID auto-generation, disable auto initialization for FCM and Analytics

messaging_android_headless_task_timeout
number

On Android, a background event sent to setBackgroundMessageHandler has 60 seconds to resolve before it is automatically canceled to free up device resources. If you wish to override this value, set the number of milliseconds in your config.

messaging_android_notification_channel_id
string

On Android, any message which displays a Notification use a default Notification Channel (created by FCM called Miscellaneous). This channel contains basic notification settings which may not be appropriate for your application. You can change what Channel is used by updating the messaging_android_notification_channel_id property.

messaging_android_notification_color
string

On Android, any messages which display a Notification do not use a color to tint the content (such as the small icon, title etc). To provide a custom tint color, update the messaging_android_notification_color property with a Android color resource name. The library provides a set of predefined colors corresponding to the HTML colors for convenience

messaging_ios_auto_register_for_remote_messages
boolean

Whether RNFirebase Messaging automatically calls [[UIApplication sharedApplication] registerForRemoteNotifications]; automatically on app launch (recommended) - defaults to true. If set to false; make sure to call firebase.messaging().registerDeviceForRemoteMessages() early on in your app startup - otherwise you will NOT receive remote messages/notifications in your app.

perf_auto_collection_enabled
boolean

Disable or enable auto collection of performance monitoring data collection. This is useful for opt-in-first data flows, for example when dealing with GDPR compliance. This can be overridden in JavaScript.

perf_collection_deactivated
boolean

If you need to deactivate Performance collection permanently in a version of your app. This cannot be altered at runtime once set in the config.

android_task_executor_maximum_pool_size
number

Maximum pool size of ThreadPoolExecutor used by RNFirebase for Android. Defaults to 1. Larger values typically improve performance when executing large numbers of asynchronous tasks, e.g. Firestore queries.

android_task_executor_keep_alive_seconds
number

Keep-alive time of ThreadPoolExecutor used by RNFirebase for Android, in seconds. Defaults to 3. Excess threads in the pool executor will be terminated if they have been idle for more than the keep-alive time.

android_background_activity_names
array

The names (as returned by getShortClassName() of Activities used outside the context of react native. These are ignored when determining if the app is in foreground for purposes of calling javascript background handlers

android_bypass_emulator_url_remap
boolean

On android devices, the urls of firebase emulators will be remapped from localhost to 10.0.2.2. If you don't need this behaviour set this fleg to true.