Fetching contributors…
Cannot retrieve contributors at this time
322 lines (224 sloc) 12 KB


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 👉

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


Current Version

koin_version = '1.0.2'



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 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].


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


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