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
| Call | What 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.