The KMP bridge shares start, user, screen, breadcrumb, handled-error, network-operation, and reporter calls. Android and Swift drivers use native Everframe SDKs; the Kotlin/JS browser driver uses the Web SDK.
Three steps
1Install in your shared module
implementation("dev.everframe:kmp:1.2.0") 2Start with a host driver
val driver = AndroidEverframeDriver(applicationContext, activity)
val everframe = EverframeKmp(driver)
everframe.start(EverframeKmpConfig(appId, sdkKey))
3Open the native reporter
everframe.openReporter { outcome ->
// outcome.status: submitted, queued, cancelled, or failed
} What it captures
Screenshot Native reporter screenshot on mobile; masked renderer canvas on web Mark sensitive content in each host before capture
Session replay Android masked image frames; iOS native video; web masked image replay Attached when enabled for the integration
Errors Explicit handled Kotlin failures Use captureException or a stable code with captureHandledError
Crash reports Uncaught Java and Kotlin crashes on Android, through the native SDK underneath on by default
Native crashes Native crashes and ANRs on Android 11 and later, and native crashes on iOS, through the native SDKs
Network Native metadata and explicit operation breadcrumbs No request or response bodies through the KMP bridge
Screens Explicit recordScreen calls
Sensitive content Native host markers or browser canvas rectangles Android and web capture fail closed without markers unless the host explicitly permits a safe screen
Device and app Native host metadata or browser metadata
What you wire yourself
- Create a Kotlin Multiplatform integration in the dashboard and pass its app ID and SDK key to EverframeKmpConfig.
- Connect the Android driver to the current Activity, add the Swift driver on iOS, or supply the Web SDK initializer and masked visual provider on web.
- Mark private content in the host UI and call openReporter from your own action.
Use the Maven Central module
for shared reporting logic in an Android, iOS, or web app. Android uses
AndroidEverframeDriver; iOS adds EverframeSwiftDriver.swift to the host
alongside the KMP framework and native Everframe SDK.
The bridge does not capture a Kotlin UI on its own. The host controls sensitive
markers, reporter triggers, and the Activity or Swift driver lifecycle. See
Install and Configuration for
the host setup and capture limits. For a full run in a Compose host, read
Kotlin Multiplatform bug reporting: one shared API, native capture.
On web, EverframeBrowserDriver uses the Web SDK for its reporter
and delivery. The browser host supplies masked renderer screenshots and replay.
Questions
Does it need screen-recording permission?
No. Its Android and iOS drivers use capture from the app's own UI through the native SDKs.
Does it replace the native Android and iOS SDKs?
No. KMP shares the app-facing Kotlin calls. The native SDK on each host captures evidence, presents the reporter, and sends reports.
Can the KMP bridge run in a browser?
Yes. Its Kotlin/JS target uses EverframeBrowserDriver with @everframe/web and a renderer-owned masked visual provider. Wasm is not a target.