5 min read

Kotlin Multiplatform Newsletter #3

Stay ahead of the ecosystem with this week's technical deep dive. Explore the new Explicit Backing Fields in Kotlin 2.3, master Kotlin-Swift/ObjC Interop for native iOS architectures, and learn how to implement screenshot prevention across KMP platforms.

The Log

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

🧑‍🏫
Join the Kotlin Ecosystem Mentorship Program

The Kotlin Foundation is launching a mentorship program that pairs experienced open-source maintainers with new Kotlin contributors to help them make their first meaningful contributions, with branded swag and a chance to win a trip to KotlinConf.

The Main Thread

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

▶️
Explicit Backing Fields in Kotlin 2.3 - What You Need to Know

Kotlin 2.3 introduces a new, experimental "Explicit Backing Fields" feature, so that we can give our properties a different external type than internal type, but there's a major surprise you could run into if you don't know what to expect.
🔍
Remote Jobs on Upwork Competition Analysis: Python, Java, and Kotlin (including KMP) by Specialization (2025–2026)

Expect Actual

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

Kotlin Coroutines Cancellation and Exception Handling

Cancellation and exception handling in coroutines is by far the most complex thing I’ve faced during my entire career. These two things are so complicated that I sometimes ask myself how people are using such a difficult-to-use framework. I read all the possible docs that I found, many different articles, video courses, and even tried to look at the code - and still, I feel that my understanding of this topic is quite bad.
🧩
Mastering Kotlin-Swift/ObjC Interop

Kotlin Multiplatform has reached a level of maturity where the debate is no longer if it works, but how to make it feel native. Kotlin compiles to LLVM bitcode for iOS, and it communicates with Swift via an Objective-C bridge. Understanding this “middleman” is crucial for world-class architectures.
📵
How to Prevent Screenshots in Kotlin Multiplatform for Android and iOS

When building applications that handle sensitive content — banking apps, exam platforms, medical records, or premium content — you may need to prevent users from taking screenshots. In this article, I’ll show you how to implement screenshot prevention in a KMP project.

The Dependency Graph

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

  • Landscapist
    A pluggable, highly optimized Jetpack Compose and Kotlin Multiplatform image loading library that fetches and displays network images, compatible with Glide, Coil, and Fresco.
  • KSafe
    An Effortless Enterprise-Grade Encrypted key-value storage for Kotlin Multiplatform and Native Android with Hardware-Backed Security.
  • Kotlin Multiplatform Markdown Renderer
    Markdown renderer for Kotlin Multiplatform Projects (Android, iOS, Desktop), using Compose.
  • Grant
    Grant is the production-ready, battle-tested permission library that eliminates boilerplate, fixes platform bugs, and handles every edge case. With zero dead clicks, memory leaks, or configuration headaches, Grant provides the cleanest API for KMP permission management.

LazyColumn

Compose Multiplatform tips, tricks, and code snippets.

🌄
Announcing Landscapist Core: A New Image Loading Library for Android & Compose Multiplatform

Image loading has always been a fundamental challenge in mobile and cross-platform development. While Android developers have relied on battle-tested libraries like Glide, Coil, and Fresco for years, the rise of Kotlin Multiplatform has created a gap: how do you load images consistently across Android, iOS, Desktop, and Wasm without duplicating code or depending on platform-specific solutions?
🔬
Compose Compiler Stability Inference System

A comprehensive study of how the Compose compiler determines type stability for recomposition optimization.
🧰
Hau - Kotlin Multiplatform UI toolkit for building elegant, responsive, and customizable chat applications.

It demonstrates how to architect cross‑platform UIs using Compose Multiplatform, with clean MVVM patterns, mock data, and live previews.

Target: Production

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

SubFox - Never lose track of your subscriptions again
SubFox is a subscription management app that helps you track your subscriptions and save money.
GitHub - AnatoliiChub/HRAM: Kotlin Multiplatform app for heart rate & activity tracking with BLE heart rate monitors.
Kotlin Multiplatform app for heart rate & activity tracking with BLE heart rate monitors. - AnatoliiChub/HRAM
GitHub - msasikanth/twine: Twine: A multiplatform RSS reader built using Kotlin and Compose
Twine: A multiplatform RSS reader built using Kotlin and Compose - msasikanth/twine

Careers

Kotlin Multiplatform job postings and opportunities.

💸
Android / Kotlin Multiplatform Developer at Vesko

Looking for an Android / Kotlin Multiplatform Developer to build Vesko’s modern, high-performance POS system for retail.

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