> ## Content Index
> Fetch the complete content index at: https://commonmain.dev/llms.txt
> Use this file to discover other available public pages before exploring further.

# Kotlin Multiplatform Newsletter #34
- URL: https://commonmain.dev/kotlin-multiplatform-newsletter-34/
- Published: 2026-09-08T13:00:11.000Z
- Updated: 2026-09-08T13:00:11.000Z
- Author: Bogdan Codes
- Tags: Issues

**Kotlin 2.4.20** lands with coroutine stack trace recovery and auto-generated `Package.swift` files for SwiftPM, while **Kotlin Toolchain 0.12.0** brings multiplatform library publishing and CLI-driven Compose Hot Reload. We also unpack sharing `commonMain` ViewModels with SwiftUI via SKIE, porting Compose Multiplatform to tvOS, animating numeric state transitions, and generating type-safe multiplatform forms using **Formidable**. Plus, a remote Lead Mobile Engineer contract opportunity at HAULER HERO.

### **The Log**

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

[The Kotlin 2.4.20 release is out!](https://blog.jetbrains.com/kotlin/2026/09/kotlin-2-4-20-released/?ref=commonmain.dev)  
  
Here are the main highlights:  
\- ****Standard library**: Support for coroutine stack trace recovery, new functions for checking equality and uniqueness of collection elements, and new overloads for `kotlin.test` assertion functions.  
\- ****Kotlin/Native**: New Swift export features, improved incremental compilation, and automatically generated `Package.swift` files for SwiftPM dependencies.  
\- ****Kotlin/Wasm**: Changes to top-level `require()` calls in `@JsFun` declarations, improved companion object initialization order, and support for Wasmtime in the Kotlin Gradle plugin.  
\- ****Kotlin/JS**: A new DSL for browser testing, support for exporting suspend lambdas as async functions, and improved exportability of data classes.  
\- ****Gradle**: Support for Gradle 9.7.0 and improved reporting in the Problems API.  
\- ****Build tools API**: Support for new targets: Kotlin/JS, Kotlin/Wasm, and Kotlin metadata.  
\- ****Kotlin compiler**: The \`kotlinr\` runner command and a separate native image.

[Kotlin Toolchain 0.12: Multiplatform Library Publishing, Wasm Apps, and More](https://blog.jetbrains.com/kotlin/2026/09/kotlin-toolchain-0-12-multiplatform-library-publishing-wasm-apps-and-more/?ref=commonmain.dev)  
  
Kotlin Toolchain 0.12.0 is out. This release brings some long-awaited features: multiplatform libraries publication, a preview of Wasm application support, Compose Hot Reload from the command line, and more. 

### Expect Actual

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

affiliate link 

****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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.

[Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 

[From Android to iOS: Sharing a ViewModel in Kotlin Multiplatform with SKIE — Without Losing Your Mind](https://nsaveek.medium.com/from-android-to-ios-sharing-a-viewmodel-in-kmm-with-skie-without-losing-your-mind-6197d68c4b82?ref=commonmain.dev)  
  
You’ve moved your business logic into `commonMain`. Your API calls work. Your repository works. Your use cases work. Your MVI ViewModel works. Your `StateFlow` is happily emitting states. Then you open Xcode...

[My Journey Making Compose Multiplatform Work on tvOS, and What I Learned](https://dev.to/sajidalidev/my-journey-making-compose-multiplatform-work-on-tvos-and-what-i-learned-1mo3?ref=commonmain.dev)  
  
I am an Android and Android TV developer with about ten years of experience. For the last few years I have been leading a streaming app at Devolic that has to run on Android mobile, Android TV, desktop, iOS and tvOS. This series is about how that requirement ended with me maintaining a fork of Compose Multiplatform with tvOS support, and what I learned along the way.

[Compose Multiplatform Is a Business Decision, Not a Technical One](https://touchlab.co/compose-multiplatform-business-decision?ref=commonmain.dev)  
  
If you are weighing Flutter, maintaining two native UI codebases "for now", or assuming cross-platform means giving something up, read this before your next roadmap conversation.

[Two Racing Lines: Annotations and the DSL in NetFlow 0.7.0](https://www.kmpbits.com/posts/netflow-annotations-dsl?ref=commonmain.dev)  
  
I have been building NetFlow, my Kotlin Multiplatform networking library, since it was an Android-only thing called Communication. Version 0.6 I added a `transform` parameter. The compiler forces you to provide whenever your DTO and your domain model are different types. Forget it and the build fails. No runtime surprise, no half-mapped object reaching the UI. Then I started a new data layer in a side project, opened an empty file, and typed `@GET`. Into my own library. Which did not have annotations.

### LazyColumn

Compose Multiplatform tips, tricks, and code snippets.

[Animating between numbers in Jetpack Compose](https://joebirch.co/android/animating-between-numbers-in-jetpack-compose/?ref=commonmain.dev)  
  
While in a lot of cases, the implementation in apps will just cause these values to switch straight to the new value, there’s better ways for us to do this. Not only does this miss an opportunity to demonstrate the growth (or decline) between the values, but it also doesn’t look very polished. Instead, we can animate between the values.

### The Dependency Graph

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

- [**Formidable**](https://github.com/WassimBeltaief/Formidable?ref=commonmain.dev)  
Formidable generates type-safe form controllers from annotated Kotlin data classes. Define your form once — get state management, validation, and Compose integration on Android, iOS, and Web.
- [**Daemonitor**](https://github.com/cdsap/daemonitor?ref=commonmain.dev)  
Desktop Activity Monitor for your Gradle daemons — live process insight + build history with AI-agent attribution.
- [**KMP Swift Code Bundling**](https://github.com/frankois944/KmpSwiftCodeBundling?ref=commonmain.dev)  
Write Swift next to your Kotlin, get **one framework** with both inside.
- [**Compose tvOS**](https://github.com/sajidalidev/compose-tvos?ref=commonmain.dev)  
Gradle plugin that adds Apple tvOS support to Compose Multiplatform apps — keep your stock org.jetbrains.compose and androidx.tv coordinates, get tvOS builds from Maven Central.

### Target: Production

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

affiliate link 

****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!

[Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) 

[Brain Rusher 60 - Apps on Google PlayFind 60 numbers fast. Test your visual search, reflexes & focus.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon_v3-521d9171-1cc2-482c-9c2f-11e8af8eea57.ico)Apps on Google PlayNidya Infotech![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/k7J4ZGAwqWz2qbC4oMqFgrGyisGR_H88cLbZZi83m-2ZeTT80TrarQuPzhyN8CG9fQNrNVwEbOdBsXoSuW2d-s0-br30-7322e509-f0df-49cc-96b6-cda59afa2ee9)](https://play.google.com/store/apps/details?id=nidya.brijesh.brainrusher60&ref=commonmain.dev)

[Sleevd - TCG Management - Apps on Google PlayTrack your trading card collection across Pokemon, Magic, One Piece and more!![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon_v3-2b5ce0e8-85df-468b-87d4-e3ca54e5a7f6.ico)Apps on Google Playhitherejoe![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/LcBy-9N8zkW5d5GoyFYUalxTjUdrDppetb1L4Vt0d9_R0CabzTNr8JQR22WKPNKY51EhP0NJy1PzaNoxnV3PAA-s0-br30-268b6ba7-d533-4fd9-8b86-78c160b7c3a0)](https://play.google.com/store/apps/details?id=app.sleevd&ref=commonmain.dev)

### Careers

Kotlin Multiplatform job postings and opportunities.

affiliate link 

****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.

[Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) 

[Lead Mobile Engineer (Contractor)](https://jobs.ashbyhq.com/hauler-hero/0bed2acb-9cfb-41a9-8836-ea745b97d592?ref=commonmain.dev) at [HAULER HERO](https://www.haulerhero.com/?ref=commonmain.dev)  
**Remote — Eastern Europe & LATAM*  
  
We are hiring a Lead Mobile Engineer (Contractor) to be the most senior engineer on our mobile team. Today we have a native Kotlin Android app; you will help evaluate Kotlin Multiplatform and lead the build-out of our first iOS app (iPad first, phones later) while strengthening the offline-first foundation across both platforms.

---

#### 🚀 Get Featured!

Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/).

#### ✍ 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

![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) 

## Sign up for commonMain.dev

Every Tuesday, the few KMP links actually worth your time.  
Hand-picked, no AI filler.

Join free 

Email sent! Check your inbox to complete your signup. 

Free forever · One email every Tuesday · No spam, unsubscribe anytime.  
Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads.