Splunk Observability Mobile RUM
Prerequisites
| Tool or access |
Purpose |
Verify |
| Bash and Python 3 |
Run bundled setup and validation helpers |
bash --version && python3 --version |
| Required product/platform access |
Inspect or configure the selected target |
Complete the documented preflight |
| Credential files for live modes |
Keep secrets out of chat |
Verify paths only |
Workflow Overview
┌───────────┐ ┌───────────────┐ ┌───────────────┐ ┌─────────────────┐
│ Preflight │ → │ Render/review │ → │ Apply/handoff │ → │ Validate evidence │
└───────────┘ └───────────────┘ └───────────────┘ └─────────────────┘
When to Activate
- Instrumenting mobile apps with Splunk RUM, preparing Mobile Session Replay, preparing mobile-side Digital
Experience Analytics (DXA), validating RUM-to-APM linking, or rendering mobile source patches. Do not use for
AppDynamics EUM or.
- Preview and review the splunk observability mobile rum setup workflow before any live apply phase.
- Diagnose failed prerequisites, generated assets, configuration, or validation evidence.
Examples
Inspect the supported setup modes before selecting one:
bash skills/splunk-observability-mobile-rum-setup/scripts/setup.sh --help
Expected output: usage, supported modes, and required arguments are displayed
without changing the target environment.
Inspect validation modes before running completion checks:
bash skills/splunk-observability-mobile-rum-setup/scripts/validate.sh --help
Expected output: offline, live, and completion options are displayed when the
skill supports them; help exits without mutation.
Troubleshooting
| Issue |
Cause |
Resolution |
| Preflight fails |
A required tool or access path is missing |
Resolve it before rendering or applying |
| Rendered assets are incomplete |
Required non-secret inputs are absent |
Complete intake and render again |
| Apply is blocked |
Review, credentials, or explicit acceptance is missing |
Use the documented handoff |
| Validation is incomplete |
Live evidence is unavailable |
Record the gap and keep completion open |
This skill configures Splunk Observability Cloud Mobile RUM, separate from
Kubernetes Browser RUM injection and AppDynamics EUM. It is render-first:
snippets and runbooks are the default output; patch files are optional; app
source is changed only when --apply-patches --accept-mobile-rum-source-edit
is explicitly used. Use it as the mobile instrumentation handoff when a Digital
Experience Analytics (DXA) request needs supported iOS or Android RUM agents,
user tracking, readable stack traces, or Mobile Session Replay.
Scope
- Native iOS and iPadOS 15+ with the Splunk iOS agent.
- Native Android with Maven Central dependencies, API 24+ default runtime,
desugaring, network/crash/ANR/slow-rendering/interaction/lifecycle modules,
mapping upload, and WebView bridge snippets.
- React Native 0.75.0+ and React 18.2.0+ for bare apps and Expo development
builds, with native-side dSYM/mapping handoffs.
- Flutter 3.32.0+ and Dart 3.8.0+ with
splunk_otel_flutter, native-side
dSYM/mapping handoffs, route/manual instrumentation, and WebView handoff.
- Session Replay behind
--accept-session-replay-enterprise.
- RUM-to-APM linking validation for
Server-Timing: traceparent;desc="00-<32 hex>-<16 hex>-01".
Version Pins
Every default below was verified against its upstream registry on 2026-08-20 and
is the current release on that date. No pin is knowingly behind upstream.
| Component |
Default |
| iOS agent |
2.4.1 |
| Android agent |
2.3.3 |
| Android Gradle plugins |
2.3.3 |
| React Native agent |
1.2.0 |
| React Native Session Replay |
1.2.0 |
| Flutter agent |
1.2.0 |
| Flutter Session Replay |
1.2.0 |
Flutter agent and Flutter Session Replay must stay on the same minor line:
1.2.0 pins both platform interfaces to >=1.2.0 <1.3.0.
Deployment environment attribute rename
iOS 2.4.1 and Android 2.3.2 renamed the deployment environment resource
attribute from deployment.environment to deployment.environment.name. Both
agents emit only the new key; there is no transitional dual-emit. Dashboards,
detectors, and saved searches that filter or group mobile RUM data on the old
key go blank as soon as an app ships these pins. While a fleet straddles the
rename, accept both keys rather than switching outright.
The Swift and Kotlin configuration property is still named
deploymentEnvironment, so rendered initialization snippets are unaffected.
The renderer rejects latest, +, ranges, wildcard, and otherwise unpinned
versions unless --allow-latest-version is set.
Workflow
Render snippets:
bash skills/splunk-observability-mobile-rum-setup/scripts/setup.sh \
--render \
--spec skills/splunk-observability-mobile-rum-setup/template.example
Review splunk-observability-mobile-rum-rendered/:
runbook.md
preflight-report.md
- platform snippet directories
version-lock.json
- dSYM/mapping upload helpers
- Browser RUM and backend auto-instrumentation handoff scripts
Optionally render source patches:
bash skills/splunk-observability-mobile-rum-setup/scripts/setup.sh \
--render-patches \
--spec mobile-rum.yaml
Optionally apply source patches after review:
bash skills/splunk-observability-mobile-rum-setup/scripts/setup.sh \
--apply-patches \
--accept-mobile-rum-source-edit \
--spec mobile-rum.yaml
Validate static output and optional RUM-to-APM response headers:
bash skills/splunk-observability-mobile-rum-setup/scripts/validate.sh \
--output-dir splunk-observability-mobile-rum-rendered \
--check-server-timing https://api.example.com/health
Safety Rules
- Never pass raw tokens with CLI flags.
--rum-token, --access-token,
--token, --bearer-token, --api-token, --o11y-token, --sf-token,
--hec-token, --platform-hec-token, and --api-key are rejected.
- RUM tokens are client-exposed after release, but this skill still refuses to
commit or render raw token values into tracked source. Use token references,
build-time config, CI secrets, or mobile platform secret delivery.
- Server-to-server dSYM and Android mapping upload helpers use
SPLUNK_O11Y_TOKEN_FILE; they do not accept token literals.
source_mode: apply-patches requires --accept-mobile-rum-source-edit.
- Session Replay requires
--accept-session-replay-enterprise and reviewed
masking rules.
References
Read the platform file that matches the app being instrumented:
- references/ios.md
- references/android.md
- references/react-native.md
- references/flutter.md
- references/privacy-session-replay.md
- references/apm-linking.md
Hand-offs
Out Of Scope
- AppDynamics EUM, BRUM, MRUM, or AppDynamics Session Replay.
- Kubernetes Browser RUM HTML injection for web frontends.
- Uploading React Native JS bundle source maps as a Mobile RUM artifact.
Browser source maps only apply to WebView pages instrumented with Browser RUM.
- Running mobile app builds or live Splunk uploads by default.
1---2name: splunk-observability-mobile-rum-setup3description: Use when instrumenting mobile apps with Splunk RUM, preparing Mobile Session Replay, preparing mobile- side Digital Experience Analytics (DXA), validating RUM-to-APM linking, or rendering mobile source patches. Do not use for AppDynamics EUM or Kubernetes Browser RUM injection. Render, validate, and optionally apply guarded source patches for Splunk Observability Cloud Mobile RUM and mobile-side Digital Experience Analytics (DXA) prerequisites across native iOS, native Android, React Native, and Flutter apps. Covers pinned agent versions, Session Replay enterprise gating, privacy controls, release attributes, dSYM and Android mapping upload helpers, React Native and Flutter native artifact handoffs, WebView Browser RUM bridge snippets, and RUM-to-APM Server-Timing traceparent validation.4---56# Splunk Observability Mobile RUM78## Prerequisites910| Tool or access | Purpose | Verify |11|---|---|---|12| Bash and Python 3 | Run bundled setup and validation helpers | `bash --version && python3 --version` |13| Required product/platform access | Inspect or configure the selected target | Complete the documented preflight |14| Credential files for live modes | Keep secrets out of chat | Verify paths only |1516## Workflow Overview1718```text19┌───────────┐ ┌───────────────┐ ┌───────────────┐ ┌─────────────────┐20│ Preflight │ → │ Render/review │ → │ Apply/handoff │ → │ Validate evidence │21└───────────┘ └───────────────┘ └───────────────┘ └─────────────────┘22```2324## When to Activate2526- Instrumenting mobile apps with Splunk RUM, preparing Mobile Session Replay, preparing mobile-side Digital27 Experience Analytics (DXA), validating RUM-to-APM linking, or rendering mobile source patches. Do not use for28 AppDynamics EUM or.29- Preview and review the splunk observability mobile rum setup workflow before any live apply phase.30- Diagnose failed prerequisites, generated assets, configuration, or validation evidence.3132## Examples3334Inspect the supported setup modes before selecting one:3536```bash37bash skills/splunk-observability-mobile-rum-setup/scripts/setup.sh --help38```3940Expected output: usage, supported modes, and required arguments are displayed41without changing the target environment.4243Inspect validation modes before running completion checks:4445```bash46bash skills/splunk-observability-mobile-rum-setup/scripts/validate.sh --help47```4849Expected output: offline, live, and completion options are displayed when the50skill supports them; help exits without mutation.5152## Troubleshooting5354| Issue | Cause | Resolution |55|---|---|---|56| Preflight fails | A required tool or access path is missing | Resolve it before rendering or applying |57| Rendered assets are incomplete | Required non-secret inputs are absent | Complete intake and render again |58| Apply is blocked | Review, credentials, or explicit acceptance is missing | Use the documented handoff |59| Validation is incomplete | Live evidence is unavailable | Record the gap and keep completion open |6061This skill configures **Splunk Observability Cloud Mobile RUM**, separate from62Kubernetes Browser RUM injection and AppDynamics EUM. It is render-first:63snippets and runbooks are the default output; patch files are optional; app64source is changed only when `--apply-patches --accept-mobile-rum-source-edit`65is explicitly used. Use it as the mobile instrumentation handoff when a Digital66Experience Analytics (DXA) request needs supported iOS or Android RUM agents,67user tracking, readable stack traces, or Mobile Session Replay.6869## Scope7071- Native iOS and iPadOS 15+ with the Splunk iOS agent.72- Native Android with Maven Central dependencies, API 24+ default runtime,73 desugaring, network/crash/ANR/slow-rendering/interaction/lifecycle modules,74 mapping upload, and WebView bridge snippets.75- React Native 0.75.0+ and React 18.2.0+ for bare apps and Expo development76 builds, with native-side dSYM/mapping handoffs.77- Flutter 3.32.0+ and Dart 3.8.0+ with `splunk_otel_flutter`, native-side78 dSYM/mapping handoffs, route/manual instrumentation, and WebView handoff.79- Session Replay behind `--accept-session-replay-enterprise`.80- RUM-to-APM linking validation for81 `Server-Timing: traceparent;desc="00-<32 hex>-<16 hex>-01"`.8283## Version Pins8485Every default below was verified against its upstream registry on 2026-08-20 and86is the current release on that date. No pin is knowingly behind upstream.8788| Component | Default |89| --- | --- |90| iOS agent | `2.4.1` |91| Android agent | `2.3.3` |92| Android Gradle plugins | `2.3.3` |93| React Native agent | `1.2.0` |94| React Native Session Replay | `1.2.0` |95| Flutter agent | `1.2.0` |96| Flutter Session Replay | `1.2.0` |9798Flutter agent and Flutter Session Replay must stay on the same minor line:99`1.2.0` pins both platform interfaces to `>=1.2.0 <1.3.0`.100101### Deployment environment attribute rename102103iOS `2.4.1` and Android `2.3.2` renamed the deployment environment resource104attribute from `deployment.environment` to `deployment.environment.name`. Both105agents emit only the new key; there is no transitional dual-emit. Dashboards,106detectors, and saved searches that filter or group mobile RUM data on the old107key go blank as soon as an app ships these pins. While a fleet straddles the108rename, accept both keys rather than switching outright.109110The Swift and Kotlin configuration property is still named111`deploymentEnvironment`, so rendered initialization snippets are unaffected.112113The renderer rejects `latest`, `+`, ranges, wildcard, and otherwise unpinned114versions unless `--allow-latest-version` is set.115116## Workflow1171181. Render snippets:119120 ```bash121 bash skills/splunk-observability-mobile-rum-setup/scripts/setup.sh \122 --render \123 --spec skills/splunk-observability-mobile-rum-setup/template.example124 ```1251262. Review `splunk-observability-mobile-rum-rendered/`:127 - `runbook.md`128 - `preflight-report.md`129 - platform snippet directories130 - `version-lock.json`131 - dSYM/mapping upload helpers132 - Browser RUM and backend auto-instrumentation handoff scripts1331343. Optionally render source patches:135136 ```bash137 bash skills/splunk-observability-mobile-rum-setup/scripts/setup.sh \138 --render-patches \139 --spec mobile-rum.yaml140 ```1411424. Optionally apply source patches after review:143144 ```bash145 bash skills/splunk-observability-mobile-rum-setup/scripts/setup.sh \146 --apply-patches \147 --accept-mobile-rum-source-edit \148 --spec mobile-rum.yaml149 ```1501515. Validate static output and optional RUM-to-APM response headers:152153 ```bash154 bash skills/splunk-observability-mobile-rum-setup/scripts/validate.sh \155 --output-dir splunk-observability-mobile-rum-rendered \156 --check-server-timing https://api.example.com/health157 ```158159## Safety Rules160161- Never pass raw tokens with CLI flags. `--rum-token`, `--access-token`,162 `--token`, `--bearer-token`, `--api-token`, `--o11y-token`, `--sf-token`,163 `--hec-token`, `--platform-hec-token`, and `--api-key` are rejected.164- RUM tokens are client-exposed after release, but this skill still refuses to165 commit or render raw token values into tracked source. Use token references,166 build-time config, CI secrets, or mobile platform secret delivery.167- Server-to-server dSYM and Android mapping upload helpers use168 `SPLUNK_O11Y_TOKEN_FILE`; they do not accept token literals.169- `source_mode: apply-patches` requires `--accept-mobile-rum-source-edit`.170- Session Replay requires `--accept-session-replay-enterprise` and reviewed171 masking rules.172173## References174175Read the platform file that matches the app being instrumented:176177- [references/ios.md](references/ios.md)178- [references/android.md](references/android.md)179- [references/react-native.md](references/react-native.md)180- [references/flutter.md](references/flutter.md)181- [references/privacy-session-replay.md](references/privacy-session-replay.md)182- [references/apm-linking.md](references/apm-linking.md)183184## Hand-offs185186- Browser RUM inside WebViews:187 [splunk-observability-k8s-frontend-rum-setup](../splunk-observability-k8s-frontend-rum-setup/SKILL.md)188- Backend response header enablement:189 [splunk-observability-k8s-auto-instrumentation-setup](../splunk-observability-k8s-auto-instrumentation-setup/SKILL.md)190- Dashboards:191 [splunk-observability-dashboard-builder](../splunk-observability-dashboard-builder/SKILL.md)192- Detectors:193 [splunk-observability-native-ops](../splunk-observability-native-ops/SKILL.md)194195## Out Of Scope196197- AppDynamics EUM, BRUM, MRUM, or AppDynamics Session Replay.198- Kubernetes Browser RUM HTML injection for web frontends.199- Uploading React Native JS bundle source maps as a Mobile RUM artifact.200 Browser source maps only apply to WebView pages instrumented with Browser RUM.201- Running mobile app builds or live Splunk uploads by default.