Middleware React Native Real User Monitoring SDK
- AutoInstrumentation HTTP Monitoring
- AutoInstrumentaion JS Errors
- AutoInstrumenation navigation tracking for
react-navigation - AutoInstrumenation native crash errors
- Custom Instrumenation using OpenTelemetry
- Custom logging
- RUM Session Tracking
- Session Recording
Middleware React Native for Mobile supports React Native 0.68 and higher.
The library is also compatible with the following frameworks and libraries:
- Expo framework
- React Navigation 5 and 6
yarn add @middleware.io/middleware-react-nativeimport { MiddlewareWrapper, type ReactNativeConfiguration } from '@middleware.io/middleware-react-native';
const MiddlewareConfig: ReactNativeConfiguration = {
serviceName: 'Mobile-SDK-ReactNative',
projectName: '$Mobile-SDK-ReactNative',
accountKey: '<middleware-account-key>',
target: '<target-url>',
deploymentEnvironment: 'PROD',
globalAttributes: {
name: '<your-name>',
},
};
export default function App() {
return (
<MiddlewareWrapper configuration={MiddlewareConfig}>
// Application Components
</MiddlewareWrapper>
);
}You can add custom logs such as debug, error, warn, info these logs will be shown on Middleware Logs Dashboard
MiddlewareRum.debug("I am debug");
MiddlewareRum.error("I am error");
MiddlewareRum.info("I am info");
MiddlewareRum.warn("I am warn");You can set global attributes by calling setGlobalAttributes function.
MiddlewareRum.setGlobalAttributes({
"name": "Middleware",
"app.version": "1.0.0",
"custom_key": "some value"
});To ignore capturing urls pass Array<String | RegExp> in ignoreUrls key in ReactNativeConfiguration
Example:
ignoreUrls: [/^\/api\/facts/, /^\/api\/v1\/users\/.*/],Note: By default SDK captures following
Content-type
application/jsonapplication/texttext/x-component
To redact network headers Set<String> in ignoreHeaders key in ReactNativeConfiguration
Example:
ignoreHeaders: new Set(['x-ignored-header']),Note: By default x-access-token will be readacted.
To disable network instrumentation set networkInstrumentation: false
const MiddlewareConfig: ReactNativeConfiguration = {
...
networkInstrumentation: false
};To enable distributed tracing you need to pass backend domains in tracePropagationTargets which takes values in Array<Regex>
Example:
const MiddlewareConfig: ReactNativeConfiguration = {
...
tracePropagationTargets: [/api.example.com/, /anotherapi.example.com/]
};You can report handled errors, exceptions, and messages using the reportError function
try{
throw new Error("I am error")
} catch (err) {
MiddlewareRum.reportError(err);
}You can set latitude & longitde as global attributes.
MiddlewareRum.updateLocation(latitude: number, longitude: number)By default session recording is enabled, to disable session recording pass sessionRecording: false configuration as follows -
const MiddlewareConfig: ReactNativeConfiguration = {
serviceName: 'Mobile-SDK-ReactNative',
projectName: '$Mobile-SDK-ReactNative',
accountKey: '<middleware-account-key>',
target: '<target-url>',
sessionRecording: false,
deploymentEnvironment: 'PROD',
globalAttributes: {
name: '<your-name>',
},
};Views will get blurred hiding sensitive information in session recording.
<MiddlewareSanitizedView>
<Component/>
</MiddlewareSanitizedView>See the contributing guide to learn how to contribute to the repository and the development workflow.
Apache 2.0