Skip to content

Why I Built Koin and Why It Still Matters Today

I didn’t set out to write just another library. I set out to improve the development experience.
Dependency injection on Android felt over-engineered and got in the way of delivering real value. I wanted a solution that was simple, intuitive, and made the most of Kotlin’s strengths. That’s how Koin came to life.

In this article, I’ll walk you through the inspiration behind Koin, how it grew with the community, where it stands today, and what’s next on the roadmap.

The inspiration behind Koin

The simple truth is that I wanted to eliminate the boring parts of development and make building apps feel like magic again. That was the spark behind Koin.

Back in 2017, I was deep into Android development and had been working with Kotlin for a while, mostly on Android, and had already started to notice the pain points Android developers faced with dependency injection (DI) tooling. I had started experimenting with Kotlin before its official 1.0 release. Even in those early days, the language already felt modern, with features like null safety, lambdas, and expressive collection APIs. But I waited for the stable version before bringing it into production, where I was working mostly on Android projects and some Spring-based backend development. Kotlin offered a lot, even if the compiler wasn’t yet as fast as Java’s.

Dagger2 was the dominant DI tool at the time, but from my perspective, it introduced too much complexity and slowed down development. Compilation times were long, the setup felt verbose, and onboarding new contributors wasn’t smooth. Other options like Toothpick and Kodein existed, but none of them fully embraced Kotlin’s strengths or offered the kind of developer experience I was looking for.

Coming from a Java backend background, I had always admired the Spring Framework—especially how Spring Boot made it easy to get up and running quickly, with smart defaults and powerful configuration. 

I wanted something like that for Kotlin on Android: lightweight, intuitive, and seamless to integrate. Something that would feel like an extension of the language itself.

For Koin, that was the goal: offering a super easy-to-read, learn, and write experience…I wanted to make DI feel so natural that you’d almost forget that you were using Koin.. The Koin Kotlin DSL was motivated to completely isolate the configuration of your application injection. All of this was inspired by what the Spring DI container was offering.

Integrating Kotlin features into the Android Development SDK, such as extension functions and reified types, completely unlocked the framework's potential to provide excellent DI support. It felt like the framework had been written by the Android team itself!.

The Koin magic became even stronger with the release of the now-famous by viewModel() delegate expression, which lets you create your ViewModels easily. The Android team later stabilized by viewModels (with an "s") in the official Android Lifecycle/ViewModel library, avoiding conflict with Koin's by viewModel.

The Community

The Koin community grew alongside the Kotlin developer community. They regularly provide feedback and new use cases, helping to improve feature coverage while also ensuring the developer experience stays true to Koin's core principle: keep it super simple.

Around 2017 and 2018, I was already speaking at conferences to advocate for Kotlin, giving talks and workshops. More and more, I could chat with people, testing the idea of Koin. Local networks, meetups, and conferences were the ideal places to talk about Kotlin and Koin. By 2018, Koin had gained real traction, and the community started growing quickly.. 

By 2018, Koin had gained real traction, and the community started growing quickly. They helped a lot in major phases of the project, from ViewModel to the first KMP integrations, Jetpack Compose, and Ktor for backend development. Now, we see lots of people going into Compose Multiplatform (CMP) development. This is where it encourages us to continue to help make CMP development super smooth.

Today, Koin is used globally, across industries and platforms—from media streaming apps to transport, banking, and more (Adidas, Santander, Tier, Decathlon, Canal+ …). In just five years, Koin’s adoption has exploded—from 5 million annual downloads in 2020 to over 14 million per month in 2025. Over that time, we’ve seen the framework being used to build large-scale applications by well-known brands across industries (video platforms, transport applications, banking, etc.). Many of these projects run with hundreds of Koin modules in production, proving that simplicity can scale.

IntelliJ tooling

IntelliJ and Android Studio are my daily go-to IDE tools. Even for Java development, they were already my choice for productivity. Once I started developing in Kotlin, that choice became even more obvious due to the quality of the tooling that supports you throughout your entire development flow. IntelliJ Ultimate's Spring framework integrations, as well as Android 

Android Studio’s Firebase and Dagger inspired us to develop the Koin Plugin at Kotzilla - the company I co-founded with my childhood friend. We created Kotzilla with the goal of building better tooling for Kotlin developers and, of course, formalizing support for Koin.

As IntelliJ is a great playground for developers, we are extending the capabilities of IntelliJ with a dedicated plugin for Koin developers to provide visual feedback in the source code, for Koin configuration, and real-time safety checks to help you know if you missed something in your configuration. We were also inspired by the code navigation that is so natural with all Kotlin features, so we proposed integrating it for Koin definitions & modules, allowing you to navigate from your source to your definitions.

The Plugin also allows users to help debug Kotlin apps and libraries via an SDK that connects to the Kotzilla Platform, with a graphical wizard for easy setup. App performance issues are detected directly within the Plugin, in addition to Koin configuration problems.

The new AI integrations in IntelliJ Editor are also inspiring us to explore even more ways to help simplify Kotlin and Koin development.

Roadmap and next developments

At Kotzilla, we now have a dedicated team focused on Koin, helping us grow the project sustainably and keep improving the developer experience.

One of our current focuses is to help as much as possible to stabilize the upgrade experience around Koin 3.5 (Kotlin 1.9), and to facilitate the upgrade to the next milestone, Koin 4.0 (Kotlin 2.0).

We are preparing Koin 4.1, currently focusing on the following topics:

  • Jetpack Compose & Compose Multiplatform development: Stabilizing global API experience and performance, and improving integration with Navigation (shared ViewModel instance).
  • Reinforcement in KMP support to further simplifying the setup for multiplatform or native configuration.
  • Delivery of a new set of Scope features to help reuse memory spaces called Scopes across different types of objects "archetypes". We offer generic scope handling for Activity, Fragment, and ViewModel.
  • We have integrated support for Ktor 3.2

We’re targeting a full Koin 4.1 release in the coming weeks, with Koin 4.1-RC1 already available for early adopters

We are also preparing content for the 4.2 release, focusing on better coroutines integration (define components that run on coroutines) and a Job Scheduler API. We are also looking at Kotlin RPC integration and continued improvements to the Koin DSL.

Some big things coming for Koin :) 

Arnaud.