Skip to main content

groundcover_rum 0.0.1-rc.0 copy "groundcover_rum: ^0.0.1-rc.0" to clipboard
groundcover_rum: ^0.0.1-rc.0 copied to clipboard

groundcover Real User Monitoring (RUM) for Flutter on iOS and Android: sessions, network and tracing, screens, taps, errors, logs, native crashes, hangs, app start, frame vitals.

Changelog #

0.0.1-rc.0 #

The first release candidate. It sends the same /json/rum format as groundcover's browser and React Native SDKs, so Flutter sessions land in the same RUM views.

Setup #

  • await GroundcoverRum.init(config) before runApp. It throws GroundcoverInitException when the SDK can't start; calls made before it completes are dropped with a warning.
  • GroundcoverWidget around the app, and GroundcoverNavigatorObserver on the navigator or router.
  • iOS builds through Swift Package Manager or CocoaPods, both with KSCrash, and ships an Apple privacy manifest. Android declares the INTERNET permission itself.

Captured #

  • Sessions persisted across launches, with sampling, a presence gate (a touch or a return to the foreground) and rotation after 30 minutes idle or past sessionMaxDuration.
  • Network capture for every dart:io HttpClient created after init (package:http, dio's default adapter), with W3C traceparent propagation to tracing.propagationUrls, redaction, and text bodies up to 5 KB.
  • Navigation between named routes from GroundcoverNavigatorObserver, plus manual startNavigation / endNavigation.
  • Taps, long presses, swipes, scrolls and pinches from GroundcoverWidget, named from the widget tree; one input event per finished text edit, never the text.
  • Uncaught errors from FlutterError.onError and PlatformDispatcher.onError, chained to the app's handlers, and captureException.
  • Logs from debugPrint and GroundcoverRum.logger; custom events; user identity.
  • Native crashes, reported on the next launch under the session they happened in, even when that launch isn't sampled: iOS through KSCrash; Android through a chained uncaught-exception handler and, from API 30, the system's exit records. Delivered at least once, with a stable crash_report_id.
  • App hangs: main-thread stalls the app recovered from, as exception events (ANR on Android, AppHang on iOS). Dart runs on the main thread, so a long Dart stall is reported too.
  • App start: app_start_cold, app_start_warm and app_start_hot, from the process start to the first frame, and time to interactive (app_start_tti): the first screen landing, or GroundcoverRum.markAppInteractive() with NativeOptions(tti: TtiMode.manual).
  • Frame vitals: one frames_delay_total per screen, with slow and frozen frame counts, from Flutter's own frame timings.

Privacy #

  • Masking on by default: privacy levels, per-surface masking, sensitiveKeys, a redact hook and GroundcoverPrivate. Typed text is never captured, including text an app mirrors into Semantics(value:).

Performance #

  • A batch's JSON, UTF-8 encoding and gzip run on a short-lived background isolate, off the UI thread. The batch sent as the app goes to the background is still built inline, so it is queued before the process can be suspended.

Testing #

  • package:groundcover_rum/testing.dart: GroundcoverRumTesting.reset() stops the SDK and undoes what it installed, for an app's tests. triggerTestCrash and blockMainThread work in development builds only.
1
likes
160
points
49
downloads

Documentation

API reference

Publisher

verified publishergroundcover.com

Weekly Downloads

groundcover Real User Monitoring (RUM) for Flutter on iOS and Android: sessions, network and tracing, screens, taps, errors, logs, native crashes, hangs, app start, frame vitals.

Homepage

Topics

#monitoring #observability #rum #tracing

License

MIT (license)

Dependencies

flutter, meta

More

Packages that depend on groundcover_rum

Packages that implement groundcover_rum