Exciting release!Introducing "safe npm". Learn more
Log inDemoInstall


Package Overview
File Explorer

Advanced tools


React Native Apxor SDK


Version published
Weekly downloads
increased by85.81%

Weekly downloads





React Native wrapper for Apxor SDK. Please refer Plugins section to integrate other Apxor plugins.

Getting started

For React Native version 0.59.0 and lower

Run the following command

$ npm install react-native-apxor-sdk --save

$ react-native link react-native-apxor-sdk

  1. Open up android/app/src/main/java/[...]/MainActivity.java

    • Add import com.apxor.reactnativesdk.RNApxorSDKPackage; to the imports at the top of the file
    • Add new RNApxorSDKPackage() to the list returned by the getPackages() method
    @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), ... new RNApxorSDKPackage(), <- ApxorSDK package ... ); }
  2. Append the following lines to android/settings.gradle:

include ':react-native-apxor-sdk' project(':react-native-apxor-sdk').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-apxor-sdk/android')

For React Native version 0.60.0 and higher

Run the command $ yarn add react-native-apxor-sdk

Integrate Apxor React Native Android SDK

  1. Insert the following lines inside repositories block in android/build.gradle
maven { url "http://repo.apxor.com/artifactory/list/libs-release-android/" } maven { url "https://dl.bintray.com/apxor/apxor-android" }
  1. Insert the following lines inside the dependencies block in android/app/build.gradle:
implementation 'com.apxor.androidx:apxor-android-sdk-core:2.8.3@aar'
  1. Add the following meta-data tag inside application tag of AndroidManifest.xml file:

    <application ...> ... <meta-data android:name="APXOR_APP_ID" android:value=[REPLACE_YOUR_APXOR_APP_ID_HERE] /> ... </application>

Plugins (Optional)

  1. Add following dependencies in build.gradle file

    // Add this to track uninstalls and send push notifications from Apxor dashboard // Note: We don't support firebase-messaging >= 22.0.0 yet implementation('com.apxor.androidx:apxor-android-sdk-push:1.2.7@aar') { exclude group: 'com.google.firebase' } // Add these for Realtime Actions and Surveys implementation 'com.apxor.androidx:apxor-android-sdk-qe:1.5.1@aar' implementation 'com.apxor.androidx:apxor-android-sdk-rtm:1.8.9@aar' implementation 'com.apxor.androidx:surveys:1.3.6@aar' // Add this to track application crashes implementation 'com.apxor.androidx:apxor-android-crash-reporter:1.0.5@aar' // Helper plugin to create walkthroughs implementation 'com.apxor.androidx:wysiwyg:1.2.6@aar' // Add this to log events without attributes at runtime implementation 'com.apxor.androidx:jit-log:1.0.0@aar' // Getting a "Could not find" error? Make sure that you've added // Apxor's Maven repository to your root-level build.gradle file


    If you are using firebase-messaging >= 22.0.0, use "com.apxor.androidx:apxor-android-sdk-push-v2" instead of "com.apxor.androidx:apxor-android-sdk-push"

    implementation('com.apxor.androidx:apxor-android-sdk-push-v2:1.2.7@aar') { exclude group: 'com.google.firebase' }
  2. Create plugins.json file at android/app/src/main/assets/ folder

  3. Paste the following JSON in that file

    { "plugins": [ { "name": "rtm", "class": "com.apxor.androidsdk.plugins.realtimeui.ApxorRealtimeUIPlugin" }, { "name": "crash", "class": "com.apxor.androidsdk.plugins.crash.CrashReporterPlugin" }, { "name": "push", "class": "com.apxor.androidsdk.plugins.push.PushPlugin" }, { "name": "surveys", "class": "com.apxor.androidsdk.plugins.survey.SurveyPlugin" }, { "name": "wysiwyg", "class": "com.apxor.androidsdk.plugins.wysiwyg.WYSIWYGPlugin" }, { "name": "jitlog", "class": "com.apxor.androidsdk.plugins.jitlog.ApxorJITLogPlugin" } ] }
  4. If you have extended the FirebaseMessagingService in your application, please use below code in your extends FirebaseMessagingService class to receive Push notifications sent from Apxor dashboard

if (remoteMessage.getFrom().equals(YOUR_FCM_SENDER_ID)) { // Your logic goes here } else { if (ApxorPushAPI.isApxorNotification(remoteMessage)) { ApxorPushAPI.handleNotification(remoteMessage, getApplicationContext()); } else { // Silent or Data push notification which you can send through Apxor dashboard } }

Integrate Apxor React Native iOS SDK

  • To Auto initialize SDK (Recommended), add the following inside your application plist file.

  • Open your application's Info.plist as source code.

  • Copy paste the below piece of code, to create an entry for ApxorSDK.

<key>Apxor</key> <dict> <key>Core</key> <string>{YOUR_APP_ID}</string> <key>APXSurveyPlugin</key> <true/> <key>APXRTAPlugin</key> <true/> <key>APXWYSIWYGPlugin</key> <true/> </dict>
  • To add the APXWYSIWYGPlugin, add the following to your application's .podspec file
s.dependency 'Apxor-WYSIWYG', '1.0.84'


The APXWYSIWYGPlugin is only for debug builds, make sure to remove it for production builds.


import RNApxorSDK from 'react-native-apxor-sdk';


// Syntax RNApxorSDK.setUserIdentifier('user_id'); // Example RNApxorSDK.setUserIdentifier('<some_user_id>');


// Syntax RNApxorSDK.logAppEvent(event_name, properties); // Example RNApxorSDK.logAppEvent('ADD_TO_CART', { userId: 'user@example.com', value: 1299, item: 'Sony Head Phone 1201', });

User Properties

// Syntax RNApxorSDK.setUserCustomInfo(properties); // Example RNApxorSDK.setUserCustomInfo({ city: 'Hyderabad', age: 12, });

Track Navigation

If you are already using @react-navigation, Apxor SDK automatically tracks screen navigation if you follow below mentioned steps

Apxor's ApxNavigationContainer is just a wrapper over NavigationContainer which internally handles the route navigations (nested route navigations too) and take necessary actions within RNApxorSDK

To automatically track navigations, use ApxNavigationContainer and pass the same props you pass to NavigationContainer like below

import { ApxNavigationContainer } from 'react-native-apxor-sdk'; import { createStackNavigator } from '@react-navigation/stack'; const Stack = createStackNavigator(); function App() { return ( <ApxNavigationContainer theme={yourTheme} linking={yourLinkingOptions} fallback={yourFallbackNode} {...others} > <Stack.Navigator initialRouteName="Home"> <Stack.Screen name="Home" component={Home} /> <Stack.Screen name="Details" component={DetailsScreen} /> <Stack.Screen name="FlatList" component={FlatListSample} /> </Stack.Navigator> </ApxNavigationContainer> ); }
// Syntax RNApxorSDK.logNavigationEvent(screen_name); // Example RNApxorSDK.logNavigationEvent('LoginScreen');



Last updated on 24 Mar 2023

Did you know?

Socket installs a Github app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.

Install Socket
support@socket.devSocket SOC 2 Logo


  • Package Issues
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc