Skip to main content
Version: 4.2

Gradle Setup

This guide covers how to add Koin dependencies to your Gradle project.

The Bill of Materials (BOM) is the recommended way to manage Koin dependencies. It ensures all Koin libraries use compatible versions.

info

Best Practice: Always use the Koin BOM to avoid version conflicts between Koin libraries.

In your gradle/libs.versions.toml:

[versions]
koin-bom = "4.2.0"

[libraries]
koin-bom = { module = "io.insert-koin:koin-bom", version.ref = "koin-bom" }
koin-core = { module = "io.insert-koin:koin-core" }
koin-android = { module = "io.insert-koin:koin-android" }
koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose" }
koin-compose = { module = "io.insert-koin:koin-compose" }
koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel" }
koin-ktor = { module = "io.insert-koin:koin-ktor" }
koin-test = { module = "io.insert-koin:koin-test" }

In your build.gradle.kts:

dependencies {
implementation(platform(libs.koin.bom))
implementation(libs.koin.android) // No version needed
}

Using BOM Directly

dependencies {
implementation(platform("io.insert-koin:koin-bom:$koin_version"))

// Add dependencies without versions
implementation("io.insert-koin:koin-android")
implementation("io.insert-koin:koin-androidx-compose")
}

Platform-Specific Setup

Kotlin/JVM

For pure Kotlin applications:

dependencies {
implementation(platform("io.insert-koin:koin-bom:$koin_version"))
implementation("io.insert-koin:koin-core")
}

Start Koin in your application:

fun main() {
startKoin {
modules(appModule)
}
}

Testing dependencies:

dependencies {
testImplementation("io.insert-koin:koin-test")
testImplementation("io.insert-koin:koin-test-junit5") // or junit4
}

Android

For Android applications:

dependencies {
implementation(platform("io.insert-koin:koin-bom:$koin_version"))
implementation("io.insert-koin:koin-android")
}

Start Koin in your Application class:

class MainApplication : Application() {
override fun onCreate() {
super.onCreate()

startKoin {
androidLogger()
androidContext(this@MainApplication)
modules(appModule)
}
}
}

Optional Android packages:

dependencies {
// Jetpack WorkManager
implementation("io.insert-koin:koin-androidx-workmanager")

// Navigation Graph
implementation("io.insert-koin:koin-androidx-navigation")

// AndroidX Startup
implementation("io.insert-koin:koin-androidx-startup")

// Java Compatibility
implementation("io.insert-koin:koin-android-compat")
}

Jetpack Compose (Android)

For Android apps using Jetpack Compose:

dependencies {
implementation(platform("io.insert-koin:koin-bom:$koin_version"))
implementation("io.insert-koin:koin-androidx-compose")
implementation("io.insert-koin:koin-androidx-compose-navigation")
}

Compose Multiplatform

For Compose Multiplatform (Android, iOS, Desktop, Web):

dependencies {
implementation(platform("io.insert-koin:koin-bom:$koin_version"))
implementation("io.insert-koin:koin-compose")
implementation("io.insert-koin:koin-compose-viewmodel")
implementation("io.insert-koin:koin-compose-viewmodel-navigation")
}

Navigation 3 (Experimental):

dependencies {
implementation("io.insert-koin:koin-compose-navigation3")
}
warning

Navigation 3 is in alpha. See Navigation 3 Integration for details.

Kotlin Multiplatform

In your shared module's build.gradle.kts:

kotlin {
sourceSets {
commonMain.dependencies {
implementation(platform("io.insert-koin:koin-bom:$koin_version"))
implementation("io.insert-koin:koin-core")
}

commonTest.dependencies {
implementation("io.insert-koin:koin-test")
}

androidMain.dependencies {
implementation("io.insert-koin:koin-android")
}
}
}

Ktor

For Ktor server applications:

dependencies {
implementation(platform("io.insert-koin:koin-bom:$koin_version"))
implementation("io.insert-koin:koin-ktor")
implementation("io.insert-koin:koin-logger-slf4j")
}

Install Koin in your Ktor application:

fun Application.module() {
install(Koin) {
slf4jLogger()
modules(appModule)
}
}

All Available Packages

PackageDescription
koin-coreCore Koin library
koin-core-coroutinesCoroutines support
koin-androidAndroid support
koin-android-compatJava compatibility for Android
koin-androidx-navigationNavigation Component support
koin-androidx-workmanagerWorkManager support
koin-androidx-startupAndroidX Startup support
koin-androidx-composeJetpack Compose (Android)
koin-androidx-compose-navigationCompose Navigation (Android)
koin-composeCompose Multiplatform
koin-compose-viewmodelViewModel for Compose MP
koin-compose-viewmodel-navigationNavigation + ViewModel for Compose MP
koin-compose-navigation3Navigation 3 (experimental)
koin-ktorKtor server support
koin-logger-slf4jSLF4J logging
koin-testTesting utilities
koin-test-junit4JUnit 4 support
koin-test-junit5JUnit 5 support
koin-android-testAndroid instrumented testing

Direct Version Specification

If you prefer not to use the BOM:

dependencies {
implementation("io.insert-koin:koin-core:$koin_version")
implementation("io.insert-koin:koin-android:$koin_version")
}
note

This approach requires manually keeping all dependencies synchronized. Using the BOM is strongly recommended.

Next Steps