@middleware.io/middleware-react-native
v1.0.18
Published
Middleware React Native real user monitoring SDK
Readme
Middleware React Native SDK
Middleware React Native Real User Monitoring SDK
Features
- 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
Documentation
Compatibility & Requirements
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
Installation
yarn add @middleware.io/middleware-react-nativeUsage
import { 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>
);
}Custom logging
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");Setting Global Attributes
You can set global attributes by calling setGlobalAttributes function.
MiddlewareRum.setGlobalAttributes({
"name": "Middleware",
"app.version": "1.0.0",
"custom_key": "some value"
});Network instrumentation
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
};Distributed Tracing
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/]
};Reporting custom errors
You can report handled errors, exceptions, and messages using the reportError function
try{
throw new Error("I am error")
} catch (err) {
MiddlewareRum.reportError(err);
}Updating location information
You can set latitude & longitde as global attributes.
MiddlewareRum.updateLocation(latitude: number, longitude: number)Enable session recording
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>',
},
};Sanitizing views in session recording
Views will get blurred hiding sensitive information in session recording.
<MiddlewareSanitizedView>
<Component/>
</MiddlewareSanitizedView>Contributing
See the contributing guide to learn how to contribute to the repository and the development workflow.
License
Apache 2.0
