7 min read

Kotlin Multiplatform Newsletter #38

The State of Kotlin in 2026 Report reveals Kotlin Multiplatform is now present in nearly 3% of top App Store apps, outpacing the growth rate of Flutter and React Native. Meanwhile, JetBrains announces the discontinuation of Swift language IDE support inside the KMP plugin. We also analyze iOS build time benchmarks (Swift vs KMP), architecting Free vs. Full product flavors in commonMain, running machine learning with KTensorFlow 2.0, and integrated FFmpeg video playback via KitePlayer. Plus, a remote Mobile Technical Lead opportunity at Accesa.

The Log

The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know.

The State of Kotlin in 2026 Report

In 2026, Kotlin turned fifteen. Over those fifteen years, Kotlin has built a mature ecosystem, been adopted by companies around the world, and established a large and active developer community.

Key KMP facts:
- Nearly 3% of the top 10,000 App Store apps by mid-2026 are using KMP, up from under 1% in early 2024. Growing faster than Flutter and React Native.
- KMP apps in the top 10,000 match Flutter apps in total App Store revenue.
- 31% of Kotlin developers work on multiplatform projects.
Discontinuing Swift Language IDE Support in the Kotlin Multiplatform Plugin

Starting with IntelliJ IDEA 2026.3 and Android Studio Rabbit 2 | 2026.2.2, we’re discontinuing Swift language IDE features in the Kotlin Multiplatform (KMP) plugin. This includes editing, syntax highlighting, and navigation within Swift files and between Swift and Kotlin.

Expect Actual

Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems.

The Companions to Come

We are working on extensions to our companions mechanism to unlock new code patterns and improve interoperability across different platforms. This post outlines these new features and provides preliminary guidance on migration.
Telemetry: Shared Analytics and Crash Reporting in Kotlin Multiplatform

In a modern endurance car, every sensor talks to the same box. Tyre pressure, brake temperature, fuel flow, throttle trace. They all end up in one data stream that goes to the pit wall over a single radio link. The engineer on the wall doesn’t care which supplier made the brake sensor. He cares that the channel is called BRAKE_TEMP_FL and that the number arrives every 100 milliseconds.

Swap a sensor, the channel name stays. That’s the whole point of the standard. Analytics and crash reporting in a KMP app should work the same way. The sensors are the SDKs, one per platform, made by different teams with different APIs. The channel names are yours.
How I Built Free and Full Build Flavors for Android in My KMP Codebase

This part is about how one codebase builds both versions: a free app with only the core features, and a full app with everything. I’ll cover product flavors, how the free app leaves the premium features out, and how the shared code works with either version without knowing which one it’s in.
Kotlin Multiplatform iOS build times: what's actually driving the cost

A recent article, The Hidden Cost Behind Kotlin Multiplatform on iOS, looked at what KMP does to the iOS edit/build/run feedback loop. It’s a good question to ask and the article also comes with a benchmark harness (kmp-ios-benchmark) that compares a Swift-only setup against an equivalent KMP one, using generated code across clean, incremental, public API change, multi-module and release builds. The headline numbers were that a single internal change rebuilt in 3.19s for Swift vs 10.36s for KMP, and that the gap grew with module size (KMP adding ~4.2x more time per 100 files than Swift).

LazyColumn

Compose Multiplatform tips, tricks, and code snippets.

Offline Support for Compose Multiplatform Web Apps

When a user runs an app in a browser, it’s reasonable to assume they have an internet connection. But if a user has installed a PWA app and its icon is available on the desktop, it’s reasonable to expect it to behave like a native app when there’s no internet connection.
How to create a Ribbon Modifier in Jetpack Compose

Building a ribbon using canvas functions that wraps around any composable in Jetpack Compose.
We define a path along a moving circle, split it into segments and draw using gradients

The Dependency Graph

Curated libraries, tools and plugins that won't break your Gradle build.

  • KMP Project Wizard
    KMP Project Wizard generates a Kotlin Multiplatform project straight from File → New Project in IntelliJ IDEA and Android Studio.
  • kmp-ads
    A Kotlin Multiplatform ads library for Android and iOS, with Compose Multiplatform ad slots and a Google AdMob provider.
  • Compose Web Navigator
    Compose Web Navigator is a library that provides navigation capabilities for Compose Multiplatform Wasm applications. It allows developers to easily manage navigation between different screens and handle browser history.
  • HumanReadable
    A small set of data formatting utilities for Kotlin Multiplatform (KMP).
  • Compose Text Editor
    Compose's missing Rich Text editor.
  • KTensorFlow 2.0
    KTensorFlow is a Kotlin Multiplatform library designed to run LiteRT (TensorFlow Lite) neural network models from common code.
  • Kinvoicing
    Kotlin Multiplatform invoicing library with a sealed IR, type-safe DSL builder, and four renderers (Compose, PDF, HTML, Email HTML).
  • Prosa.kt
    Declarative code generation for Kotlin. Define classes, functions, and expressions in pure Kotlin. Prosa.kt handles the imports, escaping, and formatting.
  • KitePlayer
    A media playback library for Kotlin Multiplatform apps. Its engine is written in Kotlin and plays video, audio and subtitles on Android, iOS, macOS, the desktop JVM and the web, with FFmpeg already inside the artifacts through KiteFFmpeg.

Target: Production

Showcase of real-world apps proving KMP is ready for prime time.

SubAtomic: Habit Tracker App - App Store
Download SubAtomic: Habit Tracker by sinasamaki on the App Store. See screenshots, ratings and reviews, user tips and more games like SubAtomic: Habit Tracker.
Leben in DE: Einbürgerungstest - Apps on Google Play
Master the Einbürgerungstest with official questions and realistic mock exams.
Cutaway — AI Video Editor
Cutaway is a mobile video editor with an AI agent that can assemble a first cut from your own footage — then hands you every frame of it to change by hand.
GitHub - yuroyami/syncplay-mobile: 📱 Syncplay Mobile (now Synkplay) is a Syncplay client app for Android and iOS. Watch stuff in sync with your friends. Compatible with the official Syncplay for PC. Fully written in Kotlin and Compose multiplatform.
📱 Syncplay Mobile (now Synkplay) is a Syncplay client app for Android and iOS. Watch stuff in sync with your friends. Compatible with the official Syncplay for PC. Fully written in Kotlin and Compo…

Careers

Kotlin Multiplatform job postings and opportunities.

Mobile Technical Lead with Kotlin Multiplatform at Accesa
Remote - Romania

The shared business logic layer is built with Kotlin Multiplatform (KMP), targeting both JVM/Desktop and Android clients. This layer is the heart of the platform: it owns the domain rules, use cases, and data flows for critical retail operations — item registration, checkout, payment, customer management, and promotion handling — while remaining fully decoupled from platform-specific concerns and UI.

Got something interesting to share with the Kotlin Multiplatform community? Submit your link for a chance to get featured in the next issue of commonMain.dev.

🤝 Support the Build

commonMain.dev is made possible by our partners. If you have a tool or service that helps KMP developers ship to production faster, we’d love to help you reach our community. Collaborate with us.

✍ Code Review

This newsletter is curated and written by a real human being. I’m always looking for ways to optimize the build. Was there something you liked or disliked in particular? Or did you find a bug in this issue? Simply reply to this email - I read every comment from the community and take your feedback into account for the next release.

Until next time,
Stay platform-independent!
Bogdan • Founder of commonMain.dev