Kotlin Multiplatform Newsletter #36
In this briefing: Ktor 3.6.0 lands with HTTP/3 support and OpenID Connect typed auth, while klibs.io introduces an MCP server to plug 4,200+ KMP libraries into AI development workflows. We also debug a notorious Xcode type collision bug (State to State), examine transitive Gradle dependency crashes on iOS, and configure meaningful Kover test coverage gates across multi-module projects. Plus, a WebAssembly 3.0 runtime in KMP with Chasm, auto-tracked analytics via Autograph, and two Senior KMP roles at Fanatics Markets in NYC.
The Log
The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know.
Explore a growing Kotlin Multiplatform catalog in your browser, or bring up-to-date library data directly into your AI development workflow through the klibs.io MCP server.
This release is full of new experimental features, including typed authentication capabilities with specialized support for OpenID Connect and HTTP/3 support for the Netty engine. There are also a few quality-of-life improvements for routing and request handling, more convenient defaults for Kotlin Multiplatform clients, and more.
April 21–23 2027, ICE Kraków Congress Centrer
Talks from real engineers, packed with ideas you can start applying right after the conference. Super Early Bird tickets are available – grab yours and join us.
Key priorities:
- Language evolution: keep Kotlin concise and expressive, prioritizing ergonomics and safety over ceremony.
- Kotlin Multiplatform: become the foundation for modern cross-platform apps through a solid iOS experience, mature web targets, and reliable IDE tooling.
- Staying agnostic: support developers no matter their tools or targets.
- Experience of third-party ecosystem authors: simplify the development and publication process for Kotlin libraries, tools, and frameworks.
This is your best opportunity this year to help shape Kotlin’s future. Tell us what you value and what we can make even better.
Share what you think about the language, IDEs, build tools, libraries, Kotlin Multiplatform, documentation, and AI-powered workflows. Your feedback helps us focus on what matters most to you.
The Main Thread
Community's most insightful threads, curated from social media platforms and websites.
Kotlin 2.4.20 is out! This release includes some exciting new additions in the standard library, updates to the iOS development experience, and improvements to both the Wasm and JS targets as well.
A reddit discusion about development experience, ecosystem, CMP integration with desktop/JVM only environments, performance and how it compares to JavaFX.
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.
A percentage on its own tells you almost nothing. Ninety percent coverage on a module full of generated code and empty getters is worse than sixty percent on a module where every line was actually exercised by a test that would fail if you broke something. I found this out the annoying way, wiring Kover into a project with close to twenty modules: the number moved, but it wasn’t telling me the truth.
How transitive dependencies get out of sync and the Kotlin/Native change which makes it worse.
There is a particularly tricky class of bug which we’ve seen teams encounter in their KMP projects. A dependency version changes somewhere in the graph. Every build is green. The release goes out, and crashes start arriving from a feature nobody touched, usually on iOS, usually with an error most of the team has never seen before.
Our iOS build broke after an Xcode update, and it greeted me with the least helpful error message I've read in a long time:
Cannot convert return expression of type 'MultiplatformLoginViewModel.State' to return type 'MultiplatformLoginViewModel.State'Same type. Twice. Convert it to itself, apparently. Here's what was actually going on, and the two ways out.
The Dependency Graph
Curated libraries, tools and plugins that won't break your Gradle build.
- envy
Type-safe, reflection-free environment configuration for Kotlin, powered by KSP. - Calf - Compose Adaptive Look & Feel
Calf is a library that allows you to easily create adaptive UIs and access platform specific APIs from your Compose Multiplatform apps. - Autograph
Self-writing analytics for Kotlin & Compose Multiplatform — auto-tracked screens, impressions, and clicks, with a pluggable event envelope for dedup, ordering, and loss detection. - jev4k
A Kotlin DSL and client for TypeSafe's Jev model. - KMPMedia
A Kotlin Multiplatform media library for Compose — with a focus on animated, interactive, and runtime-editable vector SVG, plus image processing, audio, and video, on Android and iOS. - Chasm
A WebAssembly runtime built on Kotlin Multiplatform. The runtime targets the latest wasm specification Wasm 3.0 and supports all instructions with the exception of Memory64 and Vector Instructions. - Kermit
Kermit is a Kotlin Multiplatform logging library. Out of the box, the library defaults to platform-specific loggers such asLogcatandOSLog, but is easy to extend and configure.
Target: Production
Showcase of real-world apps proving KMP is ready for prime time.
wellfound • Where great companies meet great people.
The next company that changes the world, and the role that changes yours. Wellfound is where 27,000+ startups hire. Apply directly to the founders and hiring managers building what's next.

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.
New York, NY, United States
As a Senior Mobile Engineer, you'll contribute to a multi-platform app built on Kotlin Multiplatform, shipping features across Android, iOS, and additional targets from a shared codebase. You'll own complex work end-to-end, write code that sets the quality bar for the team, and help shape architecture decisions in a fast-moving product environment. Our engineering strategy centers on KMP and Compose Multiplatform to deliver high-quality, consistent experiences across platforms — and the engineers who build it are expected to help keep that bar high.
New York, NY, United States
As a Sr. Staff Mobile Engineer, you'll be a defining technical voice on a multi-platform app built on Kotlin Multiplatform, shipping across Android, iOS, and additional targets from a shared codebase. You'll combine strategic thinking with hands-on execution — leading architecture decisions, setting engineering standards, and guiding engineers across the organization. Your impact will extend well beyond your immediate team, shaping how we build across platforms at scale and influencing the long-term direction of our mobile engineering practice.
🚀 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


