@instana/react-native-agent

Monitor React Native app end-user interactions with Instana

Usage no npm install needed!

<script type="module">
  import instanaReactNativeAgent from 'https://cdn.skypack.dev/@instana/react-native-agent';
</script>

README

Instana React Native Agent npm (scoped)

Changelog | Contributing


Installation

Node.js Dependency

npm install --save @instana/react-native-agent 

Android

Android will require you to take 2 extra steps in order to support automatic tracking of network requests.

Supported React Native versions:

For React Native 0.63.3 or earlier, please use:

  • Instana Android Plugin 1.6.1
  • Android Gradle Plugin 3.4.2
  • Gradle 5.5

For React Native 0.63.4 or later, please use:

  • Instana Android Plugin 4.6.1
  • Android Gradle Plugin 4.1.0
  • Gradle 6.5

Steps

Add the Instana Android agent plugin to your dependencies via android/build.gradle:

buildscript {
    dependencies {
        classpath "com.instana:android-agent-plugin:$INSTANA_ANDROID_PLUGIN_VERSION"
    }
}

Apply the Instana Android agent plugin via android/app/build.gradle file (at the top):

apply plugin: 'com.android.application'
apply plugin: 'com.instana.android-agent-plugin'

iOS

Your project needs to contain at least one Swift file (it can be empty). If you don't have any, please open your Xcode Project in <YourReactNativeProject>/ios and add an empty Swift file. Please also let Xcode create the Bridging Header for you.

Usage

Please refer to our React Native API documentation.

Recommendation

We recommend adding http://localhost:8081 to the ignored URLs list to prevent the Agent from tracing communication with the Metro bundler:

Instana.setIgnoreURLsByRegex(["http:\/\/localhost:8081.*"]);

Known Issues

Android: fetch(url)

If your app uses fetch to complete network requests, you might find your app crashing on runtime whenever fetch is used after linking Instana React Native Agent : No virtual method toString(Z)Ljava/lang/String;

If you encounter this issue before the upstream issue is solved, please apply the following workaround. Add the following to your Android module-level gradle file (usually app/gradle.build):

dependencies {
    implementation "com.squareup.okhttp3:okhttp:4.3.1"
    implementation "com.squareup.okhttp3:okhttp-urlconnection:4.3.1"
}