Upgrade the Splunk RUM React Native agent
Migrate existing deployments to the new Splunk RUM React Native agent.
If you're using the old Splunk RUM React Native agent in your React Native applications, follow these steps to migrate your applications to the new Splunk RUM React Native agent.
- Update platform requirements:
-
React Native must be
0.75.0+ and React18.2.0+. -
iOS must target
15.0+ and usedynamic frameworksfor Pod dependencies linking:TYPESCRIPT# ios/Podfile ENV['USE_FRAMEWORKS'] = 'dynamic' -
Android must target minSdkVersion 24+ and have core library desugaring enabled:
TYPESCRIPTandroid { compileOptions { isCoreLibraryDesugaringEnabled = true sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { // Optional jvmTarget = "1.8" } } dependencies { coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.1.5" }
-
- Update the initialization functions.
Replace the legacy
SplunkRum.init()andOtelWrapperwithSplunkRum.install()orSplunkRumProvider.-
Before (legacy):
TYPESCRIPTimport { SplunkRum } from '@splunk/otel-react-native'; SplunkRum.init({ realm: 'your-splunk-realm', applicationName: 'your-application-name', rumAccessToken: 'your-splunk-rum-access-token', }); -
After (new):
TYPESCRIPTimport { SplunkRum } from '@splunk/otel-react-native'; await SplunkRum.install({ endpoint: { realm: 'your-splunk-realm', rumAccessToken: 'your-splunk-rum-access-token' }, appName: 'your-application-name', deploymentEnvironment: 'your-environment-name', }); -
Recommended (provider):
TYPESCRIPTimport { SplunkRumProvider } from '@splunk/otel-react-native'; <SplunkRumProvider agentConfiguration={{ endpoint: { realm: 'your-splunk-realm', rumAccessToken: 'your-splunk-rum-access-token' }, appName: 'your-application-name', deploymentEnvironment: 'your-environment-name', }} > <App /> </SplunkRumProvider>;
-
- Update your configuration object to match
AgentConfigurationandEndpointConfiguration:Legacy New applicationNameappName(required)deploymentEnvironment(now required)realm,rumAccessTokenendpoint: { realm, rumAccessToken }beaconEndpointendpoint: { trace: "<https://...>" }(optionalsessionReplay)debugenableDebugLoggingglobalAttributesNo change needed but can be updated at runtime through
SplunkRum.instance.globalAttributesignoreUrlsnew NetworkInstrumentationModuleConfiguration(true, patterns)(iOS only)appStartEnablednew StartupModuleConfiguration(true|false)allowInsecureBeacon,enableDiskBuffering,limitDiskUsageMegabytes,truncationCheckpoint,bufferTimeout,bufferSizeRemoved these
- Remove or replace these legacy APIs:
Legacy New OtelWrapperSplunkRumProviderSplunkRum.setGlobalAttributes()SplunkRum.instance.globalAttributes.setAll()startNavigationTracking()NavigationModuleConfigurationand/or manual trackingSplunkRum.finishAppStart()Use
StartupModuleConfiguration(no manual finish API)SplunkRum.reportError()No direct replacement (use automatic error capture)
SplunkRum.updateLocation()No direct replacement (set custom attributes if needed)
Manual navigation example:
TYPESCRIPTimport { NavigationModuleConfiguration, SplunkRum } from '@splunk/otel-react-native'; await SplunkRum.install(config, [ new NavigationModuleConfiguration(true, true), ]); await SplunkRum.instance.navigation.track('Home'); - Configure modules explicitly:
Features are now controlled via module configurations. Add only what you need:
TYPESCRIPTimport { CrashReportsModuleConfiguration, InteractionsModuleConfiguration, NetworkMonitorModuleConfiguration, StartupModuleConfiguration, } from '@splunk/otel-react-native'; await SplunkRum.install(config, [ new CrashReportsModuleConfiguration(true), new InteractionsModuleConfiguration(true), new NetworkMonitorModuleConfiguration(true), new StartupModuleConfiguration(true), ]);