Kotlin Multiplatform Newsletter #24
We cover a major evolutionary step as Amper rebrands and graduates into the official Kotlin Toolchain (Alpha). We dive into critical performance and architectural wins, including a breakdown of how to make Ktor JSON parsing 66% faster, a robust guide to handling Coroutine exceptions before they crash your app, and a setup guide for the new native Compose Multiplatform previews. Plus, we look at the community debate over KMP design systems and highlight an exciting mobile role at Zwift.
The Log
The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know.
Amper 0.11.0 is out, and you will notice a shift in the product branding immediately. If you missed the KotlinConf keynote, here’s the headline: Amper has evolved into the Kotlin Toolchain and is now Alpha!
The Main Thread
Community's most insightful threads, curated from social media platforms and websites.
Is there a Kotlin language feature that you really want but that hasn't been implemented yet, or has even been rejected? Maybe it has a KEEP, or even not.
Now, what’s the current landscape of “middle-ground” UIs in KMP world? Is using compose/material as a foundation for your own design system the best way to do it?
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.
One
launch block throws, and if nothing contains it, the failure climbs the job hierarchy, cancels every sibling, and on a bad day takes the whole app down with it. The question isn’t whether a coroutine will throw. It’s what happens to everything around it when it does.If you are building Kotlin Multiplatform applications, you know that JSON serialization is often one of the main bottlenecks in high-throughput backends and mobile apps—especially regarding CPU cycles and Garbage Collector (GC) pressure.
Enums are an exhaustive set of values. But what if you suspect you may want to add new entries in the future?
LazyColumn
Compose Multiplatform tips, tricks, and code snippets.
Why I rewrote my Android-only drawing library for Kotlin Multiplatform, and the part of the rewrite that actually hurt.
Earlier this year, the new Kotlin Multiplatform IDE plugin was released, with one of the highlighted features being Compose previews for common code, powered by the Android preview tooling. In this blog post, we’ll look at how to set this up in your projects.
The Dependency Graph
Curated libraries, tools and plugins that won't break your Gradle build.
- kmp-targets
Gradle plugin for Kotlin Multiplatform that builds only the targets you select. The ones you skip never register, so their tasks never exist. - DrawBox
Kotlin Multiplatform drawing library with SVG export, undo/redo & shapes for Android, iOS, Web & Desktop. - RtfParserKmp
Idiomatic Kotlin Multiplatform RTF reader & writer — a port of RTFParserKit (Apache 2.0). Runs on JVM, Android, iOS, JS, WebAssembly, and Native. - Compose GLFW
This library provides a JVM Compose host that runs Compose UI in a GLFW window instead of the default AWT/Swing desktop host.
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!
Web version available here.
This is a tactical 5v5 football game inspired by the feeling of Blitzball: positioning, decision-making, team strategy, and creating plays that feel satisfying to execute. Built with Compose Multiplatform
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.
In this role, you will work on Zwift’s mobile app, Zwift Companion (ZC), delivering high-quality features and ensuring a seamless user experience. You will collaborate with cross-functional teams to deliver product features on iOS and Android apps that help Zwifters plan, track, and achieve their fitness goals. Additionally, you will contribute to defining and executing the technical strategy to achieve our team objectives - make it easy for Zwifters to plan and start their experiences in Zwift.
🚀 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
