Kotlin Multiplatform Newsletter #35
Koin Compiler 1.2 introduces full compile-time validation across all existing Koin application DSLs. We also discuss Shopify's decision to pivot back to native mobile development driven by AI/LLMs, Jake Wharton's post-Cash App engineering values, and securing RevenueCat entitlements across multi-client apps. Plus, running Compose Web offline with Service Workers, Google's Now in Android full KMP port, JVM-free Compose Desktop Native via SDL3, and production insights from Sony and Booking.com.
The Log
The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know.
Compile-time validation now works on the Koin application you already have, where before 1.2 it only covered code written specifically for the compiler plugin.
The Main Thread
Community's most insightful threads, curated from social media platforms and websites.
Jake Wharton quit his job at Cash App in November 2025, in the middle of massive tech layoffs. After that, he published nine values for his next employer, number one was "No AI." Jake explains why and what else made the list.
We don’t hold on to a decision just because it was successful at the time. When a core assumption changes, we’re willing to go back and ask whether it’s still the right call. LLMs changed one of the core assumptions behind our 2020 decision, so we reevaluated our mobile stack from first principles.
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.
I'll walk through how I wired subscriptions into Affirmi across Android, iOS, Desktop, and Web using RevenueCat, and the mistake I almost made before I really thought through what an entitlement should mean when you have multiple clients talking to the same backend.
After a production build, a Compose Web application consists of a standard set of static files:
index.html, JavaScript, WebAssembly, and Compose Resources. To allow the application to load without a network connection, these files can be stored in the browser's Cache Storage in advance using a Service Worker.A few weeks ago, I wrote about how SignalBrief evolved from a focused Android MVVM application into an offline-first Kotlin Multiplatform project for Android and iOS. The next question was more interesting: Can that architecture continue to scale when the application starts gaining actual product features — and a third runtime?
Sony and Booking.com used Compose Multiplatform to solve different problems. Their cases demonstrate how to share UI without making portability a higher priority than the product itself.
Now in Android KMP is a full Kotlin Multiplatform port of Google's Now in Android sample, running the same screens, ViewModels, navigation, and data layer on Android, iOS, desktop, and the browser from one shared codebase.
LazyColumn
Compose Multiplatform tips, tricks, and code snippets.
It’s great to see Compose add UI features like this. The distinction from Haze’s main use case is which content gets blurred: it blurs the composable’s own content, not whatever is behind it.
Many mobile apps are built with excellent engineering but still fail to win over users. The UI feels rough, the experience doesn't match what people expected, and they quietly stop using the app or never recommend it. Unfortunately, nobody writes a review praising a clean architecture. As mobile developers, we own that first impression. The screen the user sees is the whole product to them, so it has to look good and feel good to use. Getting this right is halfway to retaining users and to having them recommend the app to their friends.
The Dependency Graph
Curated libraries, tools and plugins that won't break your Gradle build.
- Rive CMP
A Compose Multiplatform wrapper library for integrating Rive animations, providing a unified API to use rive-android, rive-ios, @rive-app/canvas, and a JNI bridge to rive-runtime seamlessly across Android, iOS, Web, and Desktop platforms. - DevView
A Kotlin Multiplatform library that adds an in-app developer overlay to Android and iOS apps. The overlay hosts pluggable modules for feature flags, analytics inspection, and network mocking. - Compose Desktop Native
Run Compose Multiplatform as a native binary, with no JVM. Compose Desktop Native compiles to a single executable for macOS (arm64), Linux (x64/arm64), and Windows (mingwX64), using SDL3 for windowing and input. - kmpfire_cli
A CLI to help with using Firebase in your Kotlin Multiplatform / Compose Multiplatform applications. - Inklet
A native Kotlin / Compose Multiplatform port of the hand-drawn renderer from Drawably. Targets Android, iOS arm64, the iOS arm64 simulator, desktop JVM, and WebAssembly (Wasm/JS). - GuideKit Compose
Build polished product tours, onboarding flows, spotlight overlays, smart arrows, instruction cards, and automatic scrolling in Kotlin Compose. - BackupKit
Kotlin Multiplatform backup into the user's own cloud: iCloud Drive on iOS, Google Drive app-data on Android. No server, no accounts. - WidgetBridge
Typed, atomic handoff of data and images from a Kotlin Multiplatform app to its home-screen widgets: Jetpack Glance on Android, WidgetKit on iOS. The widget extension never links Kotlin. - App-Commander
Your programmable multi-device execution helper. Execute your custom scripts for your apps on multiple devices.
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.
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 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




