Create a Kotlin Multiplatform integration in the dashboard. Add the published Maven Central module to your shared module:
// commonMain dependencies in build.gradle.kts
implementation("dev.everframe:kmp:1.2.1")
On Android, connect the driver to the current Activity and start it with that integration’s app ID and SDK key:
val driver = AndroidEverframeDriver(applicationContext, activity)
val everframe = EverframeKmp(driver)
everframe.start(EverframeKmpConfig(appId, sdkKey))
// From your own report action:
everframe.openReporter { outcome ->
// Handle submitted, queued, cancelled, or failed.
}
Call driver.bindActivity(activity) when a replacement Activity resumes and
driver.bindActivity(null) when it stops. Mark private Android Compose content
with Modifier.txSensitive() before capture. The Android reporter requires an
Activity and fails closed if sensitive markers are missing, unless your app
explicitly allows a known-safe route.
On iOS, link native Everframe 1.2.1 and add
ios/EverframeSwiftDriver.swift from the KMP sources JAR to the host target
alongside the KMP framework. Construct EverframeKmp with this Swift driver;
it delegates to the native Swift SDK. Your iOS host packages both frameworks
and marks private UI content.
Android requires API 24+ and iOS requires iOS 15+. The default environment is
production; development and staging are also accepted. No screen-recording
permission is required. See Configuration for
screenshots, replay, and explicit Kotlin context.
Kotlin web targets
The dev.everframe:kmp module includes a Kotlin/JS browser target and
EverframeBrowserDriver. Browser hosts pass it @everframe/web’s init
function and a renderer-owned visual provider. For a canvas renderer,
createCanvasVisualCapture copies the canvas, blacks sensitive rectangles,
and supplies masked screenshots and bounded image replay. The Web SDK owns
the reporter UI, delivery, and retry. Use the same KMP integration key;
the browser report identifies itself as everframe-kmp on web.
The host must provide sensitive rectangle geometry; missing or invalid geometry rejects capture unless the host explicitly permits a known-safe screen. Browser builds require the production environment. This path passed a Chromium canvas report and replay probe; an installed Compose browser host has not yet been validated.
See also: a worked run in a Compose host, with the shared Kotlin calls and what each one sent.