Crashlytics path (without rich bridge context)
Exception Type: EXC_CRASH (SIGABRT) ... konan::abort kotlin::ProcessUnhandledException Kotlin_ObjCExport_trapOnUndeclaredException
Unified crash reporting and analytics for Kotlin Multiplatform teams. Drop into commonMain, works on iOS and Android.
Crash reporting and analytics exist for Android or iOS — never for both. Two SDKs, two dashboards, stack traces that don't understand your shared code.
Side-by-side view of the setups teams actually use today: Crashlytics with bridge tooling, Sentry KMP, and Olvex.
| Category | Crashlytics + Kermit/NSExceptionKt | Sentry KMP | Olvex |
|---|---|---|---|
| Primary model | Firebase Crashlytics + bridge layer for Kotlin/Native crash context | Sentry SDK for KMP + symbol upload workflow | One SDK in commonMain |
| iOS KMP crash path | Works, but usually needs iOS hook setup for richer Kotlin crash details | Works through KMP APIs and native integrations | Built-in NSException path + native signal marker recovery |
| Stack trace readability | Good with bridge configured; baseline fatal reports can be noisy for Kotlin frames | Good when debug symbols are uploaded and release mapping is correct | Structured crash payload with topStackFrame and fingerprint metadata |
| Integration effort | Medium to high | Medium | Low to medium |
| Crash + analytics together | Not KMP-first in one workflow | Observability-focused stack | Unified crash + analytics dashboard |
Illustrative examples of how crash output usually looks in each approach.
Exception Type: EXC_CRASH (SIGABRT) ... konan::abort kotlin::ProcessUnhandledException Kotlin_ObjCExport_trapOnUndeclaredException
IllegalStateException: cache failed at kfun:feature.repo.CacheRepo.load(...) at kfun:feature.screen.HomeVm.refresh(...) ...
exceptionType: IllegalStateException message: Cache read failed stackTrace: kfun:feature.repo.CacheRepo.load(...) kfun:feature.screen.HomeVm.refresh(...) topStackFrame: kfun:feature.repo.CacheRepo.load(...) exceptionKind: throwable
Start free. Upgrade when you need to. Spend caps on all paid plans.