5 min read

Kotlin Multiplatform Newsletter #19

We unpack the massive announcements from KotlinConf '26, including the latest shifts in language design, tooling, and AI-driven workflows, alongside a brand-new Security Support Policy for the Kotlin Standard Library. We dive into complex multiplatform setups, featuring cross-platform 3D physics simulations using SceneView, the engineering behind building a multiplatform tone generator, and setting up bulletproof CI/CD with GitHub Actions. Plus, we review how to use Kotlin 2.3's experimental Return Value Checker and detail a KMP engineer position currently open at Cantina.

The Log

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

KotlinConf’26 Keynote Highlights: Advances in Language Design, Tooling, AI-Driven Workflows, and Multiplatform Development

At KotlinConf’26, the JetBrains team and industry partners shared how Kotlin continues to evolve for developers at every scale. The keynote highlighted advances in language design, tooling, AI-driven workflows, and multiplatform development – all aimed at improving the Kotlin development experience for building modern applications everywhere.
Introducing a Security Support Policy for the Kotlin Standard Library

As more code depends on Kotlin, the language becomes more useful – and more constrained. People building on it expect that what they wrote yesterday will keep working tomorrow, that changes will be predictable, and that the team behind Kotlin will treat compatibility as a deliberate choice rather than an afterthought.

The Main Thread

Community's most insightful threads, curated from social media platforms and websites.

Gotta use that returned value?

Kotlin 2.3 brought an experimental feature that you might have missed - the Return Value Checker.
Built for Productivity: What the Data Finally Shows About Kotlin

Developers describe working in Kotlin in a fairly consistent way: more time spent on what you’re trying to build, less time on ceremony. There are fewer rituals to satisfy the compiler, and less boilerplate to write before getting to the part that matters. For years, the interesting question was whether that effect would also be visible at scale.

Expect Actual

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

Every Commit on the Clock: CI/CD for Kotlin Multiplatform with GitHub Actions

KMP gives you one codebase and two (or more) build targets. That’s the pitch. What the pitch leaves out is that Android and iOS builds have completely separate toolchains, separate runners, and separate failure modes.
Building a Cross-Platform 3D Physics Simulation for Android, iOS, and Web with Kotlin Compose Multiplatform and SceneView

TwoLinks is a real-time 3D physics simulation of a chaotic double pendulum swinging freely under gravity. The setup sounds simple, and yet the resulting motion is completely unpredictable. Shift the length of one link by a centimeter, or move the pivot point a few millimeters, and the long-term trajectory diverges entirely from what it was before. That extreme sensitivity to initial conditions is the hallmark of chaos theory, and the double pendulum is one of its most famous physical demonstrations.
The Pit Crew: Advanced Ktor Client Configuration for KMP

I’ve been using Ktor as the HTTP layer in my KMP projects for a while now, and the moment things clicked for me was when I stopped thinking of it as “a way to make HTTP requests” and started thinking of it as a pluggable pipeline. Every request passes through a crew of plugins before it goes out, and every response passes back through them before your code sees it.
Building a Tone Generator in Compose Multiplatform

A tone generator is one of those projects that looks simple until the code has to make sound on more than one platform. The math is compact: advance a phase accumulator, call sin(), scale the result, and write the sample somewhere. The platform mechanics are less compact. Android wants AudioTrack. iOS wants AVAudioEngine and an AVAudioSourceNode. JVM desktop can use Java Sound's SourceDataLine. Each output path has different buffer types, threading expectations, lifecycle details, and failure modes.

LazyColumn

Compose Multiplatform tips, tricks, and code snippets.

Building a Custom Theme System for Compose Multiplatform

In 16 years of Android development and several years now with Compose Multiplatform across client projects, the question I hear most often is: “how much do you have to rewrite?” For a well-structured Compose codebase, the honest answer is: almost nothing.

The Dependency Graph

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

  • epub4kmp
    A Kotlin Multiplatform library for reading, writing, and manipulating EPUB files.
  • PdfKmp
    PdfKmp lets you build PDF documents from a Compose-style DSL that runs identically on Android and iOS. 
  • kotlin-csv
    Pure Kotlin Multiplatform CSV reader and writer.
  • Kostra
    A library trying to help with resources in KMP project, currently supported platforms are JVMAndroidiOS, and experimentally Native.

Target: Production

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

🌍 World Traveller: Travel Diary (Play Store | App Store)

We all love traveling, but some of you do it more than others. World Traveller lets you keep track of all the countries and cities you have visited. This online scratch map is what you were looking for!
🚘 Driviko: Mileage Tracker & OBD (Play Store | App Store)

Driviko is a smart mileage tracker, trip log, and driving logbook app that automatically records your drives using GPS and OBD-II data.

Author's Reddit thread explaining their experience developing the KMP app.

Careers

Kotlin Multiplatform job postings and opportunities.

Kotlin Multiplatform Engineer at Cantina

As a Kotlin Multiplatform Engineer at Cantina, you’ll be the architect of our shared-code strategy — building the foundation that powers our experiences across Android, iOS, and web from a single Kotlin codebase. You’ll work at the cutting edge of the KMP ecosystem, shipping production code to real users on multiple platforms, while keeping platform-specific layers feeling truly native.

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