Vinted's Android team shares their full migration from Dagger/Anvil to Metro, a modern Kotlin-first dependency injection framework. Forced by Anvil entering maintenance mode and K2 incompatibility, they chose Metro for its interoperability, Kotlin idioms support, and fast growth. The migration of a large codebase with hundreds of Gradle modules involved mass import replacements, custom KSP code generation to handle 100+ legacy Android Injector fragments, and navigating instability in Metro's 0.x versions. The result: CI build times improved by 6–25% depending on scenario, K2 and incremental compilation were unlocked, and developer confidence in DI increased significantly.

8m read timeFrom vinted.engineering
Post cover image
Table of contents
Era before MetroWhy MetroBumpy migrationThe resultsConclusion

Sort: