What is KOIN?

Kotlin Kotlin Backers on Open Collective Sponsors on Open Collective

A pragmatic lightweight dependency injection framework for Kotlin developers.

Written in pure Kotlin, using functional resolution only: no proxy, no code generation, no reflection.

Koin is a DSL, a light container and a pragmatic API

Official Website 👉 https://insert-koin.io

Check the getting started section from our website, to discover Koin with the favorite platform.

Contact & Latest News 🌐

Getting Help 🚒

Any question about Koin usage?

Reporting issues 🛠

Found a bug or a problem on a specific feature? Open an issue on Github issues


Actual Version

koin_version = '1.0.0'



Check that you have the jcenter repository.

// Add Jcenter to your repositories if needed
repositories {


Choose your Koin dependency:

Core features

// Koin for Kotlin
implementation "org.koin:koin-core:$koin_version"
// Koin extended & experimental features
implementation "org.koin:koin-core-ext:$koin_version"
// Koin for Unit tests
testImplementation "org.koin:koin-test:$koin_version"
// Koin for Java developers
implementation "org.koin:koin-java:$koin_version"


// Koin for Android
implementation "org.koin:koin-android:$koin_version"
// Koin Android Scope feature
implementation "org.koin:koin-android-scope:$koin_version"
// Koin Android ViewModel feature
implementation "org.koin:koin-android-viewmodel:$koin_version"


// AndroidX (based on koin-android)
// Koin AndroidX Scope feature
implementation "org.koin:koin-androidx-scope:$koin_version"
// Koin AndroidX ViewModel feature
implementation "org.koin:koin-androidx-viewmodel:$koin_version"


// Koin for Spark Kotlin
implementation "org.koin:koin-spark:$koin_version"


// Koin for Ktor Kotlin
implementation "org.koin:koin-ktor:$koin_version"


Declare a Koin module

Write with the Koin DSL what you need to assemble:

// Given some classes 
class Controller(val service : BusinessService) 
class BusinessService() 

// just declare it 
val myModule = module { 
  single { Controller(get()) } 
  single { BusinessService() } 

Start Koin

Use the startKoin() function to start Koin in your application.

In a Kotlin app:

fun main(vararg args : String) { 
  // start Koin!

In an Android app:

class MyApplication : Application() {
  override fun onCreate(){
    // start Koin!
    startKoin(this, listOf(myModule))

Inject in Android

Easy to inject into your Android classes:

// Just inject in a simple Activity 
class MyActivity() : AppCompatActivity() {

    // lazy inject BusinessService into property
    val service : BusinessService by inject()

    override fun onCreate(savedInstanceState: Bundle?) {
        // or directly get any instance
        val service : BusinessService = get()

Inject by constructor

You’re now ready! The Koin DSL help you make injection by constructors. Now just use it:

// Controller & BusinessService are declared in a module
class Controller(val service : BusinessService){ 
  fun hello() {
     // service is ready to use

Koin can be easily embedded with your favorite Java/Kotlin SDK, and already provide some dedicated support module.

Ready for ViewModel

Want to use Android Architecture ViewModel? No problem, it’s already available and easy to use:

// Injected by constructor
class MyViewModel(val repo : MyRepository) : ViewModel(){
// declare ViewModel using the viewModel keyword
val myModule : Module = module {
  viewModel { MyViewModel(get()) }
  single { MyRepository() }
// Just get it
class MyActivity() : AppCompatActivity() {

  // lazy inject MyViewModel
  val vm : MyViewModel by viewModel()

Easy testing

Use koin from a simple JUnit class:

// Just tag your class with KoinTest to unlick your testing power
class SimpleTest : KoinTest { 
  // lazy inject BusinessService into property
  val service : BusinessService by inject()

  fun myTest() {
      // You can start your Koin configuration

      // or directly get any instance
      val service : BusinessService = get()

      // Don't forget to close it at the end

And more: check your configuration with a simple unit test, easily create mocks…


Articles & resouces about Koin

Talks & podcasts

Koin developers hub


This project exists thanks to all the people who contribute. [Contribute]. ekito by koin


Thank you to all our backers! 🙏 [Become a backer]

ekito by koin


Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

ekito by koin ekito by koin ekito by koin ekito by koin ekito by koin ekito by koin ekito by koin ekito by koin ekito by koin ekito by koin

compile "org.koin:koin-core:1.0.0"

Related Libraries


Last updated 3 mins ago


Last updated 3 mins ago


Last updated 3 mins ago


Last updated 3 mins ago


Last updated 3 mins ago