GitHub project

Migrate to Firebase Installation IDs

If you send push notifications through FCM, register Firebase Installation IDs (FIDs) with Customer.io instead of FCM registration tokens. FID mode is optional, and your existing token-based integration keeps working until you choose to migrate.

If you send push notifications through FCM, Firebase can register devices with Firebase Installation IDs (FIDs) instead of FCM registration tokens. When you turn on Firebase’s FID setting, your app is in FID mode. Starting in version 6.14.0, the Customer.io React Native SDK registers the FID on each platform where your app is in FID mode. Until you turn on the setting, the SDK registers FCM tokens instead.

When someone opens a version of your app in FID mode, the SDK replaces the device’s FCM token with the FID on their profile. You don’t need to change anything in Customer.io. To learn how FIDs differ from FCM tokens and how Customer.io sends to each, see Device IDs.

Turn on FID mode

  1. Update customerio-reactnative to 6.14.0 or later. Use firebase-messaging 25.1.2 or later on Android and FirebaseMessaging 12.19.0 or later on iOS. If another library, like React Native Firebase, pins an older Firebase version, update that library too. On iOS, if you use React Native Firebase 26.1 or later, use the customerio-reactnative/fcm-core pod (version 7.1.0 or later) instead of customerio-reactnative/fcm, with @react-native-firebase/messaging installed. See React Native Firebase 26.1 and later.

  2. Turn on Firebase’s FID setting in your native projects. See Firebase’s Android and Apple setup guides for details.

    • Android: in android/app/src/main/AndroidManifest.xml, inside <application>:
      XML
      <meta-data
          android:name="firebase_messaging_installation_id_enabled"
          android:value="true" />
    • iOS: in ios/<YourApp>/Info.plist:
      XML
      <key>FirebaseMessagingInstallationIdEnabled</key>
      <true/>
  3. If your app forwards Firebase’s registration callbacks to Customer.io in native code, forward the FID callback instead of the token callback. Firebase calls only the FID callback in FID mode.

    • Android: forward onRegistered instead of onNewToken.
      KOTLIN
      override fun onRegistered(installationId: String) {
          CustomerIOFirebaseMessagingService.onRegistered(this, installationId)
      }
    • iOS: forward messaging(_:didReceiveRegistration:) instead of messaging(_:didReceiveRegistrationToken:).
      SWIFT
      func messaging(_ messaging: Messaging, didReceiveRegistration installationId: String?) {
          MessagingPush.shared.messaging(messaging, didReceiveRegistration: installationId)
      }
  4. If your app calls CustomerIO.registerDeviceToken(), pass the FID instead of an FCM token, because Firebase doesn’t return an FCM token in FID mode. You can get the FID with getId() from React Native Firebase’s Installations module.

    On a fresh iOS install, if you turned off both the SDK’s automatic token fetching and FCM auto-initialization (FirebaseMessagingAutoInitEnabled), neither the SDK nor Firebase registers the FID with FCM. In that case, call Messaging.messaging().register(completion:) in native code before you read the FID.

To go back to FCM tokens, remove the FID setting and forward the token callbacks again.

Updated October 27, 2026