5 min read

Kotlin Multiplatform Newsletter #2

The Log

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

🚀
Ktor 3.4.0 Is Now Available!

Ktor 3.4.0 improves stability and addresses outstanding issues. Highlights include OpenAPI generation, Ztsd support for the compression plugin, duplex streaming for OkHttp, Structured concurrency integrations for the HTTP request lifecycle, and much more. For a detailed list of all the changes, check out the What’s new page.
🚀
Exposed 1.0 Is Now Available

This is the first major release of Exposed – a huge milestone for both the project and the Exposed team! This release brings many new exciting features, the most requested being R2DBC support, as well as performance enhancements and bug fixes. Exposed 1.0 also introduces a stable API that guarantees no breaking changes until the next major release.

The Main Thread

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

⚠️
Gradle 9 Will Break Your KMP Project - Here's the Full Migration Strategy

In this video Philipp Lackner shows us the core changes of Gradle 9 for KMP projects and how to successfully migrate our projects.
🍉
KMP Wizard Template — AGP 9.0.0 Ready

A clean Kotlin Multiplatform (KMP) starter generated with the Kotlin Multiplatform Wizard and then updated to work smoothly with Android Gradle Plugin (AGP) 9.0.0.

Expect Actual

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

🦮
in, out, reified: A Practical Guide to Kotlin Generics

Kotlin’s standard library is full of generic signatures — List<out E>Comparable<in T>Sequence<out T>. The in and out keywords appear constantly, but what do they actually mean? And when does a regular type parameter need one of these modifiers?
🎯
Tracing the User Journey with Coroutines in Kotlin Multiplatform

How do you understand what a user actually experienced when everything is asynchronous, cross-platform, and happening “somewhere” inside coroutines?
💻
Complete Guide for Publishing Your Kotlin Multiplatform Compose Desktop App to the Mac App Store

So you’ve built a Kotlin Multiplatform app with Compose Desktop and now you want to ship it to the Mac App Store. Good luck — you’re going to need it. This guide is everything I wish I knew before I started.
👀
Building a Text Sentiment Classifier in Kotlin Multiplatform

Sentiment classification is the process of identifying the sentiment/tone/polarity of a given text. The text could either be ‘POSITIVE’, ‘NEGATIVE’ or ‘NEUTRAL’. The techniques used to perform sentiment classification may assign numbers to these classes (like -1 for ‘NEGATIVE’ and 1 for ‘POSITIVE’) or predict a real number in the range [-1, 1] to quantify the extent of the sentiment.

The Dependency Graph

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

  • Alarmee
    Alarmee is a Kotlin/Compose Multiplatform library designed to simplify scheduling alarms and notifications on both Android and iOS platforms.
  • moko-permissions
    Runtime permissions controls for mobile (android & ios) Kotlin Multiplatform development.
  • Turbine
    A testing library for kotlinx.coroutines Flow.
  • assertk
    Fluent assertions library for Kotlin with full Multiplatform support.

LazyColumn

Compose Multiplatform tips, tricks, and code snippets.

🌟
AwesomeUI

A collection of "copy, paste, use" snippets and useful elements for those who intend to or are already developing an app in Compose Multiplatform or simply an Android app and already use Jetpack Compose and Material3.
🕸️
Building a WebView control for Compose Desktop

In this article, I’ll walk you through how we built a BrowserView control for Compose Desktop and the technical challenges we solved during this process — from rendering and input handling to lifecycle and native window management.

Target: Production

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

GitHub - rainxchzed/Github-Store: A free, open-source app store for GitHub releases — browse, discover, and install apps with one click. Powered by Kotlin and Compose Multiplatform for Android & Desktop (Linux, MacOS, Windows).
A free, open-source app store for GitHub releases — browse, discover, and install apps with one click. Powered by Kotlin and Compose Multiplatform for Android &amp; Desktop (Linux, MacOS, Windows).…
Bsky Tracker - The must-have Bluesky Followers Analytics & Network Manager
Track followers, analyze engagement, and manage your Bluesky network with real-time insights. Free app with advanced filtering and bulk actions for iOS & Android.
GitHub - be1ski/vibits: Habit tracker powered by Memos
Habit tracker powered by Memos. Contribute to be1ski/vibits development by creating an account on GitHub.

Careers

Kotlin Multiplatform job postings and opportunities.

🍽️
Kotlin Multiplatform Product Engineer at Superb

Superb gathers all the tools to open, run and grow your hospitality business — in one platform. We are looking for one more remote Kotlin Multiplatform Product Engineer to join our team and play a key role in shaping our mobile products for restaurateurs. In this role, you will work on delivering seamless experiences across multiple platforms using KMP, ensuring high performance and maintainability.
🛠️
Senior/Staff Software Developer - Kotlin Multiplatform Tooling at JetBrains

With Kotlin Multiplatform and Compose Multiplatform, our goal is to empower Android developers to build the best multiplatform apps. The Kotlin Multiplatform Tooling team is responsible for building tools that make this easier than ever. We’re developing KMP plugins for both IntelliJ IDEA and Android Studio, while also working on IntelliJ IDEA’s Android support, KDoctor, and the Kotlin Multiplatform wizard.

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