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.
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.
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.
Stop treating Kotlin like a black box! 🧠
To build truly performant multiplatform apps, writing code that just "works" isn't enough. We need to understand what the compiler is actually doing under the hood.
That’s why I highly recommend Practical Kotlin Deep Dive by skydoves. This isn't a basic syntax guide, it breaks down Kotlin internals, bytecode, and coroutines. It’s been a total game-changer for me when writing and optimizing shared code.
If you want to level up your Kotlin and KMP skills to a senior standard, you need this on your desk.
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.
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.
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.
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.
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.
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 fromFile → New Projectin 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.
wellfound • Where great companies meet great people.
The next company that changes the world, and the role that changes yours. Wellfound is where 27,000+ startups hire. Apply directly to the founders and hiring managers building what's next.




Careers
Kotlin Multiplatform job postings and opportunities.
hackajob • Meet Archer, your AI job matching agent
5x more interviews. Zero guesswork. Archer works 24/7 to match you with roles that fit your stack and seniority. You review the matches, not the job boards.
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.
🚀 Get Featured!
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



