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 },
}
}
}
]
]
}
}