KMP × Kotlin 2.3 ── How Android Got Slower While iOS Builds Improved by 47%

Hi there!
I’m RIO (@rioX432) from the AnotherBall Mobile Team.

I recently gave a talk at Mobile Study Group: Wantedly × teamLab × Sansan #24 about the build performance impact of upgrading Kotlin from 2.0.20 to 2.3.20 in our KMP project for the live streaming app Avvy.

Slides

Summary

We share domain logic across iOS and Android through our KMP module persona-domain-kmm (25 repositories, 33 UseCases). Before the upgrade, the XCFramework build for iOS averaged 14.3 minutes (max 28 min), and we were stuck on Kotlin 2.0.20 — blocking dependency updates and the path to AGP 9.

After upgrading to Kotlin 2.3.20 (along with Ktor 3.4, AGP 8.13, and Gradle 8.13), we measured the results across 87 GitHub Actions runs:

  • iOS: 47% faster — average build time dropped from 14.3 min to 7.7 min. The key factor was linkReleaseFramework, which sped up by 46% (7m38s → 4m07s) and accounts for ~90% of the total build.
  • Android: ~30s slower (+30%) — compileKotlin increased by 43%, caused by a K2 JVM regression (KT-81883, unresolved). Configuration phase also grew by 26s (+32%).

The iOS improvement far outweighs the Android trade-off. For KMP projects, Kotlin 2.3 is a must-have — and it positions you ahead of the upcoming AGP 9 migration.

Keeping Dependencies Fresh with Claude Code

One lesson from being stuck on Kotlin 2.0.20 is that falling behind on dependencies creates compounding problems. To prevent this, we built a custom Claude Code skill (/update-deps) that automates the dependency update workflow — from checking for new versions and researching changelogs, to applying updates, running build verification, and creating PRs with Kotlin compatibility checks. This lets us keep dependencies up to date with minimal friction.

We’re Hiring

At AnotherBall, we strive to develop in an environment with minimal technical debt — staying on top of dependency updates and keeping our codebase healthy. If that kind of mindset resonates with you, we’d love to talk!

AnotherBall Careers