Kotlin 2.3 and the new Kotlin Toolchain: what changed for KMP developers
Kotlin 2.3 and 2.3.20 highlights, plus the KotlinConf 2026 news: the Kotlin Toolchain, ktfmt, Koog 1.0 and Swift export. What KMP developers should do now.

3 min read

If you build with Kotlin Multiplatform, 2026 has been a busy year. Kotlin 2.3 arrived in December, followed by 2.3.20 in March, and KotlinConf 2026 in Munich in May brought a few announcements that will change our day-to-day tooling.
Here's what actually matters for KMP developers, without the hype.
Kotlin 2.3.0: the highlights
Kotlin 2.3.0 was released on 16 December 2025. The parts I care about most as a mobile developer:
An unused return value checker (experimental)
This one catches a classic bug: calling a function and ignoring its result.
fun saveUser(user: User): Result<Unit> { /* … */ }
saveUser(user) // ⚠️ the Result is silently ignored
val _ = saveUser(user) // ✅ you're saying "I know, ignore it on purpose"Turn it on with the compiler option -Xreturn-value-checker=check, and mark your own APIs with @MustUseReturnValues or @IgnorableReturnValue. For code that returns Result types a lot, this is a cheap safety net.
A new Android plugin for KMP libraries
Android targets in KMP libraries are now supported through Google's com.android.kotlin.multiplatform.library plugin, and the target is now simply called android instead of androidTarget. If you maintain a KMP library, plan this migration soon; it's where both Google and JetBrains are heading.
Other changes worth knowing
- Stable: nested type aliases, smarter
whenexhaustiveness, andkotlin.time.ClockandInstantin the standard library. - Swift export improved: Kotlin enums now map to native Swift enums.
- C and Objective-C library import is now in beta.
- The minimum Apple targets went up to iOS 14 and watchOS 7.
- Java 25 is supported on the JVM.
Kotlin 2.3.20: smaller, but useful
Released on 16 March 2026, 2.3.20 is mostly polish:
- Simpler Maven setup for JVM projects (handy for Ktor or Spring backends).
- An experimental new C/Objective-C interop mode for KMP, which the team wants people to test. JetBrains advises not publishing libraries built with it yet.
- Experimental name-based destructuring, which avoids bugs when you reorder data class properties.
- The Intel Apple targets (
macosX64,tvosX64andwatchosX64) are deprecated, with removal planned for Kotlin 2.4. If you still build for Intel Macs, take note.
KotlinConf 2026: the bigger picture
These are the announcements I'm watching most closely. Some are early (alpha or experimental), so check the latest status on JetBrains' blog before you depend on them.
- The Kotlin Toolchain (Alpha). One tool for creating, building, running, testing, formatting and documenting Kotlin projects. If it delivers, it could make starting a KMP project much simpler than wiring Gradle by hand. It's alpha, so I'd try it on side projects, not production.
- A standard formatter. The Kotlin Foundation is standardising on ktfmt, so we may finally stop arguing about formatting.
- Kotlin in VS Code. JetBrains shipped an alpha Kotlin language server with an official VS Code extension.
- Koog 1.0. JetBrains' framework for building AI agents in Kotlin reached a stable 1.0.
- KMP keeps growing. JetBrains reports that the number of top apps using KMP roughly doubled in a year.
- Compose Multiplatform is stable on Android, iOS and desktop, and in beta on the web.
- Swift export and SPM import for iOS are still early (alpha/experimental). For production apps today, tools like SKIE remain the safer choice.
- Kotlin 2.4 is on the way, with features like explicit backing fields and context parameters expected to become stable.
What I'd do as a KMP developer
- Upgrade to Kotlin 2.3.x if you haven't already. It's a smooth upgrade for most projects.
- Turn on the return value checker in one module and see what it finds.
- Move KMP libraries to the new Android plugin before it becomes mandatory.
- Check your Apple targets: drop Intel targets you no longer need, and confirm your minimum iOS version is 14 or higher.
- Try the Kotlin Toolchain on a side project, so you're ready when it's stable.
In my own KMP app, প্রশ্নব্যাংক, the shared core is exactly the kind of code these changes help: plain Kotlin logic used from both Jetpack Compose and SwiftUI. Every release makes that shared layer a little safer and a little easier to set up.
Kotlin's direction is clear: one language, one simpler toolchain, and native apps on every platform. 2026 is the year that started to feel real.
Keep reading
All posts
Compose Multiplatform for iOS is stable. Should you share your UI now?
Compose Multiplatform for iOS has been stable since May 2025. Here's when sharing UI between Android and iOS pays off, and when native SwiftUI still wins.
4 min read

Swift on Android vs Kotlin Multiplatform: which one should share your code?
Swift 6.3 brought an official Swift SDK for Android. How it compares with Kotlin Multiplatform, and how to choose which one shares your app's code.
3 min read

Building an Android alarm that actually rings: what HeyUtho taught me
I helped a friend ship HeyUtho, a math-challenge alarm. The math was easy. Making Android ring on time, every time, wasn't. Here's what I learned.
5 min read
Comments
No comments yet — start the conversation.