Releases: InsertKoinIO/koin
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 - #2294 by @arnaudgiuliani
- KoinDependencyMapExtension implementing Ktor 3.2+'s DependencyMapExtension interface - 00496cc by @arnaudgiuliani
- New KoinKtorApplication DSL for explicit bridging configuration - 53cfc64 by @arnaudgiuliani
- SPI registration for automatic extension discovery
- Ktor 3.4 stable support - 3e5b44c by @arnaudgiuliani
Navigation 3 Support
- New koin-compose-navigation3 module for AndroidX Navigation3 1.0.0 - #2302 by @arnaudgiuliani
- EntryProvider API for scoped dependency injection in navigation destinations
- Metadata parameter passing support (animations, etc.) - 7fbab5e by @arnaudgiuliani
- Make nav3 EntryProvider generic - #2314 by @xephosbot
Compose Improvements
- koinActivityInject() function for Activity scope dependency retrieval - f946362 by @arnaudgiuliani
- UnboundKoinScope API with @KoinDelicateAPI annotation - f38a30f by @arnaudgiuliani
- Fixed premature release of scope & context in onForgotten - #2326 by @arnaudgiuliani
- Fixed Compose Koin Context Loader and Entry Points - #2327 by @arnaudgiuliani
- Navigation 2.x scope support (KoinNavigationScope) - #2309 by @arnaudgiuliani
- Compose context internals migration helpers - #2295 by @arnaudgiuliani
ViewModelScope Updates
⚠️ Breaking⚠️ : ViewModel declarations requiring scope injection must now be inside view...
4.2.0-beta4
Koin 4.2.0-beta4
New Features
Ktor 3.4 DI Bridge Integration (#2294)
- Added KoinDependencyMapExtension implementing Ktor 3.2+'s DependencyMapExtension interface (00496cc)
- 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 (53cfc64)
- SPI registration for automatic extension discovery
- New sample application demonstrating Koin + Ktor DI usage
Koin Plugin Support Improvements
- Adjusted KoinApplication.withConfiguration() API support (c4a5dcb)
- Enhanced ApplicationDSLExt with additional plugin/module DSL extensions
- Added Koin instance extension methods for better integration support
Bug Fixes
- Module flatten order error (#1999, #1998) - Fixed incorrect module flattening order that could cause dependency resolution issues
- Fixed Qualifier conversion in Ktor DI bridge (90edf60)
Dependencies
- Updated to Ktor 3.4.0-eap-1520 (75d4306)
Note: This release requires the Ktor EAP repository. Add the following to your settings.gradle.kts:
maven("https://maven.pkg.jetbrains.space/public/p/ktor/eap")
Full Changelog: 4.2.0-beta3...4.2.0-beta4
4.2.0-beta3
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.
// 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 - #2325 by @arnaudgiuliani in #2340
- Fix CoreResolverV2.kt to handle injected params first - #2337 by @arnaudgiuliani in #2341
- Fix WASM qualified name resolution - #2312 by @arnaudgiuliani in #2344
- Fix sharedKoinViewModel fails with type-safe navigation routes by @nazaburo in #2293
- Fix CoreResolverV2 stack params propagation by @arnaudgiuliani (9d6cf10)
- Fix worker/viewModel builder API - qualifier now properly passed to worker by @arnaudgiuliani (43ecac9)
- Fix Scope Archetypes Qualifier in plugin support functions by @arnaudgiuliani (f972c52)
- Fix scope resolution in plugin by @arnaudgiuliani (01cff0d)
- Revert appcompat transitive dependency removal - #2272 by @arnaudgiuliani (7bbf98c)
Features & Improvements
- Add koinActivityInject function - Helper to retrieve dependency against Activity scope by @arnaudgiuliani (f946362)
- Make nav3 EntryProvider generic by @xephosbot in #2314
- Improve Parameter Stack Threading - Optimize ThreadLocal loading to avoid cost per Scope - #2306 by @arnaudgiuliani in #2345
- Optimize Params stack access by @arnaudgiuliani (5ac0e8b)
- Archetype DSL duplication removal by @arnaudgiuliani (7dab332)
- Adjust check & error messages by @arnaudgiuliani (3acd78e)
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 (932c154)
- Moved koin-fu lib to Koin beta3 plugin by @arnaudgiuliani (a9daf9b)
- KDoc update for EntryProvider by @arnaudgiuliani (0539c48)
- Delete CHANGELOG.md by @jvanderwee in #2308
New Contributors
- @jvanderwee made their first contribution in #2308
- @xephosbot made their first contribution in #2314
- @nazaburo made their first contribution in #2293
Full Changelog: 4.2.0-beta2...4.2.0-beta3
4.2.0-beta2
What's Changed
- [koin-android] Remove transitive dependency for appcompat library by @egorikftp in #2273
- Safer ScopeFactory, protect all operations from parallel calls by @arnaudgiuliani in #2323
- Fix scope resolution issues by @arnaudgiuliani in #2324
- Fix premature release of scope & context by @arnaudgiuliani in #2326
- Fix Compose Koin Context Loader and Entry Points by @arnaudgiuliani in #2327
- Fix - Performance Optimization: Scope Resolution & Thread Safety by @arnaudgiuliani in #2330
Full Changelog: 4.2.0-alpha3...4.2.0-beta2
4.2.0-alpha3
What's Changed
- [Feat] navigation 2.x scope by @arnaudgiuliani in #2309
- [Maintenance] Cleanup of examples by @GrzegorzBobryk in #2213
- Fix nav3 metadata arguments by @arnaudgiuliani in #2313
Full Changelog: 4.2.0-alpha2...4.2.0-alpha3
4.2.0-alpha2
What's Changed
- [Fix] koin core coroutines loading in background by @arnaudgiuliani in #2303
- [Feat] Explicit definition override by @arnaudgiuliani in #2304
- [Fix] Fix crashing declarations for LocalKoinScope & LocalKoinApplication by @arnaudgiuliani in 261bf93
Full Changelog: 4.2.0-alpha1...4.2.0-alpha2
4.2.0-alpha1
What's Changed
- updated kotlin to 2.2.20 by @nhajratw in #2278
- Kotlin 2.2.20 - Koin library ecosystem update by @arnaudgiuliani in #2296
- [feat] Navigation3 integration by @arnaudgiuliani in #2302
- Compose/Internals context - help migration on ComposeContextWrapper by @arnaudgiuliani in #2295
New Contributors
Full Changelog: 4.1.1...4.2.0-alpha1
4.1.1
Koin 4.1.1 Changelog
🐛 Bug Fixes
- Logger Constraint Revert - Reverted logger constraint due to compatibility issues causing errors across projects
- Maven Central Publication - Fixed publication issues for Maven Central distribution
💥 Breaking Changes for Internal
- Compose Scope Resolution - Fixed scope resolution issues in Compose integration with proper context handling, introduced ComposeContextWrapper to help manage internal scope state
🚀 Features & Improvements
- Compose ViewModel Navigation - Added optional navGraphRoute parameter to sharedKoinViewModel for better navigation support
- Compose Context Handling - Reworked LocalKoinApplication/LocalKoinScope with ContextWrapper to properly handle:
- Scope closing lifecycle
- Context restart scenarios
- Better memory management
⚡ Performance & Core
- Core Resolver Optimization - Avoid unnecessary flattening operations when dealing with single scope resolution
- Scope Debugging - Enhanced scope debugging by showing linked scope IDs for better development experience
- Library Updates - Updated underlying dependencies to latest stable versions
📚 Library Updates
- Kotlin - Updated to 2.1.21 (from 2.1.20)
- Binary Validator - Updated to 0.18.1 (from 0.16.3)
- Ktor - Updated to 3.2.3 (from 3.1.3)
- Jetbrains Compose - Updated to 1.8.2 (from 1.8.0)
- AndroidX Libraries:
- Fragment 1.8.9 (from 1.8.8)
- WorkManager 2.10.3 (from 2.10.1)
- Lifecycle 2.9.3 (from 2.9.0)
- Navigation 2.9.3 (from 2.9.0)
- JB Navigation RC01 (from Beta01)
- Testing:
- Robolectric 4.15.1 (from 4.14.1)
- Benchmark 0.4.14 (from 0.4.13)
- Build Tools - Added NMCP 1.1.0 for improved publication workflow
📦 Publication
- Multi-platform Artifacts - Ensured all platform variants are properly published
- Version Consistency - Synchronized all module versions across the ecosystem
🔧 Development
- Test Coverage - Added ActivityScopeArchetypeTest for better scope lifecycle testing
- API Stability - Maintained backward compatibility while fixing internal issues
👥 Contributors
https://github.com/arnaudgiuliani - Project Lead & Core Developer
https://github.com/rfaturriza - Community Contributor
New Contributors
- @rfaturriza made their first contribution in #2262
Full Changelog: 4.1.0...4.1.1
4.1.0
What's Changed
- Add Ktor3 Package by @chrisjenx in #1978
- Ktor requestscope function dsl by @arnaudgiuliani in #2075
- KoinApplication Multiplatform Config - Logger + Androic context automatic injection by @arnaudgiuliani in #2086
- [Maintenance] Github actions migrations by @GrzegorzBobryk in #2109
- KoinMultiplatformApplication - Compose Application Start + Native Context binding by @arnaudgiuliani in #2114
- Fix koininject signature by @arnaudgiuliani in #2154
- Wasm use std UUID by @arnaudgiuliani in #2159
- Feat - scope archetypes for Activity, Fragment & ViewModel by @arnaudgiuliani in #2169
- Feat - Shared ViewModel in navigation by @arnaudgiuliani in #2170
- remove toolchain param + gradle 8.9 + remove unused deps by @arnaudgiuliani in #2172
- Update Compose Multiplatform to 1.8.0-rc01 by @zsmb13 in #2179
- check optional parameters during dependency verification by @luozejiaqun in #2105
- Feat - AutoCloseable usage for VM Scope closure + ViewModel Scope creation at VM Factory (ctor injection) + Options activation by @arnaudgiuliani in #2181
- Feat - New Compose Preview function to help local preview with parallel … by @arnaudgiuliani in #2182
- Continue Compose Multiplatform 1.8 version upgrade by @zsmb13 in #2183
- Migration to lifecycle 2.9 by @MatkovIvan in #2184
- [CI] Introduce reusable action for job initialization by @GrzegorzBobryk in #2110
- [Maintenance] removal of
@OptInand@Suppressby @GrzegorzBobryk in #1996 - Fix - 4.1.0 beta8 build by @arnaudgiuliani in #2185
- [Feat] Module Configuration + lazy modules verification (global configuration consistency) + Verification API updates by @arnaudgiuliani in #2188
- [Merge] koin-ktor3 to koin-ktor by @arnaudgiuliani in #2190
- Add missing minSdk config for koin-compose-viewmodel modules by @zsmb13 in #2192
- Fix lib setup for android manifest + withJava by @arnaudgiuliani in #2193
- [Feat] Ktor 3.2 DI extension for Koin (Ktor EAP) by @arnaudgiuliani in #2196
- [Feat] Make ktor usable in Multiplatform (Ktor EAP) by @arnaudgiuliani in #2197
- [merge] ktor 3.2 eap integrations by @arnaudgiuliani in #2198
- [Maintenance] Clean up in
AndroidManifest.xmlfiles by @GrzegorzBobryk in #2191 - Fix Compose rotation/Koin application setup & reattached Koin instance by @arnaudgiuliani in #2206
- Add koinActivityViewModel to help inject ViewModel for Activity by @arnaudgiuliani in #2207
- Fix #2092 by adding an explicit JVM target for bom by @arnaudgiuliani in #2208
- Fix override create at start by @arnaudgiuliani in #2211
- Fix typo by @samet404 in #2149
- Fix different typos in docs. by @zainulhassan815 in #2144
- Fix misspelling in android.md by @evansmj in #2137
- Update dsl.md by @BdN3504 in #2131
- Removed usages of old "compile" gradle dependency configuration in docs by @k4k7us23 in #2123
- Update scope.md by @AlexBeggs in #2102
- Update scope.md by @AlexBeggs in #2101
- Update scopes.md by @AlexBeggs in #2100
- fix break links in start-koin.md by @synix in #2057
- update
KoinExtensioninterface in doc by @synix in #2056 - [documentation] Fix link to junit5 extensions in testing.md by @Calfur in #1745
- Downgrade to Ktor 3.1 - Keep 3.2 for next patch by @arnaudgiuliani in #2224
- Feat - Extend Ktor DI support by @arnaudgiuliani in #2212
- fix workmananger initialization to avoid re-init + add android test by @arnaudgiuliani in #2226
New Contributors
- @chrisjenx made their first contribution in #1978
- @luozejiaqun made their first contribution in #2105
- @MatkovIvan made their first contribution in #2184
- @samet404 made their first contribution in #2149
- @zainulhassan815 made their first contribution in #2144
- @evansmj made their first contribution in #2137
- @BdN3504 made their first contribution in #2131
- @k4k7us23 made their first contribution in #2123
- @AlexBeggs made their first contribution in #2102
- @synix made their first contribution in #2057
- @Calfur made their first contribution in #1745
Full Changelog: 4.0.4...4.1.0
4.1.0-RC1
Ktor EAP
This version is using Ktor EAP
maven("https://maven.pkg.jetbrains.space/public/p/ktor/eap") {
mavenContent {
includeGroupAndSubgroups("io.ktor")
}
}What's Changed
- Add Ktor3 Package by @chrisjenx in #1978
- Ktor requestscope function dsl by @arnaudgiuliani in #2075
- KoinApplication Multiplatform Config - Logger + Androic context automatic injection by @arnaudgiuliani in #2086
- [Maintenance] Github actions migrations by @GrzegorzBobryk in #2109
- KoinMultiplatformApplication - Compose Application Start + Native Context binding by @arnaudgiuliani in #2114
- Fix koininject signature by @arnaudgiuliani in #2154
- Wasm use std UUID by @arnaudgiuliani in #2159
- Feat - scope archetypes for Activity, Fragment & ViewModel by @arnaudgiuliani in #2169
- Feat - Shared ViewModel in navigation by @arnaudgiuliani in #2170
- remove toolchain param + gradle 8.9 + remove unused deps by @arnaudgiuliani in #2172
- Update Compose Multiplatform to 1.8.0-rc01 by @zsmb13 in #2179
- check optional parameters during dependency verification by @luozejiaqun in #2105
- Feat - AutoCloseable usage for VM Scope closure + ViewModel Scope creation at VM Factory (ctor injection) + Options activation by @arnaudgiuliani in #2181
- Feat - New Compose Preview function to help local preview with parallel … by @arnaudgiuliani in #2182
- Continue Compose Multiplatform 1.8 version upgrade by @zsmb13 in #2183
- Migration to lifecycle 2.9 by @MatkovIvan in #2184
- [CI] Introduce reusable action for job initialization by @GrzegorzBobryk in #2110
- [Maintenance] removal of
@OptInand@Suppressby @GrzegorzBobryk in #1996 - Fix - 4.1.0 beta8 build by @arnaudgiuliani in #2185
- [Feat] Module Configuration + lazy modules verification (global configuration consistency) + Verification API updates by @arnaudgiuliani in #2188
- [Merge] koin-ktor3 to koin-ktor by @arnaudgiuliani in #2190
- Add missing minSdk config for koin-compose-viewmodel modules by @zsmb13 in #2192
- Fix lib setup for android manifest + withJava by @arnaudgiuliani in #2193
- [Feat] Ktor 3.2 DI extension for Koin (Ktor EAP) by @arnaudgiuliani in #2196
- [Feat] Make ktor usable in Multiplatform (Ktor EAP) by @arnaudgiuliani in #2197
- [merge] ktor 3.2 eap integrations by @arnaudgiuliani in #2198
- [Maintenance] Clean up in
AndroidManifest.xmlfiles by @GrzegorzBobryk in #2191
Added patches - [Fix] Fix CoreResolver linked scopes resolution by @arnaudgiuliani b83c572
- [Feat] Koin logger internal protection to avoid redeclaration by @arnaudgiuliani c0fea5a
New Contributors
- @chrisjenx made their first contribution in #1978
- @luozejiaqun made their first contribution in #2105
- @MatkovIvan made their first contribution in #2184
Full Changelog: 4.0.4...4.1.0-RC1