# Koin changelog > A pragmatic dependency injection framework for Kotlin. - Vendor: Kotzilla - Category: Frameworks & Libraries - Official site: https://insert-koin.io - Tracked by: What's New (https://whatsnew.fyi/product/koin) - Harvested from: GitHub (InsertKoinIO/koin) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### 4.2.2 — Koin 4.2.2 - Date: 2026-06-15 - Version: 4.2.2 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.2 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.2 - **fixed** — Stacked params no longer shadow qualified dependencies in resolver - **fixed** — Root factory no longer resolves its scoped dependencies from _root_ - **fixed** — viewModelScopeFactory scope is now linked to its parent - **fixed** — Tolerate non-String environment properties without ClassCastException - **fixed** — Unique Ktor request-scope ids under concurrency - **fixed** — Provide actionable errors for SavedStateHandle and viewModelScope without proper configuration - **added** — tvOS targets for koin-core-viewmodel (tvosArm64, tvosX64, tvosSimulatorArm64) - **added** — Consumer R8/ProGuard rules in Android and ViewModel artifacts with accompanying guide - **changed** — bind() and binds() now register secondary types in O(1) instead of quadratic time Maintenance release for the 4.2.x line — resolver regression fixes from the 4.2.0 `CoreResolverV2` rewrite, ViewModel/scope fixes, a Ktor request-scope fix, plus new tvOS support and an R8/ProGuard guide. > Anyone hitting resolver issues on 4.2.0/4.2.1 should upgrade to 4.2.2. ##### Bug Fixes - **Stacked params no longer shadow qualified dependencies** ([#2370](https://github.com/InsertKoinIO/koin/issues/2370), [#2408](https://github.com/InsertKoinIO/koin/issues/2408)) — A value passed via `parametersOf` could be returned for a `get(named(...))` request of the same type, shadowing the qualified definition. Qualified lookups are now registry-only and never read the parameter stack — parameters carry no qualifier, so they can't satisfy a qualified request. - **Root factory no longer resolves its scoped dependencies from `_root_`** ([#2379](https://github.com/InsertKoinIO/koin/issues/2379)) — When a non-single factory defined in the root scope was resolved from a child scope, `CoreResolverV2` resolved its scoped dependencies against `_root_` instead of the requesting scope. Linked-scope resolution now runs the factory against the requesting scope (single instances keep their root-bound semantics, preserving #2325). - **`viewModelScopeFactory` scope is linked to its parent** ([#2299](https://github.com/InsertKoinIO/koin/issues/2299)) — A ViewModel scope created via `viewModelScopeFactory()` was not linked to the originating scope, so dependencies declared in the parent couldn't be resolved. The created scope is now linked to its parent (except when the parent is root). - **Tolerate non-`String` environment properties** ([#2348](https://github.com/InsertKoinIO/koin/issues/2348)) — Loading environment/system properties whose values aren't `String` threw `ClassCastException` due to an unchecked map cast. Non-`String` values are now preserved as `Any` and only `String` keys are required. - **Unique Ktor request-scope ids under concurrency** ([#2410](https://github.com/InsertKoinIO/koin/issues/2410)) — Concurrent requests could collide on request-scope ids. Ids are now generated from a monotonic counter seeded once at startup. Thanks [@lfavreli-betclic](https://github.com/lfavreli-betclic)! - **Actionable errors for `SavedStateHandle` / `viewModelScope { }`** ([#2044](https://github.com/InsertKoinIO/koin/issues/2044), [#2417](https://github.com/InsertKoinIO/koin/issues/2417)) — Resolving `SavedStateHandle` without the proper extras, or using `viewModelScope { }` without the `viewModelScopeFactory()` option, now produces a clear, actionable error message instead of an opaque failure. ##### Added - **tvOS targets for `koin-core-viewmodel`** ([#2426](https://github.com/InsertKoinIO/koin/issues/2426)) — `koin-core-viewmodel` now publishes `tvosArm64`, `tvosX64`, and `tvosSimulatorArm64`, unblocking ViewModel usage on tvOS. - **Consumer R8/ProGuard rules + guide** — Android and ViewModel artifacts now ship consumer R8/ProGuard rules in their AARs, and a new [R8 / ProGuard guide](https://insert-koin.io/docs/reference/koin-android/r8-proguard) documents keep rules for minified builds. ##### Improvements - **O(1) secondary-type registration in `bind()` / `binds()`** — `bind`/`binds` now append secondary types in O(1) instead of reallocating the type list per binding, removing quadratic cost when a definition declares many bindings. No user-visible behavior change. ##### Documentation - **Navigation 3 typed `entryProvider`** ([#2336](https://github.com/InsertKoinIO/koin/issues/2336)) — Added guidance on using Koin with the typed `entryProvider` in the [Navigation 3 reference](https://insert-koin.io/docs/reference/koin-compose/navigation3). ##### Contributors Thanks to the following contributors for this release: - [@arnaudgiuliani](https://github.com/arnaudgiuliani) (Arnaud Giuliani) - [@lfavreli-betclic](https://github.com/lfavreli-betclic) (Loïc Favrelière) — unique Ktor request-scope ids _[Truncated at 4000 characters — full notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.2]_ ### 4.2.1 — Koin 4.2.1 - Date: 2026-04-10 - Version: 4.2.1 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.1 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.1 ##### Support for Compile Safety with Koin Compiler 1.0.0-RC1 - Koin Compiler Plugin 1.0.0-RC1 - https://github.com/InsertKoinIO/koin-compiler-plugin/releases/tag/1.0.0-RC1 ##### Bug Fixes - **Fix stacked-params lookup on linked scopes** ([#2387](https://github.com/InsertKoinIO/koin/issues/2387)) — The 4.2.0 resolver rewrite (`CoreResolverV2`) walked linked scopes but dropped the per-parent stacked-parameters check that 4.1.x performed via recursion. This broke patterns where `AndroidParametersHolder` is stacked on the factory scope by `KoinViewModelFactory` and `SavedStateHandle` is then resolved from a child ViewModel scope. Linked-scope resolution now also checks stacked params on each parent scope. - **Restore ABI compatibility for `runOnKoinStarted`** ([#2391](https://github.com/InsertKoinIO/koin/issues/2391)) — The 4.2.0 release inadvertently broke binary compatibility for `runOnKoinStarted` on JVM. Fixed by restoring the original JVM class name via `@JvmName`/`@JvmMultifileClass` annotations. - **Fix scope `_closed` concurrency issue** ([#2389](https://github.com/InsertKoinIO/koin/pull/2389)) — The `Scope._closed` flag was not volatile, which could cause stale reads under concurrent access. ##### Improvements - **Improved Scope resolution error messages** — `CoreResolverV2` now provides clearer error messages when scope resolution fails, making it easier to diagnose misconfigured scopes. - **Added `apiCheck` to CI** — Binary compatibility validation (`kotlinx.binary-compatibility-validator`) now runs on every PR to prevent future ABI breaks. ##### Documentation - **`parametersOf` type-collision warning** ([#2328](https://github.com/InsertKoinIO/koin/issues/2328)) — Added a caution note explaining that when a value passed via `parametersOf` has the same type as the requested definition, Koin returns the value directly and skips the factory block. Suggests using a wrapper type as a workaround. ##### Contributors Thanks to the following contributors for this release: - [@arnaudgiuliani](https://github.com/arnaudgiuliani) (Arnaud Giuliani) - [@inemtsev](https://github.com/inemtsev) (Ilya Nemtsev) — fix for scope closed concurrency issue ([#2389](https://github.com/InsertKoinIO/koin/pull/2389)) ### 4.2.1-RC1 — Koin 4.2.1-RC1 - Date: 2026-04-03 - Version: 4.2.1-RC1 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.1-RC1 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.1-rc1 - Labels: Pre-release ##### Koin 4.2.1-RC1 ###### Bug Fixes - **Fix ABI break on `runOnKoinStarted`** ([#2391](https://github.com/InsertKoinIO/koin/issues/2391)) — The 4.2.0 refactor to move `waitAllStartJobs` to common code changed the JVM symbol for `runOnKoinStarted` from `KoinWaitExtKt` to `KoinWaitExt_jvmKt`, causing `NoSuchMethodError` at runtime for libraries compiled against 4.1.x. Fixed by adding `@file:JvmName("KoinWaitExtKt")` and `@file:JvmMultifileClass` to restore the original symbol. - **Improved scope resolution error messages** ([#2379](https://github.com/InsertKoinIO/koin/issues/2379)) — `NoDefinitionFoundException` now displays the full scope chain that was searched and indicates which scope qualifier is missing a definition, making scope resolution issues much easier to diagnose. ###### CI / Tooling - **Added `apiCheck` to CI** — The binary-compatibility-validator plugin was already configured but not running on PRs. `apiCheck` is now part of the CI build workflow, preventing accidental ABI breaks in future releases. - **Updated `.api` dump files** for all modules to reflect the current public API surface. ###### Still in progress for 4.2.1 final - PR [#2389](https://github.com/InsertKoinIO/koin/pull/2389) — `@Volatile` on `Scope._closed` for concurrency fix - PR [#2358](https://github.com/InsertKoinIO/koin/pull/2358) — Fix `ClassCastException` reading environment properties ([#2348](https://github.com/InsertKoinIO/koin/issues/2348)) - Documentation updates: #2339, #2336, #2328, #2218 ### 4.2.0 - Date: 2026-03-17 - Version: 4.2.0 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.0 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.0 Kotlin 2.3.20 New Features - Ktor 3.4 DI Bridge — Full integration with Ktor's new DI system (ktor-server-di), bridging Ktor ↔ Koin dependency injection both ways - Dagger Bridge (koin-dagger-bridge) — New module to help inject Koin components from Dagger side - AndroidX Navigation 3 support — Entry point provider with metadata parameter passing (animations, etc.), generic EntryProvider, and navigation scopes - Navigation Scope for Compose Nav 2 — Added scoped navigation support for Compose Navigation 2 - Lazy Modules — Parallel loading at startup for improved performance, with benchmarks - strictOverride option — New definition option to override explicitly - koinActivityInject — Helper to retrieve dependencies against Activity scope - Koin Compiler Stubs — Added stubs for KoinApplication.modules() functions - KoinApplication.withConfiguration() — New configuration support Performance & Stability - Core Resolver V2 — Fixed parameter stack propagation, injected params handling, and child scope/ViewModel scope resolution - Scope Resolution & Thread Safety — Performance optimization with safer Scop _[Truncated at 4000 characters — full notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.0]_ ### 4.2.0-RC2 — Koin 4.2.0-RC2 - Date: 2026-03-12 - Version: 4.2.0-RC2 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.0-RC2 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.0-rc2 Second Release Candidate for Koin 4.2.0, upgrading to Kotlin 2.3.20-RC2 and updating dependencies. ## What's Changed ### Kotlin 2.3.20-RC2 Upgrade - Upgraded Kotlin from 2.3.20-Beta1 to **2.3.20-RC2** - #2377 by @arnaudgiuliani ### Koin Compiler Plugin: New `KoinApplication.modules()` Stubs - Added compiler plugin stubs for `KoinApplication.modules()` (reified single module) and `KoinApplication.modules(vararg KClass<*>)` (multiple modules) — enabling type-safe module loading via the Koin Annotations compiler plugin ### Koin Compiler Plugin 0.4.0 Support - Added compiler plugin stubs for `KoinApplication.modules()` (reified single module) and `KoinApplication.modules(vararg KClass<*>)` (multiple modules) — enabling type-safe module loading via the [Koin Compiler Plugin](https://github.com/InsertKoinIO/koin-compiler-plugin) ### Dependency Updates - Kotlin: 2.3.20-Beta1 → **2.3.20-RC2** - Compose Multiplatform: 1.10.0 → **1.10.2** - AndroidX Activity: 1.12.2 → **1.12.4** - AndroidX WorkManager: 2.11.0 → **2.11.1** - AndroidX Navigation: 2.9.6 → **2.9.7** - AndroidX Navigation3: 1.0.0 → **1.0.1** - JetBrains Navigation: 2.9.1 → **2.9.2** - Robolectric: 4.16 → **4.16.1** - Benchmark: 0.4.15 → **0.4.16** ## Full Changelog https://github.com/InsertKoinIO/koin/compare/4.2.0-RC1...4.2.0-RC2 ### 4.2.0-RC1 - Date: 2026-02-02 - Version: 4.2.0-RC1 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.0-RC1 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.0-rc1 Koin 4.2.0-RC1 This Release Candidate consolidates all features, improvements, and bug fixes from the alpha and beta series. The focus has been on Compose integration stability, scope resolution improvements, Ktor 3.4 DI Bridge, and compiler plugin support. ## Highlights ### Ktor 3.4 DI Bridge Integration - Bidirectional dependency resolution between Koin and Ktor DI - https://github.com/InsertKoinIO/koin/pull/2294 by @arnaudgiuliani - KoinDependencyMapExtension implementing Ktor 3.2+'s DependencyMapExtension interface - https://github.com/InsertKoinIO/koin/commit/00496cc by @arnaudgiuliani - New KoinKtorApplication DSL for explicit bridging configuration - https://github.com/InsertKoinIO/koin/commit/53cfc64 by @arnaudgiuliani - SPI registration for automatic extension discovery - Ktor 3.4 stable support - https://github.com/InsertKoinIO/koin/commit/3e5b44c by @arnaudgiuliani ### 4.2.0-beta4 - Date: 2026-01-21 - Version: 4.2.0-beta4 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.0-beta4 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.0-beta4 - Labels: Pre-release Koin 4.2.0-beta4 New Features Ktor 3.4 DI Bridge Integration (https://github.com/InsertKoinIO/koin/pull/2294) - Added KoinDependencyMapExtension implementing Ktor 3.2+'s DependencyMapExtension interface (https://github.com/InsertKoinIO/koin/commit/00496cc6bef9e322ae171ab4c7f337a8fb6cbb0b) - Bidirectional dependency resolution between Koin and Ktor DI: - Koin can resolve Ktor DI dependencies via KtorDIExtension - Ktor DI can resolve Koin dependencies via KoinDependencyMap - New KoinKtorApplication DSL for explicit bridging configuration options (https://github.com/InsertKoinIO/koin/commit/53cfc64ddb8621d2a74987e719a4c25e0b53c1ae) - SPI registration for automatic extension discovery - New sample application demonstrating Koin + Ktor DI usage ### 4.2.0-beta3 - Date: 2026-01-16 - Version: 4.2.0-beta3 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.0-beta3 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.0-beta3 - Labels: Pre-release 4.2.0-beta3 ## ⚠️ ViewModelScope Declaration Requirement Updated Experimental Feature: The automatic scope creation for ViewModel constructor injection now requires ViewModel declarations to be part of the viewModelScope section. If declared outside, injection will look in the root scope instead of the ViewModel scope, causing resolution failures. ```kotlin // Injection against root scope viewModel { MyViewModel(get()) } // Injection against viewModel scope viewModelScope { viewModel { MyViewModel(get()) } } ``` ## Koin Compiler Plugin Support API New Plugin Support API for Koin Annotations compiler plugin integration: - ModuleExt - Module extensions for plugin-generated code - CreateDSL - DSL for plugin code generation - BaseDSLExt - Base DSL extensions - ApplicationDSLExt - Application-level DSL extensions - ViewModelDSLExt / ViewModelModuleExt - ViewModel support for plugin - WorkerDSLExt / WorkerModuleExt - Android Worker support for plugin ## Bug Fixes - Fix CoreResolution with Child Scopes / ViewModelScope - https://github.com/InsertKoinIO/koin/issues/2325 by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2340 - Fix CoreResolverV2.kt to handle injected params first - https://github.com/InsertKoinIO/koin/issues/2337 by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2341 - Fix WASM qualified name resolution - https://github.com/InsertKoinIO/koin/issues/2312 by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2344 - Fix sharedKoinViewModel fails with type-safe navigation routes by @nazaburo in https://github.com/InsertKoinIO/koin/pull/2293 - Fix CoreResolverV2 stack params propagation by @arnaudgiuliani (9d6cf10e) - Fix worker/viewModel builder API - qualifier now properly passed to worker by @arnaudgiuliani (43ecac9c) - Fix Scope Archetypes Qualifier in plugin support functions by @arnaudgiuliani (f972c52c) - Fix scope resolution in plugin by @arnaudgiuliani (01cff0df) - Revert appcompat transitive dependency removal - https://github.com/InsertKoinIO/koin/issues/2272 by @arnaudgiuliani (7bbf98ce) ## Features & Improvements - Add koinActivityInject function - Helper to retrieve dependency against Activity scope by @arnaudgiuliani (f9463626) - Make nav3 EntryProvider generic by @xephosbot in https://github.com/InsertKoinIO/koin/pull/2314 - Improve Parameter Stack Threading - Optimize ThreadLocal loading to avoid cost per Scope - https://github.com/InsertKoinIO/koin/issues/2306 by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2345 - Optimize Params stack access by @arnaudgiuliani (5ac0e8bb) - Archetype DSL duplication removal by @arnaudgiuliani (7dab332a) - Adjust check & error messages by @arnaudgiuliani (3acd78e0) ## Libraries & Dependencies - Kotlin 2.3.20-Beta1 - Coroutines 1.10.2 - Compose Multiplatform 1.10.0 - AndroidX Lifecycle 2.10.0 / JetBrains Lifecycle 2.9.6 - AndroidX Navigation 2.9.6 / JetBrains Navigation 2.9.1 - AndroidX Navigation3 1.0.0 - Ktor 3.3.3 ## Other - Clean up koin-fu + koin-annotations beta3 plugin by @arnaudgiuliani (932c1540) - Moved koin-fu lib to Koin beta3 plugin by @arnaudgiuliani (a9daf9bf) - KDoc update for EntryProvider by @arnaudgiuliani (0539c48b) - Delete CHANGELOG.md by @jvanderwee in https://github.com/InsertKoinIO/koin/pull/2308 ## New Contributors - @jvanderwee made their first contribution in https://github.com/InsertKoinIO/koin/pull/2308 - @xephosbot made their first contribution in https://github.com/InsertKoinIO/koin/pull/2314 - @nazaburo made their first contribution in https://github.com/InsertKoinIO/koin/pull/2293 Full Changelog: https://github.com/InsertKoinIO/koin/compare/4.2.0-beta2...4.2.0-beta3 ### 4.2.0-beta2 - Date: 2025-12-09 - Version: 4.2.0-beta2 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.0-beta2 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.0-beta2 - Labels: Pre-release ##### What's Changed * [koin-android] Remove transitive dependency for appcompat library by @egorikftp in https://github.com/InsertKoinIO/koin/pull/2273 * Safer ScopeFactory, protect all operations from parallel calls by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2323 * Fix scope resolution issues by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2324 * Fix premature release of scope & context by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2326 * Fix Compose Koin Context Loader and Entry Points by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2327 * Fix - Performance Optimization: Scope Resolution & Thread Safety by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2330 **Full Changelog**: https://github.com/InsertKoinIO/koin/compare/4.2.0-alpha3...4.2.0-beta2 ### 4.2.0-alpha3 - Date: 2025-11-26 - Version: 4.2.0-alpha3 - Original notes: https://github.com/InsertKoinIO/koin/releases/tag/4.2.0-alpha3 - Permalink: https://whatsnew.fyi/product/koin/releases/4.2.0-alpha3 - Labels: Pre-release ##### What's Changed * [Feat] navigation 2.x scope by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2309 * [Maintenance] Cleanup of examples by @GrzegorzBobryk in https://github.com/InsertKoinIO/koin/pull/2213 * Fix nav3 metadata arguments by @arnaudgiuliani in https://github.com/InsertKoinIO/koin/pull/2313 **Full Changelog**: https://github.com/InsertKoinIO/koin/compare/4.2.0-alpha2...4.2.0-alpha3