Skip to main content

Plugin Reference

Full app.json options for the @dreamhorizonorg/pulse-react-native Expo config plugin.

Top Level​

OptionRequiredDescription
apiKeyYesProject API key
dataCollectionStateYes"ALLOWED", "PENDING", or "DENIED" (see Data collection consent)
androidNoAndroid-specific overrides
iosNoiOS-specific overrides

Top-level apiKey and dataCollectionState apply to both platforms. Use android / ios sections to override per platform.

android​

Init overrides​

OptionDescription
apiKeyOverride API key for Android only
dataCollectionStateOverride consent for Android only ("ALLOWED", "PENDING", or "DENIED")
globalAttributesKey/value pairs attached to all Android telemetry
logLevelNative Android log verbosity — debugging only, do not set in production. "VERBOSE", "DEBUG", "INFO", "WARN", "ERROR", or "NONE" (default). Case-insensitive. See Android Advanced Configuration.
coreLibraryDesugaring{ "enabled": boolean } — when minSdkVersion < 26, set enabled: true so core library desugaring is applied at prebuild
okHttpInstrumentation{ "enabled": boolean } — optional native OkHttp spans (Image / FastImage, etc.). See OkHttp instrumentation
kotlin19Compatboolean (default false) — opt-in for apps still compiling with Kotlin 1.9.x (broadly Expo SDK ≤ 52 / RN ≤ 0.76). Writes PulseReactNativeOtel_kotlin19Compat=true to android/gradle.properties so Pulse caps its transitive Kotlin runtime to 1.9-compatible versions. Leave off on Expo SDK 53+ / Kotlin 2.0+. See Setup → Kotlin 1.9.x apps

OkHttp instrumentation​

React Native on Android uses OkHttp for most HTTP traffic. This block wires native OkHttp instrumentation (Pulse OkHttp artifacts plus the Byte Buddy Gradle plugin). If you do not need outbound HTTP spans from the native stack, omit the okHttpInstrumentation key entirely.

"android": {
"okHttpInstrumentation": {
"enabled": true
}
}

Optionally pass byteBuddyGradlePluginVersion to overrride default 1.17.8 version.

android.instrumentation​

KeyShapeDescription
crash{ "enabled": boolean }Crash reporting
network{ "enabled": boolean }Network monitoring
activity{ "enabled": boolean }Activity lifecycle
fragment{ "enabled": boolean }Fragment lifecycle
anr{ "enabled": boolean }ANR detection
slowRendering{ "enabled": boolean }Slow frame detection
interaction{ "enabled": boolean }Interactions

ios​

Init overrides​

OptionDescription
apiKeyOverride API key for iOS only
dataCollectionStateOverride consent for iOS only ("ALLOWED", "PENDING", or "DENIED")
globalAttributesKey/value pairs attached to all iOS telemetry
logLevelNative iOS log verbosity — debugging only, do not set in production. "VERBOSE", "DEBUG", "INFO", "WARN", "ERROR", or "NONE" (default). Case-insensitive. See iOS SDK Initialization.

ios.configuration​

KeyTypeDescription
includeScreenAttributesbooleanAttach screen metadata to telemetry
includeNetworkAttributesbooleanAttach network metadata
includeGlobalAttributesbooleanAttach global attributes

ios.instrumentation​

Simple toggles — { "enabled": boolean } each: crash, appLifecycle, screenLifecycle, appStartup, location

Full Example​

{
"expo": {
"plugins": [
[
"@dreamhorizonorg/pulse-react-native",
{
"apiKey": "your-api-key",
"dataCollectionState": "PENDING",
"android": {
"globalAttributes": { "platform": "android" },
"coreLibraryDesugaring": { "enabled": true },
"okHttpInstrumentation": { "enabled": true },
"instrumentation": {
"crash": { "enabled": true },
"network": { "enabled": true },
"interaction": { "enabled": true }
}
},
"ios": {
"globalAttributes": { "platform": "ios" },
"configuration": {
"includeScreenAttributes": true
},
"instrumentation": {
"crash": { "enabled": true },
"screenLifecycle": { "enabled": false },
}
}
}
]
]
}
}