Skip to main content
Userpilot React Native Module enables you to capture user insights and deliver personalized in-app experiences in real time. With just a one-time setup, you can immediately begin leveraging Userpilot’s analytics and engagement features to understand user behaviors and guide their journeys in-app. The Userpilot SDK is fully compatible with Expo apps. To get started, refer to the React Native integration guide for detailed instructions on configuring and using the Userpilot React Native SDK within your Expo project.

Gettings started

For push notification support, we provide an expo-config plugin that automatically configures the necessary settings for seamless integration with the Userpilot SDK. You can fetch the latest version from here. Prerequisites
  1. Ensure the Userpilot React Native Module is installed in your app and the SDK is initialized:
  1. It is recommended to have configured your Android and iOS push settings in Userpilot Settings page.
  2. Refer to Android Guide and iOS Guide to get needed files and settings.
  3. Copy your Firebase configuration file into your project and set the path to the file in your app.json file, in the android.googleServicesFile (doc) property:
Note that Userpilot iOS push notifications do not use Firebase.

Usage

  1. Install the Userpilot expo config plugin
  1. Add @userpilot/expo-config to the plugin list in your app.json file, and register the same value as your app’s scheme:
The Userpilot Expo plugin injects the necessary configuration to properly handle push notifications and deep links. The scheme must be userpilot- followed by your Userpilot app token, lowercased. That is the scheme the SDK builds its push notification deep links with, so any other value means notification taps never reach your app. The top-level scheme registers the URL type on iOS; during prebuild, the plugin adds the matching Android intent filter with android:host="sdk" automatically. Userpilot validates this host for preview and push-notification URLs; no separate host option is needed in the plugin configuration.
  1. Capture deep links, which is also how push notification taps arrive:
  1. Test locally with a new development or EAS build:

SDK callbacks

To handle deep link triggers from push notifications, you can listen to SDK events as shown below.
For more information, refer to the Userpilot React Native SDK.

Android Handling

No extra Android code is required, and you do not need expo-notifications. The Userpilot SDK receives the push message through its own Firebase messaging service, posts the notification, and attaches a userpilot-APP_TOKEN://sdk/notification deep link to it. Tapping the notification opens your app through the intent filter the Expo plugin adds, so the tap arrives in the same didHandleURL handler shown above. The SDK also requests the POST_NOTIFICATIONS permission itself; pass disableRequestPushNotificationsPermission: true to Userpilot.setup if you would rather request it yourself. Because Android delivers an FCM message to only one messaging service, Userpilot’s service must be the one that receives it. If your app installs another push library that registers its own FirebaseMessagingService — such as expo-notifications, OneSignal, or a custom service — that library may consume Userpilot messages and the notification will not appear. On iOS no configuration is needed: thanks to swizzling, the Userpilot iOS SDK handles notifications automatically. No iOS configuration needed, thanks for Swizzling in iOS, Userpilot’s iOS SDK handles notifications automatically.