everframe_flutter 0.1.0
everframe_flutter: ^0.1.0 copied to clipboard
Flutter bridge for Everframe reporting on Android and iOS.
Everframe Flutter #
everframe_flutter shares masked Flutter render-boundary capture, a sensitive-widget registry that follows layout changes, and a bounded, in-memory safe-frame replay buffer. Its Android/iOS bridge starts the native SDK in production by default; development and staging are explicit options. The native SDK owns its ingest endpoint: release artifacts use the production endpoint, while local source builds can use development overrides. The bridge passes user/screen/breadcrumb context and opens the native reporter with a freshly captured, masked Flutter PNG. Wrap the screen content in a RepaintBoundary, register every sensitive widget with EverframeSensitive, and pass that boundary and registry to openReporter; missing geometry or capture fails closed. Pass a frozen SafeReplayBuffer to attach its validated PNG frames as an image-only VTree replay when the server enables replay. Android hosts must use FlutterFragmentActivity for the Compose reporter. Additional reporter screenshots are disabled for the Flutter route.
captureException(error, stackTrace: stack) explicitly stores a handled Dart error in the native encrypted outbox. Its boolean result acknowledges local storage, not server delivery. recordNetwork(method: ..., url: ..., statusCode: ...) adds an opt-in network breadcrumb containing only the HTTP method, URL origin, status, and optional duration. It removes URL credentials, paths, queries, fragments, headers, and bodies before crossing the native bridge. Call it from your own HTTP wrapper; it does not intercept Dart HTTP traffic. When sampling replay from a changing Flutter UI, use captureRegisteredFrameAfterFrame so the mask is measured after layout and paint; any unavailable or unsafe frame still revokes that replay.
Automatic Dart error hooks and embedded platform-view capture are not implemented. Call captureException explicitly for handled Dart errors. The Flutter capture boundary must contain all content you intend to report; it cannot mask native platform views outside that boundary. The magenta scan is a test sentinel; register every sensitive widget before reporting real customer content. Android and iOS simulator runs submitted masked reports and replay to a local dashboard, Physical-device behavior, production delivery, and offline retry after restart have not been verified.
Install everframe_flutter: ^0.1.0 with native Everframe 0.10.x; iOS requires 0.10.1 or newer for queued replay revocation. Native 0.9.0 lacks the image-reporter APIs used here. Contributors can build Android against local source artifacts with -PeverframeNativeVersion=0.10.0-DEV and iOS against the local source package with EVERFRAME_SDK_IOS_ROOT=/absolute/path/to/packages/sdk-ios. Android release builds need the INTERNET permission in the host manifest.