Mobile app intelligence
Know your app's health, release by release
Crash-free sessions, per-version RED metrics, and cold start, time-to-interactive, and screen-load timing from real iOS and React Native builds — instrumented with open-source OpenTelemetry SDKs, hosted entirely on EU infrastructure.
| Version | Crash-free | Sessions |
|---|---|---|
| 2.4.1 | 99.82% | 18,420 |
| 2.4.0 | 99.44% | 52,108 |
| 2.3.6 | 97.11% | 9,032 |
What lights up once you instrument
The metrics a release manager and an on-call engineer actually check, derived from spans and logs your app already produces.
Cold start & time to interactive
app.launch and app.tti span durations — the same signal a release manager checks before promoting a build, not a synthetic lab benchmark.
Per-screen load time
Every screen gets its own screen.load <Name> span, so one blended average never hides a single slow screen.
Navigation response time
nav.transition spans carry nav.from/nav.to attributes, catching a sluggish handoff between screens, not just a slow render once you land.
Critical-flow failure rate
Login, checkout, and payment are each their own span name, so each gets its own error-rate row instead of one blended "errors" bucket.
Crash-free session rate
Release health per app version, plus a browsable, symbolicated crash list — dSYM for iOS, R8 mappings for Android, source maps for Hermes.
Memory by cohort
A process.memory.usage gauge charted per app version × device model × OS version, so a leak on one device class doesn't hide in a fleet-wide average.
Open-source SDKs, not a proprietary agent
Both SDKs are thin, auditable wrappers around standard OpenTelemetry — no black box, no vendor-only instrumentation to reverse-engineer.
iOS (Swift)
Swift Package Manager, product VartioTelemetry.
.package(url: "https://github.com/vartio-dev/vartio-swift.git", from: "1.0.0")
React Native
npm package @vartio/react-native.
npm install @vartio/react-native @opentelemetry/api @opentelemetry/api-logs
Standard OpenTelemetry. No lock-in.
The SDKs above are a convenience layer over the same span and log conventions documented in docs/mobile-ios.md and docs/mobile-react-native.md. Plain OpenTelemetry works too, with no loss of functionality — the SDK just saves you writing the resource attributes and exporter wiring by hand.
Because it's the same OTLP wire protocol your backend services already use, a collector in front of the app can fan out to Vartio and Grafana (or any other OTLP-compatible backend) at the same time. There is nothing Vartio-specific to rip out later — the instrumentation layer is not the thing you'd be switching away from.
Ship the next release with confidence
Create a mobile monitor, point either SDK at it, and see release health within minutes of your next build.