5 min read

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.

Kotlin Toolchain 0.11: The Next Step for Amper

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.

Are you waiting for a Kotlin feature that hasn't been implemented yet?

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.
Current state of design systems and UI libraries

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.

Safety Car: Coroutine Exception Handling in KMP

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.
How We Made Ktor JSON Parsing 66% Faster with 50% Less Memory on KMP

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.
Kotlin tricks: Non-exhaustive enums

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.

DrawBox Goes Multiplatform

Why I rewrote my Android-only drawing library for Kotlin Multiplatform, and the part of the rewrite that actually hurt.
Setting up Compose Multiplatform previews

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.

ClashAlly - Apps on Google Play
Your Ultimate Clash Companion — track clans, players, and wars like a pro

Web version available here.

SoccerRPG

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.

Software Engineer (with KMP) at Zwift

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.

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