Skip to main content
This page describes what the React Native SDK collects, what is outside its collection scope, and how to control the scope. All events are written with source: "react-native".

Event types

Automatically collected context

Every event carries the following context (collected by the native layer):
  • Application: service, version, env, and application.id
  • Device: device model, OS and version, screen size
  • Session: session.id, sampled by sessionSamplingRate
  • Connectivity: network type (when available)
  • User: usr.id / usr.name / usr.email set through DdSdkReactNative.setUser
  • Global attributes: custom fields set through DdSdkReactNative.setAttributes

Network request collection boundary

Resource collection has a single entry point: the XMLHttpRequest proxy in the JavaScript layer (fetch in React Native is implemented on top of it).
As a result, the resource data of a React Native application contains API requests only, with no images, fonts, scripts, or other static resources. The console does not show static-resource panels for React Native applications. This is by design, following the collection boundary, and does not mean data is missing.

Performance data

The console shows a Performance page for React Native applications. Native vitals are collected by the wrapped Android / iOS SDKs, and the JS-thread frame rate is collected additionally by the React Native SDK: The collection frequency of native vitals is controlled by vitalsUpdateFrequency, default VitalsUpdateFrequency.AVERAGE; set it to NEVER to disable.

Logs

DdLogs.debug / info / warn / error send log events, which are not RUM events. Currently only Android actually sends them; iOS is a no-op.

Manual instrumentation

Besides automatic collection, you can record events and attributes manually.

Sampling and controls

Data scrubbing

Event mappers let you modify or drop data before it is reported, for scrubbing or noise filtering. See Advanced configuration.

Reporting behavior

  • The SDK buffers events in the native layer and uploads them in batches according to uploadFrequency, batchSize, and batchProcessingLevel
  • When the network is unavailable, events are persisted locally and retried once connectivity returns
  • The default intake endpoint is https://browser.flashcat.cloud/api/v2/rum; on-premises deployments can set the full RUM intake URL through customEndpoints.rum (it must include /api/v2/rum and keep the deployment’s path prefix)