// the find
InsertKoinIO/koin
Koin - a pragmatic lightweight dependency injection framework for Kotlin & Kotlin Multiplatform
Koin is a DI framework for Kotlin and Kotlin Multiplatform that trades compile-time safety (Dagger/Hilt's strength) for a simpler DSL. It's been around long enough to be battle-tested on Android, and the recent compiler plugin finally closes the runtime crash gap that was always its main knock.
The compiler plugin is the real story here — dependency graph verification at compile time without annotation processors means you get Hilt-level safety with a fraction of the boilerplate. KMP support is genuine, not an afterthought: separate integration modules for Compose, Ktor, and Android cover the full stack. The DSL is genuinely readable; a module definition fits on a screen and a new developer can understand it without reading a book. Scope handling for Android (Activity/Fragment/ViewModel lifecycle) is well thought out and avoids the common mistake of leaking scoped objects.
The compiler plugin is in a separate repo and still maturing — adopting it means tracking two release cycles, and the migration from KSP annotations adds friction for existing projects. Performance at startup has historically been worse than Dagger on large graphs; the JVM benchmark in the repo shows numbers but doesn't compare against alternatives, so you're flying blind on whether this matters for your app. The Kotzilla platform (crash reporting, observability) is a commercial upsell built around Koin's internals, which means the open-source project's roadmap is partly shaped by what pays Kotzilla's bills — not necessarily a problem today, but worth watching. Testing support requires `koin-test` and the verify DSL, which is a second thing to learn and maintain separately from your main DI setup.