---
title: "Kotlin 2.3 and the new Kotlin Toolchain: what changed for KMP developers"
description: "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."
author: "MH TOUFIK"
published: 2026-11-09T03:00:00.000Z
updated: 2026-11-05T17:31:11.000Z
url: https://toufik.dev/blog/kotlin-2-3-kotlin-toolchain-kmp-developers
category: "Cross-Platform"
tags: ["Compose Multiplatform", "Kotlin", "Kotlin Multiplatform", "KotlinConf"]
---

# Kotlin 2.3 and the new Kotlin Toolchain: what changed for KMP developers

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.

```kotlin
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 `when` exhaustiveness, and `kotlin.time.Clock` and `Instant` in 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`, `tvosX64` and `watchosX64`) 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

1. **Upgrade to Kotlin 2.3.x** if you haven't already. It's a smooth upgrade for most projects.
2. **Turn on the return value checker** in one module and see what it finds.
3. **Move KMP libraries to the new Android plugin** before it becomes mandatory.
4. **Check your Apple targets:** drop Intel targets you no longer need, and confirm your minimum iOS version is 14 or higher.
5. **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.

