Kotlin Multiplatform Newsletter #26
We explore how Kraken Technologies slashed their average Gradle build times by 70% using the Dependency Analysis Gradle Plugin, and dive into the undocumented compiler rules of advanced expect/actual declarations. We also break down the performance tax of BoxWithConstraints by digging into Compose's SubcomposeLayout API, outline migrating multimodule projects to Koin Annotations, and highlight a Senior Mobile KMP position at Accesa.
The Main Thread
Community's most insightful threads, curated from social media platforms and websites.
Bringing Kodee to life wasn’t just a design challenge; it was a deeply collaborative effort by the Kotlin Marketing team, together with the Design and Strategic Research teams at JetBrains. The project’s goal was to create a mascot that truly resonated with the developer community.
I really think a language should be simple and powerful, not bloated with endless concepts. Anyone else intentionally keep their Kotlin simple just to stay sane? Or am I missing something?
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.
That is
expect/actual, and it is the closest thing KMP has to a signature move. You declare the position once in commonMain. Each platform fields its own player. The trivial version, an expect fun with a one-line actual on each side, gets shown in every intro tutorial and it is genuinely easy. This article is about what happens after that, when you start declaring classes, constructors, and typealiases, and the compiler starts enforcing rules that the tutorials never mention.What
.kts files actually are, why Gradle’s dependencies { } is just a function call, and how to build a working HTML DSL from scratchToday we’re diving into how to use the Koin Compiler in a Compose Multiplatform multi-module project. In the previous article, we explored how to migrate a multimodule setup to Koin Annotations, using a convention Gradle plugin to move forward in small, safe steps. We’ll follow that same approach diving deep into a project called MovieDB-App.
Kraken Technologies, which maintains a Kotlin Multiplatform (KMP) project of roughly 600 modules, was recently able to cut its average build time from about 6 minutes to about 1 minute and 50 seconds, or ~70%. They also report that sync times improved from roughly 5 minutes to roughly 45 seconds, or ~85%.
LazyColumn
Compose Multiplatform tips, tricks, and code snippets.
In the first two articles I built 3D chess twice — once with a Compose Multiplatform shell, once with React Native. In both cases, the game logic was in shared Kotlin, and platform-specific 3D renderers displayed the state. This article is about a project that inverts that architecture — and about why the inversion is correct.
Blur is a single effect with a single knob, a radius, and for a long time that was the whole library. Mirage is where that changes. It is the first step in Cloudy growing past “the blur library” into a general graphics effect toolkit — a way to run authored GPU shader effects, not just a fixed blur, over the content and backdrops in your Compose UI.
Hey Composers 👋, if you’ve built a complex UI in Jetpack Compose, you’ve probably reached for
BoxWithConstraints. And by doing so, you’ve probably paid a performance tax you didn’t fully understand.The Dependency Graph
Curated libraries, tools and plugins that won't break your Gradle build.
- Cloudy
Kotlin Multiplatform blur and liquid glass effect library for Compose, with GPU-accelerated rendering and CPU fallback for older devices. - kUML
Architecture that compiles. Kotlin DSL for UML 2.x, SysML 2 and C4 diagrams-as-code — CLI, Compose Desktop, IntelliJ & Obsidian plugins, Asciidoctor extension on Maven Central, ELK layout, reverse engineering (Java/Kotlin), XMI import/export, plugin SPI. Apache-2.0. - KMP Biometric Auth
KMP biometric authentication library with hardware-backed crypto. Keystore-bound AES/GCM on Android, Keychain with biometryCurrentSet on iOS. - Compose Multiplatform Preferences
A lightweight, developer-friendly Key-Value Storage library for Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP) projects. - Documents
Typed, reactive documents on top of MMKV — a Kotlin Multiplatform storage library for Android & iOS. - Compose Media Player
Compose Media Player is a video player library designed for Compose Multiplatform, supporting multiple platforms including Android, macOS, Windows, Linux, iOS and Compose Web.
Target: Production
Showcase of real-world apps proving KMP is ready for prime time.
Carrd • Simple, free, fully responsive one-page sites for pretty much anything.
Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free!

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.
We are looking for a Senior Kotlin Developer who is experienced in Kotlin Multiplatform delivery, comfortable owning complex shared modules in a layered architecture, and motivated by the challenge of building the reliable, platform-agnostic foundation that modern retail operations depend on.
🚀 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

