Kotlin Multiplatform Newsletter #4
Koin goes native with a new Kotlin compiler plugin for compile-time safety, we explore why "discipline doesn't scale" when managing business logic in large-scale apps. We also dive into production-grade convention plugins, scalable API handling with Sandwich, and the latest KMP job openings at Superb and JetBrains.
The Log
The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know.
After years of evolution, Koin takes a major step forward: a native Kotlin Compiler Plugin that brings compile-time safety and auto-wiring to your dependency injection.
The Main Thread
Community's most insightful threads, curated from social media platforms and websites.
In financial applications, business logic evolves constantly. Transfer limits change. Regulatory constraints are updated. New validation rules are introduced sometimes overnight, sometimes mid-sprint. When these rules live in two separate codebases, alignment relies on discipline, not structure. In my experience, discipline does not scale.
I’ve been playing around with Kotlin Multiplatform (KMP) recently, and I’m kind of impressed so far.
Google recommends not using the Icon library to save binary size and to speed up builds since they don't have to weed out unused icons.
Expect Actual
Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems.
Practical Kotlin Deep Dive (Jaewoong Eum) takes you beneath the surface of Kotlin, exploring not just what the language does, but how it works and why it was built that way.
From foundational concepts through coroutines, compiler architecture, and Kotlin Multiplatform, this book connects everyday coding patterns to their underlying mechanisms.
35% discount for the first 5 purchases using the link below.
Modern Android applications commonly adopt multi-layered architectures such as MVVM or MVI, where data flows through distinct layers: a data source, a repository, and a ViewModel (or presentation layer). Each layer has a specific responsibility, and network responses must propagate through all of them before reaching the UI.
While this separation produces clean, testable code, it introduces a real challenge: how do you handle API responses, including errors and exceptions, as they cross each layer boundary?
If you’re managing a large Kotlin Multiplatform (KMP) project, you’ve probably hit the wall. Twenty modules become thirty. Thirty become fifty. Each one has a
build.gradle.kts file that looks suspiciously similar to the last one. You copy-paste configurations, update versions in dozens of places, and pray nothing breaks.There’s a better way — and I’m going to show you exactly how to implement it.
The Dependency Graph
Curated libraries, tools and plugins that won't break your Gradle build.
- Sandwich
An adaptable and lightweight sealed API library designed for handling API responses and exceptions in Kotlin for Retrofit, Ktor, and Kotlin Multiplatform. - Synapse
Extends the capabilities of standard KotlinFlowby introducing a suite of powerful, time-aware, and stateful operators commonly found in functional reactive programming (FRP) but missing from the standard library.
LazyColumn
Compose Multiplatform tips, tricks, and code snippets.
A highly customizable, modern swipeable component for Compose Multiplatform, supporting Android, iOS, Desktop, and Web (WASM) with beautiful animations and intuitive gestures.
Kilua is an open source web framework for Kotlin, based on Compose Multiplatform runtime. It allows you to create declarative UI components and manage their state. Kilua renders to plain HTML DOM (not canvas) and supports both Kotlin/Wasm and Kotlin/JS targets. It provides a lot of ready to use components. It's the first Kotlin UI framework with full support for true SSR (Server-Side Rendering).
Target: Production
Showcase of real-world apps proving KMP is ready for prime time.
Ship your next iOS & Android app in days with Kotlin Multiplatform
Skip the boring setup. KMPShip is a KMP boilerplate with Firebase auth, RevenueCat, push notifications, CI/CD, and more already wired up. Go from idea to App Store & Google Play in days, not weeks.
Careers
Kotlin Multiplatform job postings and opportunities.
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.
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.
Our team works on Kotlin/Native, a compiler and runtime for the Kotlin language, which is based on the LLVM toolchain and supports a wide range of targets. Kotlin/Native plays a significant role in Kotlin Multiplatform (KMP), powering many iOS applications under the hood.
🚀 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
