5 min read

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.

🪙
Koin Powered by Kotlin Compiler

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.

💶
Kotlin Multiplatform in Banking Apps

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.
🗺️
Exploring Kotlin Multiplatform with Jetpack Compose + SwiftUI — thoughts?

I’ve been playing around with Kotlin Multiplatform (KMP) recently, and I’m kind of impressed so far.
💾
Saving on APK / APP size by removing Icon library

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.

🥪
Scalable API Response Handling Across Multi-Layered Architectures with Sandwich

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?
🧩
Convention Plugins in Kotlin Multiplatform: The Complete Production Guide

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 Kotlin Flow by 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.

👆
Swipeable KMP

A highly customizable, modern swipeable component for Compose Multiplatform, supporting Android, iOS, Desktop, and Web (WASM) with beautiful animations and intuitive gestures.
🕸️
Kilua - Composable web framework for Kotlin/Wasm and Kotlin/JS

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.

GitHub - thejohnsondev/ArtSeum: A KMP Art museum app that features kotlin shared logic with native UI for Android (Jetpack Compose)and iOS (SwiftUI)
A KMP Art museum app that features kotlin shared logic with native UI for Android (Jetpack Compose)and iOS (SwiftUI) - thejohnsondev/ArtSeum
GitHub - vishal2376/footprint: Footprint is a kotlin multiplatform app that turns everyday walks into an exploration game
Footprint is a kotlin multiplatform app that turns everyday walks into an exploration game - vishal2376/footprint
GitHub - ahmed-madhoun1/Audia_KMP
Contribute to ahmed-madhoun1/Audia_KMP 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.
🧠
Senior Software Developer - Kotlin Native at JetBrains

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.

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