Skip to content
Everframe Docs
Documentation

Configuration

Mask Flutter pixels before capture and explicitly pass the Dart context you want in a report.

Updated

EverframeNativeBridge.start accepts the dashboard integration appId, sdkKey, and an environment of production, staging, or development. The published native SDK selects its ingest endpoint; the app does not pass an endpoint URL. Production is the default environment.

Dart errors are not captured automatically; report them with captureException. The native SDK underneath reports crashes on its own. On Android that covers Java and Kotlin exceptions, plus native crashes and ANRs on Android 11 and later (see Android crash reporting). On iOS it covers native crashes (see iOS crash reporting). Pass crash: false to start to turn native crash capture and captureException off.

On web, use EverframeWebBridge.start(sdkKey: ..., appVersion: ...) after installing EverframeWebCapture. The browser host initializes the Web SDK with the same Flutter integration key.

Screenshots and replay

Put a RepaintBoundary around the Flutter content you intend to report. Register every private widget with EverframeSensitive and pass its registry to openReporter. A failed geometry check or screenshot capture stops that screenshot. Native platform views outside the Flutter boundary are not included.

For optional image replay, use SafeReplayRecorder with captureRegisteredFrameAfterFrame to sample already masked frames. Freeze its SafeReplayBuffer before passing it to openReporter. The buffer is bounded, held in memory, and attached only when replay is enabled for the app. The Android and iOS source probes show the full capture wiring.

On web, EverframeWebCapture samples the same masked RepaintBoundary and supplies PNG frames and bounded image replay to the Web SDK. A capture with no registered sensitive widgets is rejected unless the host explicitly sets allowUnmarked for a known-safe screen. The browser reporter handles delivery and retry. No DOM screenshot fallback or screen-recording permission is used.

Quick capture

Quick capture files a draft report from a debug iOS Simulator or Android emulator with one gesture. In a Flutter app it is opt-in, because the native screenshot cannot see inside the Flutter boundary and would be unmasked. Until you call enableQuickCapture, a quick capture is ignored and nothing is sent. Pass quickCapture: false to start to opt out of the native feature entirely.

await everframe.enableQuickCapture(
  boundaryKey: boundaryKey,
  sensitiveRegions: sensitiveRegions,
  replayBuffer: replayBuffer, // optional
);

The key, registry and optional replay buffer are the same ones you pass to openReporter. The capture is a masked PNG of the registered boundary, plus the masked replay if you pass a buffer. Call disableQuickCapture() to turn it off again. To trigger and set it up, see iOS and Android, including npx @everframe/cli capture and npx @everframe/cli login. Once enabled, press Shift+B in the simulator or emulator (ignored while a text field has focus).

Real phones can quick capture too, once linked to you or your team under Project settings → Devices, with the same opt-in. See Quick capture on real devices.

Dart context

CallWhat it records
recordScreen(name)An explicit Flutter screen transition
captureException(error, stackTrace: stack)A handled Dart error stored in the native outbox; the boolean result confirms local storage, not delivery
recordNetwork(method: ..., url: ..., statusCode: ...)An explicit breadcrumb with method, URL origin, status, and optional duration

The plugin does not automatically intercept Dart errors, console output, or HTTP traffic. Network paths, queries, credentials, headers, and bodies do not cross this bridge. Android and iOS simulator samples sent masked reports and replay to a local dashboard; physical-device behavior, production delivery, and offline retry after process restart have not been verified.