Skip to content
Last9
Book demo

Real User Monitoring

Real User Monitoring SDKs for web, Android, iOS, React Native, and Flutter. Automatic instrumentation for sessions, views, network requests, errors, and resource metrics via OpenTelemetry.

Last9 Real User Monitoring (RUM) captures real user experience data from web and mobile applications. Each SDK instruments sessions, views, network requests, unhandled errors, and resource metrics (plus ANRs on Android), then exports spans and logs to Last9 over OTLP/HTTP.

Supported platforms

What gets captured

All SDKs auto-instrument the same signals:

  • Sessions — rolling session IDs with idle + max-duration expiry. Session ID is propagated on every span and log.
  • Views / page loads — screen transitions tracked as spans. Auto-tracked via SPA route changes (web), activity lifecycle (Android), UIKit/SwiftUI hooks (iOS), React Navigation (React Native), or NavigatorObserver (Flutter). Manual startView(name) is available on every platform.
  • Network — HTTP requests captured with URL, method, status, duration, request/response sizes. Traceparent header is injected so spans link to backend traces.
  • Errors — unhandled JS exceptions, promise rejections, native crashes, and Flutter framework errors. ANR detection is Android-only. Manual captureError(e, context) is available on every platform.
  • Core Web Vitals (web) — LCP, FCP, CLS, INP, TTFB.
  • Resources (mobile) — periodic memory and CPU samples (configurable interval, default 30s).
  • Custom events + attributesaddEvent, spanAttributes, and identify for user context.

Distribution

SDKs are distributed from Last9’s CDN:

PlatformStable versionArtifactStable CDN rootVersioned CDN root
Web2.5.1UMD scripthttps://cdn.last9.io/rum-sdk/builds/stable/v2/https://cdn.last9.io/rum-sdk/builds/2.5.1/
Android0.8.0AAR + POMhttps://cdn.last9.io/rum-sdk/android/builds/stable/v0/https://cdn.last9.io/rum-sdk/android/maven/io/last9/rum-android/0.8.0/
iOS0.8.0CocoaPods podspec + SPM XCFrameworkhttps://cdn.last9.io/rum-sdk/ios/builds/stable/v0/https://cdn.last9.io/rum-sdk/ios/builds/0.8.0/
React Native0.8.0npm tarballhttps://cdn.last9.io/rum-sdk/react-native/builds/stable/v0/https://cdn.last9.io/rum-sdk/react-native/builds/0.8.0/
Flutter0.8.0tar.gz packagehttps://cdn.last9.io/rum-sdk/flutter/builds/stable/v0/https://cdn.last9.io/rum-sdk/flutter/builds/0.8.0/

Stable channels are major-version pinned: Web uses v2; mobile SDKs use v0. Mobile staging builds use the -alpha suffix and explicit versioned URLs.

Latest stable changes

  • Web 2.5.1 improves error normalization for non-Error throws and promise rejections, including strings, primitives, and plain objects.
  • Mobile 0.8.0 changes the ingestion Client-ID header to an SDK-generated per-install UUID instead of serviceName, preventing all devices for an app from sharing the same ingestion rate-limit bucket.
  • Mobile 0.7.x adds network waterfall child spans for dns, tcp_connect, tls_handshake, and ttfb, plus stronger unknown-error type handling.
  • Mobile 0.6.x adds view.ttfd to measure response-to-render latency on data-driven screens.

Next steps

Pick your platform:

Once data is flowing, explore it in Discover > Applications — performance, errors, sessions, and session correlation with backend traces. To turn RUM signals into alerts (HTTP error rates, p95 latency, crashes, ANRs), see Alerting on RUM Metrics.


Troubleshooting

Please get in touch with us on Discord or Email if you have any questions.