# commonMain.dev > Hand-curated Kotlin Multiplatform news, deep dives & tools — delivered every Tuesday. Public Ghost content for AI and LLM tooling. This file includes a bounded export of public pages first, then recent public posts. Append `.md` to any post or page URL to get the content in Markdown (for example, `/example-post.md`). ## Pages ### About URL: https://commonmain.dev/about/ Last updated: 2026-01-25T19:42:52.000Z **commonMain.dev** is the weekly newsletter for Kotlin Multiplatform (KMP) developers. In an ecosystem that moves as fast as KMP, we provide the `actual` insights you need to build stable, production-ready applications, straight to your inbox, every Tuesday. ### What we track Our focus is on valuable content for the Kotlin Multiplatform (KMP) community: - Latest Kotlin Multiplatform (KMP) news and updates. - Useful KMP libraries and tools for developers and teams. - Technical deep dives and case studies. - Showcase of real-world apps built with KMP. - KMP jobs and opportunities. - Anything else that's interesting enough for the KMP community. ### Get Involved This newsletter is a community-driven project. There are two ways to help us keep the build successful: 1. **Submit Content:** Shipped something cool? [Push your link](https://commonmain.dev/submit-your-link/) to our queue. 2. **Partner With Us:** Does your brand provide value to KMP developers? Visit our [Sponsorship](https://commonmain.dev/sponsor/) page, --- ### Submit Your Link URL: https://commonmain.dev/submit-your-link/ Last updated: 2026-04-03T09:11:10.000Z Have you shipped a **Target: Production** app? Built a must-have tool for **The Dependency Graph**? Or written a deep-dive that belongs in **Expect Actual**? We’re always looking for interesting content to share with the KMP community. Use the form below to submit your work for a chance to be featured in the next issue of **commonMain.dev** **• The Kotlin Multiplatform Newsletter**. **Note:** content hidden behind paywalls will be rejected. If you wish to promote your paid product or service, consider submitting a [collaboration request](https://commonmain.dev/sponsor/) instead. ### BUILD SUCCESSFUL URL: https://commonmain.dev/submission-successful/ Last updated: 2026-02-28T21:16:21.000Z Your submission has been successfully added to our curation backlog. We review every link to ensure it hits the standard our readers expect. If your link is selected, you'll see it in an upcoming issue of **commonMain.dev**. In the meantime, keep building and check out our [latest issues](https://commonmain.dev/tag/issues/) while you wait. **Stay platform-independent!** [Submit Another Link](https://commonmain.dev/submit-your-link/) ### Support the Build URL: https://commonmain.dev/sponsor/ Last updated: 2026-01-24T13:17:59.000Z **`commonMain.dev`** is the weekly newsletter of the Kotlin Multiplatform ecosystem. We deliver valuable technical insights and news to senior engineers, tech leads, and architects who are actively defining their cross-platform stacks. To keep the newsletter independent and free for the community, we partner with tools and services that provide genuine value to the KMP community. If you have a product, service, or job opportunity that helps engineers ship to production faster, we’d love to help you reach our audience. **Fill out the form below and secure a slot in a future issue. Alternatively, shoot us an email at** `commonMain@bogdancodes.com` **with your inquiry.** ### Thank You! 🤝 URL: https://commonmain.dev/sponsor-thank-you/ Last updated: 2026-02-28T21:15:28.000Z **Sync initiated.** Thank you for your interest in sponsoring **commonMain.dev**. We’ve received your request and our "human-in-the-loop" review process is now underway. **What’s next?** - Our team will review your submission to ensure it’s a match for our readers. - You will receive an email within **24–48 hours** with our current stats, pricing, and available Tuesday slots. In the meantime, feel free to [browse our archives](https://commonmain.dev/tag/issues/) to see how we feature our partners. ### Privacy Policy URL: https://commonmain.dev/privacy-policy/ Last updated: 2026-01-19T10:34:52.000Z **Last Updated: January 19, 2026** Welcome to **commonMain.dev**. I respect your privacy and am committed to protecting your personal data. This policy explains how I handle your information when you subscribe to the newsletter or interact with the website. ### 1\. Data Controller **commonMain.dev** is operated by **Bogdan Ștefan**, an individual developer based in **Romania**. For any data-related inquiries, you can reach me at: **commonMain@bogdancodes.com**. ### 2\. Data We Collect and Why I only collect the minimum amount of data necessary to provide you with the newsletter: - **Email Address:** When you subscribe, I collect your email address to deliver the weekly newsletter. - **Form Submissions:** If you use our **Tally.so** forms to submit a link or a sponsorship request, I collect the information you provide in those fields to process your request. - **Usage Data:** I use **Plausible Analytics** to understand how readers interact with the site. This data is **fully anonymous**, contains no personal information, and does not use cookies. ### 3\. Legal Basis for Processing (GDPR) I process your data based on your **Consent**. By subscribing to the newsletter or submitting a form, you agree to this processing. You can withdraw your consent at any time by clicking the "unsubscribe" link in any email. ### 4\. Third-Party "Dependencies" (Sub-processors) To keep the build running, I use a few trusted third-party services: - **Ghost:** My CMS and newsletter delivery platform. - **Tally.so:** Used for link submissions and sponsorship inquiries. - **Plausible Analytics:** Used for anonymous site metrics. **Note on Sponsors:** I do **not** share your email address or personal data with sponsors. I only share aggregate, anonymous statistics (such as total subscriber count and average open rates). ### 5\. Affiliate Disclosure Some links in the newsletter may be **affiliate links** (e.g., RevenueCat, Codemagic). If you click these links, the third-party provider may use cookies or tracking to credit the referral to commonMain.dev. This happens on their platform, not mine. ### 6\. Data Retention I keep your email address only for as long as you are subscribed to **commonMain.dev**. If you unsubscribe, your data is deleted from the active mailing list. ### 7\. Your Rights (GDPR) Under the GDPR, you have the following rights: - **Access/Portability:** You can ask for a copy of your data. - **Correction/Deletion:** You can ask me to fix or delete your data. - **Object/Restrict:** You can object to how I process your data. - **Complaint:** You have the right to lodge a complaint with the Romanian Supervisory Authority (**ANSPDCP**). ### 8\. Contact If you have any questions regarding this policy or your data, please open a "ticket" by emailing: **commonMain@bogdancodes.com**. ### Contact URL: https://commonmain.dev/contact/ Last updated: 2026-01-19T10:56:14.000Z **Looking for the right endpoint?** To keep the build running smoothly, please use the dedicated channels below: ****Feature Submissions** Have something interesting to share with the KMP community? [Submit your link here](https://commonmain.dev/submit-your-link/). ****Sponsorships** For brands looking to partner with `commonMain.dev`, visit the [sponsorship page](https://commonmain.dev/sponsor/). ****General Inquiries** For all other inquiries, please feel free to send an email to `commonMain@bogdancodes.com`. ### Frequently Asked Questions #### When is the next issue? Every Tuesday morning. #### Do you accept guests posts? Not currently, but we love featuring deep-dives from the community via the submission link! ### Hand-curated Kotlin Multiplatform news, deep dives & tools — weekly URL: https://commonmain.dev/kmp-newsletter/ Last updated: 2026-06-12T19:27:53.000Z ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-small-3-1.png) ## The only KMP newsletter you actually need to read. Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. ## Curated by a practitioner, not an algorithm Every issue is read and curated by a senior engineer with 8+ years in mobile and multiplatform development, no AI summaries, no automated link dumps. Just the signal for KMP engineers and tech leads. ## What to expect in each KMP newsletter issue - **Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP) news and updates.** Stay ahead of the curve with weekly briefings of the most important updates from the KMP world. - **Curated KMP libraries, tools and plugins.** We filter the noise on GitHub to bring you the best multiplatform libraries (Ktor, SQLDelight, Decompose, etc.). - **KMP and CMP technical deep dives and case studies.** Gain insights from other KMP teams on the challenges they encountered during development and the strategies they used to overcome them. - **Showcase of real world KMP projects.** Kotlin Multiplatform is ready for prime time. Get examples of KMP apps that are already fully built and working in production environments. - **KMP jobs and career opportunities.** The KMP job market is growing fast. More and more Kotlin developers are becoming open to such opportunities. Read a sample issue 👇 [Kotlin Multiplatform Newsletter #18 • commonMain.devKotlin 2.3.20 & Compose 1.11.0 drop, name-based destructuring, unstyled components, & true on-device AI with Llamatik. The weekly KMP news.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/-Icon--Gemini-icon-squircle-1-b6df4342-11c5-42e3-8846-ed626502e047.png)commonMain.devBogdan Codes![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/kodee-mail-v1-upscaled-4x-1-ebe8198c-6754-4685-bff4-3aa6dd9f5045.png)](https://commonmain.dev/kotlin-multiplatform-newsletter-18/) ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-small-2-1.png) ## Like what you see? Get the next issue this Tuesday — free, every week. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. ## Frequently asked questions ### About the newsletter #### ****Who is this newsletter for?** It's for working engineers building with Kotlin Multiplatform: Android developers moving into multiplatform, iOS engineers sharing logic via KMP, and tech leads evaluating KMP and Compose Multiplatform for their teams. If you ship (or want to ship) KMP in production, it's written for you. #### Do I need to be a KMP expert to get value from it? No, but it helps to be comfortable with Kotlin. It's written for practising developers, so we cover real topics like architecture, dependency injection, persistence, and Compose UI rather than "hello world." Newcomers are welcome; if you're brand new, start with our [KMP Guide](https://commonmain.dev/kotlin-multiplatform/) first. #### What does a typical issue look like? Every Tuesday issue runs through the same eight sections: a short intro, ****The Log** (the KMP/CMP news that actually matters), ****The Main Thread** (the best community threads), ****Expect Actual** (a technical deep dive), ****LazyColumn** (Compose tips and snippets), ****The Dependency Graph** (curated libraries and tools), ****Target: Production** (real-world KMP apps), and ****Careers** (KMP jobs). Read a recent issue → [Kotlin Multiplatform Newsletter #18](https://commonmain.dev/kotlin-multiplatform-newsletter-18/) #### Does it cover all of Kotlin Multiplatform, or just mobile (KMM)? All of it. Android and iOS are the core, but we also cover [Kotlin Multiplatform](https://kotlinlang.org/multiplatform/?ref=commonmain.dev) on desktop, web, and the server, plus [Compose Multiplatform](https://kotlinlang.org/compose-multiplatform/?ref=commonmain.dev) for sharing UI - including Compose on iOS. "KMM" was the old mobile-only branding; today it's all just Kotlin Multiplatform, and so are we. #### ****How often is the KMP newsletter** delivered****?** Once a week, every Tuesday. We respect your inbox — no mid-week "breaking news" blasts unless it's something genuinely urgent, like a critical Kotlin security patch. #### Is the commonMain.dev newsletter free? Yes, completely free, and it always will be. The goal is to grow the Kotlin Multiplatform ecosystem by making the best news and resources easy to find. It's funded by occasional, clearly-marked sponsors, not by paywalling readers. #### Will you spam me? No. One email every Tuesday, that's the whole deal. No drip sequences, no daily blasts, and we never sell or share your address. Every issue has one-click unsubscribe, no hard feelings. #### I already follow the official Kotlin blog — why subscribe? Because the official channels cover what JetBrains ships; we cover what the community builds with it. Each issue is hand-picked: real-world case studies, third-party libraries and wrappers, Compose Multiplatform experiments, and the Swift-interop gotchas you won't find in release notes — filtered down to the few things worth your time. #### Who is behind this newsletter? Every link is personally vetted by [Bogdan](https://www.linkedin.com/in/bogdancodes/?ref=commonmain.dev), a senior software engineer with 8+ years in mobile and multiplatform development. No AI-generated filler and no automated link dumps, just one practitioner reading the whole ecosystem so you don't have to. #### Are job opportunities included? Yes, every issue has a Careers section with curated Kotlin Multiplatform roles, from KMP/Compose mobile positions to multiplatform architecture jobs. Hiring for a KMP role? You can [submit it to be featured](https://commonmain.dev/submit-your-link/). #### Can my work be featured? Yes, and we'd love that. If you've built a KMP/CMP library, written a deep dive, or shipped a production app, [submit your link](https://commonmain.dev/submit-your-link/)! Community submissions are a big part of what makes each issue worth reading. #### Can I sponsor an issue? Yes, a limited number of sponsor slots are available each month for tools, products, and job posts that genuinely help KMP developers. See the [sponsorship page](https://commonmain.dev/sponsor/) for formats and availability. #### Are you affiliated with JetBrains or the Kotlin Foundation? No, commonMain.dev is fully independent. That's deliberate: it means the curation is unbiased, with no vendor agenda about which tools or approaches get covered. We just recommend what's genuinely good. ### About Kotlin Multiplatform #### Is Kotlin Multiplatform production-ready in 2026? Yes. KMP has been stable since late 2023 and runs in production at companies like Google, McDonald's, Netflix, and Forbes. Our `Target: Production` section showcases real-world KMP apps in every issue, and our [KMP Guide](https://commonmain.dev/kotlin-multiplatform/) covers the maturity story in depth. #### Is Kotlin Multiplatform worth learning in 2026? For most Kotlin and mobile developers, yes. KMP lets you share business logic (and with Compose Multiplatform also UI) across Android, iOS, desktop, and web while keeping native performance, making it one of the most in-demand cross-platform skills right now. The [KMP Guide](https://commonmain.dev/kotlin-multiplatform/) is a good place to start. #### What's the difference between KMP and Compose Multiplatform? Kotlin Multiplatform (KMP) shares non-UI code (business logic, networking, data) while you keep each platform's native UI. Compose Multiplatform (CMP) is built on top of KMP and lets you share the UI too, using Jetpack Compose across Android, iOS, desktop, and web. Use KMP for logic; add CMP when you also want shared UI. #### How does KMP compare to Flutter and React Native? The big difference is flexibility. Flutter and React Native ask you to rebuild your UI in their framework; KMP lets you share as much or as little as you want — logic only with fully native UI, or shared UI via Compose Multiplatform — all in Kotlin with native performance. The [KMP Guide](https://commonmain.dev/kotlin-multiplatform/) breaks down the trade-offs. ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-small-1.png) ## Still here? You're exactly who this is for. Join free and get the next Kotlin Multiplatform issue this Tuesday. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Already subscribed? Forward this to a teammate who's into KMP. ### The Ultimate Guide to Kotlin Multiplatform (KMP) URL: https://commonmain.dev/kotlin-multiplatform/ Last updated: 2026-03-11T19:47:14.000Z ## 1\. Introduction: The Multiplatform Revolution Kotlin Multiplatform (KMP) has fundamentally shifted how we think about code reuse. For years, the industry chased the "Write Once, Run Anywhere" (WORA) dream, which often resulted in "Write Once, Debug Everywhere." KMP takes a different path: **Share the logic, keep the UI native.** ### What is Kotlin Multiplatform (KMP)? Unlike cross-platform frameworks that wrap your app in a "black box" or a custom rendering engine, **Kotlin Multiplatform** is an SDK designed to simplify the development of cross-platform projects. Developed by [JetBrains](https://www.jetbrains.com/?ref=commonmain.dev), it allows you to maintain a single codebase for the "boring" parts of your app (business logic, networking, and data persistence) while leveraging the native strengths of each platform. When you write KMP code, you aren't writing for a virtual machine that sits on top of the OS. You are writing Kotlin that compiles directly to: - **JVM bytecode** for Android. - **Native binaries (via** [**LLVM**](https://llvm.org/?ref=commonmain.dev)**)** for iOS and macOS. - **WebAssembly (Wasm) or JavaScript** for the browser. ### The Philosophy: Share Logic, Not UI The biggest pain point in mobile development has always been the "double-work" of implementing the same business rules in both Kotlin and Swift. KMP solves this by focusing on the **domain and data layers**. - **The Shared Layer:** Networking ([Ktor](https://ktor.io/?ref=commonmain.dev)), Database ([Room](https://developer.android.com/kotlin/multiplatform/room?ref=commonmain.dev)), and Business Logic live in a `commonMain` module. - **The Native Layer:** Your Android app uses Jetpack Compose, and your iOS app uses SwiftUI. They both consume the same shared "source of truth," but the user gets the 60fps, high-fidelity experience of a truly native app. 💡 ****Key Takeaway:** KMP is not an "all-or-nothing" choice. Its biggest strength is ****incremental adoption**. You can start by sharing a single data model or a small utility library without rewriting your entire UI. ### The Ecosystem in 2026: Stability and Maturity As of 2026, the KMP ecosystem has moved past the "experimental" phase. With [Google officially supporting KMP for Android/iOS](https://developer.android.com/kotlin/multiplatform?ref=commonmain.dev) logic sharing and [JetBrains stabilizing Compose Multiplatform for iOS](https://kotlinlang.org/docs/multiplatform/supported-platforms.html?ref=commonmain.dev#compose-multiplatform-ui-framework-stability-levels), the risk of adoption has vanished. Major players like **Netflix, McDonald's, and Cash App** have already proven that KMP scales in high-concurrency, production environments. It is no longer a question of *if* KMP is ready, but *how* you can leverage it to ship faster. ## 2\. Core Concepts: The Engine Behind KMP Understanding how Kotlin code runs on an iPhone without a Virtual Machine is the first step to mastering the ecosystem. KMP relies on a unique compilation pipeline and a "contract-based" shared logic system. ### The Expect/Actual Mechanism The cornerstone of Kotlin Multiplatform is the `expect`/`actual` mechanism. Think of this as a **compile-time contract**. - **`expect` (The Contract):** You define a declaration in the `commonMain` source set. You are telling the compiler, "I expect every platform to provide an implementation for this." - **`actual` (The Fulfillment):** You provide the platform-specific implementation in `iosMain`, `androidMain`, etc. Unlike standard interfaces, `expect/actual` allows you to access platform-specific types (like `platform.UIKit.UIDevice` on iOS or `android.os.Build` on Android) directly in your Kotlin code. ```kotlin // In commonMain expect fun getPlatformName(): String // In iosMain import platform.UIKit.UIDevice actual fun getPlatformName(): String = UIDevice.currentDevice.systemName() // In androidMain import android.os.Build actual fun getPlatformName(): String = "Android ${Build.VERSION.SDK_INT}" ``` 💡 ****Pro Tip:** For large-scale apps, prefer ****Interface Abstraction** with Dependency Injection (Koin) over `expect/actual` for business logic. Reserve `expect/actual` for low-level platform "shims" like logging or local file paths. ### Project Structure & Source Sets A KMP project is organized into source sets. This allows the [Kotlin Gradle Plugin](https://kotlinlang.org/docs/multiplatform/multiplatform-discover-project.html?ref=commonmain.dev) to manage which code belongs to which target. The standard hierarchy (using the default hierarchy template) looks like this: - **`commonMain`**: The "brain" of the app. 80–90% of your code lives here. - **`nativeMain`**: Shared code for all native targets (iOS, macOS, Linux). - **`iosMain`**: Specific to Apple’s ecosystem. - **`androidMain`**: Specific to the Android JVM and Android APIs. ### Compilation Targets: From JVM to Native & Wasm One of KMP's superpowers is how it handles different execution environments: 1. **Kotlin/JVM:** Compiles to standard Java bytecode for Android and backend services. 2. **Kotlin/Native:** Uses the [LLVM toolchain](https://llvm.org/?ref=commonmain.dev) to produce standalone binaries (`.framework` for iOS). This is how KMP achieves native performance with no overhead. 3. **Kotlin/Wasm:** The newest frontier. By compiling to [WebAssembly](https://kotlinlang.org/docs/wasm-overview.html?ref=commonmain.dev), KMP can run at near-native speeds in the browser, bypassing the performance bottlenecks of JavaScript. ### Swift Interoperability (Swift Export) In 2026, the bridge between Kotlin and Swift has evolved. While earlier versions relied on an Objective-C intermediate layer, the modern **Swift Export** allows Kotlin code to be seen as native Swift modules. This means `suspend` functions map directly to Swift's `async/await`, and sealed classes map to native Swift Enums with associated values. ## 3\. KMP vs. Compose Multiplatform (CMP) One of the most frequent questions in the ecosystem is: *"Is Kotlin Multiplatform the same thing as Compose Multiplatform?"* The answer is no. While they are developed by [JetBrains](https://www.jetbrains.com/lp/compose-multiplatform/?ref=commonmain.dev) and work seamlessly together, they serve two distinct purposes in your architecture. ### Kotlin Multiplatform (The Foundation) **Kotlin Multiplatform (KMP)** is the core technology that allows you to share **non-UI logic**. It handles your networking, data persistence, and business rules. When you use "KMP only," you are sharing the "brain" of the app but building the "face" (UI) twice: - **Android:** [Jetpack Compose](https://developer.android.com/compose?ref=commonmain.dev) - **iOS:** [SwiftUI](https://developer.apple.com/swiftui/?ref=commonmain.dev) ### Compose Multiplatform (The UI Layer) **Compose Multiplatform (CMP)** is a declarative UI framework built on top of KMP. It extends [Jetpack Compose](https://developer.android.com/compose?ref=commonmain.dev) beyond Android, allowing you to share your UI code across iOS, Desktop (JVM), and Web (Wasm/JS). ### The Rendering Engine: How Shared UI Works Unlike React Native (which maps to native components) or Flutter (which draws everything on its own canvas), Compose Multiplatform on iOS uses **Skia** (via the [Skiko library](https://github.com/JetBrains/skiko?ref=commonmain.dev)). This allows Compose to render UI with pixel-perfect consistency across platforms while still running as a native binary. ### Decision Matrix: Shared UI or Native UI? The "Senior" approach is to choose based on the project requirements rather than personal preference. | Strategy | When to Choose | UI Tech Stack | | ------------------ | ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- | | Traditional KMP | High-fidelity apps, strict "platform-native" look and feel requirements, or integrating into existing apps. | KMP (Logic) + SwiftUI / Jetpack Compose (native UI) | | Full Compose (CMP) | Speed to market, internal tools, or apps where brand consistency is more important than platform-specific nuances. | KMP (Logic) + Compose Multiplatform (UI) | ### Interoperability: The Best of Both Worlds You don't have to choose just one. The ecosystem supports **Interoperability**. - **UIKit in Compose:** You can embed a native `MKMapView` or `UIImagePicker` inside a Compose screen. - **Compose in SwiftUI:** You can export a specific Compose-based feature (like a complex chart or a custom editor) as a `UIViewController` to be used inside a standard SwiftUI app. ## 4\. Technical Comparison: KMP vs. Flutter vs. React Native When choosing a cross-platform strategy, most teams evaluate three main contenders: **Flutter**, **React Native**, and **Kotlin Multiplatform**. While all three aim to reduce code duplication, their underlying architectures are fundamentally different. ### The Comparison Matrix This table breaks down the core trade-offs between the three most popular cross-platform frameworks in 2026. | Feature | Kotlin Multiplatform (KMP) | Flutter | React Native | | -------------------- | ------------------------------ | --------------------------- | ------------------------- | | **Primary Language** | Kotlin | Dart | JavaScript / TypeScript | | **UI Rendering** | Native (UIKit/Jetpack) or Skia | Skia (Custom Canvas) | Native UI via Bridge/JSI | | **Performance** | Native (No overhead) | High (Optimized C++) | Moderate (JS Bridge cost) | | **Interoperability** | 100% Native Interop | Via Platform Channels | Via Native Modules | | **Code Sharing** | Business Logic / Optional UI | UI and Logic | UI and Logic | | **Adoption Style** | Incremental (Module by module) | All-or-nothing (Greenfield) | Greenfield or Integrated | ### 1\. KMP: The Native Multiplatform KMP is unique because it doesn't try to replace the native platform; it augments it. By compiling to native binaries via [LLVM](https://llvm.org/?ref=commonmain.dev), your shared code runs with the same performance as if it were written in Swift or Java. - **Pros:** Access to 100% of native APIs, zero performance penalty, and easy integration into existing enterprise apps. - **Cons:** Higher learning curve for iOS-only teams not familiar with Kotlin. #### KMM vs. KMP: What Happened to "Mobile"? If you have been researching this space for a while, you likely encountered the term **KMM (Kotlin Multiplatform Mobile)**. In 2023, [JetBrains officially deprecated the KMM brand](https://blog.jetbrains.com/kotlin/2023/07/update-on-the-name-of-kotlin-multiplatform/?ref=commonmain.dev) in favor of the unified **KMP (Kotlin Multiplatform)** name. **Why the change?** Originally, "KMM" specifically referred to sharing code between Android and iOS. However, as Kotlin’s reach expanded to **Desktop (JVM)**, **Web (Wasm)**, and **Server-side**, the "Mobile" suffix became too restrictive. - **KMM:** An old branding term for mobile-only sharing. - **KMP:** The current, all-encompassing name for the technology, regardless of whether you are targeting iOS, Android, Web, or Desktop. Today, whether you are building a mobile app or a cross-platform desktop tool, the technology, plugins, and libraries are all under the **KMP** umbrella. ### 2\. Flutter: The Canvas-Based Contender [Flutter](https://flutter.dev/?ref=commonmain.dev) uses the Skia/Impeller engine to draw every pixel on the screen. It bypasses native UI components entirely. - **Pros:** Incredible development speed (Hot Reload) and perfect UI consistency across platforms. - **Cons:** Large binary sizes and a "non-native" feel in complex gestures or OS-specific UI behaviors. ### 3\. React Native: The Ecosystem Giant [React Native](https://reactnative.dev/?ref=commonmain.dev) bridges the gap between JavaScript and native components. With the move to the New Architecture (TurboModules and Fabric), performance has improved significantly. - **Pros:** Massive library ecosystem (NPM) and a huge pool of available developers. - **Cons:** Managing the "bridge" can become a performance bottleneck in data-heavy applications. ### The "Killer Feature": Incremental Adoption The deciding factor for many senior engineers is **risk management**. If a Flutter or React Native project fails, you often have to rewrite the entire app. With KMP, you can start by sharing a single data model or an analytics library. If you don't like it, you haven't lost the native foundation of your app. ## 5\. The Essential KMP Tech Stack (2026) One of the greatest strengths of Kotlin Multiplatform is its vibrant library ecosystem. Unlike the early days of KMP, we now have a "standard stack" that is battle-tested and ready for production. To keep your app truly multiplatform, you must use libraries that support the `commonMain` source set. ### The Core Libraries Matrix For a quick start, these are the industry-standard choices for every major architectural layer. | **Layer** | **Recommended Library** | **Maintained by** | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | | Networking | [Ktor](https://ktor.io/?ref=commonmain.dev) | JetBrains | | Persistence | [Room](https://developer.android.com/kotlin/multiplatform/room?ref=commonmain.dev) or [SQLDelight](https://sqldelight.github.io/sqldelight/latest/?ref=commonmain.dev) | Google / Cash App | | Dependency Injection | [Koin](https://insert-koin.io/?ref=commonmain.dev) | [Arnaud Giuliani](https://github.com/arnaudgiuliani?ref=commonmain.dev) & Community | | Concurrency | [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html?ref=commonmain.dev) | JetBrains | | Serialization | [Kotlinx Serialization](https://github.com/Kotlin/kotlinx.serialization?ref=commonmain.dev) | JetBrains | | Image Loading | [Coil](https://coil-kt.github.io/coil/compose/?ref=commonmain.dev) or [Landscapist](https://github.com/skydoves/landscapist?ref=commonmain.dev) | Community | ### Networking: Ktor [Ktor](https://ktor.io/?ref=commonmain.dev) is an asynchronous HTTP client built entirely on Coroutines. It is engine-based, meaning it uses `OkHttp` on Android and `NSURLSession` (Darwin) on iOS automatically. **Why it wins:** It’s type-safe, highly extensible via plugins, and supports WebSockets and streaming out of the box. ### Persistence: SQLDelight vs. Room - [SQLDelight](https://cashapp.github.io/sqldelight/?ref=commonmain.dev)**:** Generates typesafe Kotlin APIs from your SQL statements. It is the "purist" choice for senior devs who want full control over their schema. - [Room Multiplatform](https://developer.android.com/kotlin/multiplatform/room?ref=commonmain.dev)**:** Google’s official persistence library now supports KMP. It’s an excellent choice for teams migrating from native Android who want to keep their existing DAO patterns. ### Dependency Injection: Koin [Koin](https://insert-koin.io/?ref=commonmain.dev) is a pragmatic, lightweight DI framework. Unlike Dagger/Hilt, it doesn't rely on heavy code generation, which makes it much faster to compile in a multiplatform context and easier to configure for iOS targets. ### Concurrency: Coroutines & Flow Multi-threading in KMP used to be a headache due to the old Kotlin/Native memory manager. In 2026, those days are gone. [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html?ref=commonmain.dev) provide a unified way to handle background work. Combined with **StateFlow** and **SharedFlow**, you can create reactive view models that SwiftUI and Jetpack Compose can observe natively. ### Serialization: Kotlinx.Serialization The official [Kotlinx Serialization](https://github.com/Kotlin/kotlinx.serialization?ref=commonmain.dev) library is the standard for parsing JSON. It works without reflection, which is a requirement for Kotlin/Native and ensures your app remains fast and lightweight on iOS. ## 6\. Architectural Patterns in KMP Choosing the right architecture in Kotlin Multiplatform dictates how much code you actually get to share. The golden rule is to push as much logic down into `commonMain` as possible, leaving the native UI layers as "dumb" rendering engines. ### The Shared ViewModel: MVVM vs. MVI Historically, KMP developers kept ViewModels platform-specific. In 2026, the industry standard is the **Shared ViewModel**, allowing you to share up to 85% of your presentation logic. But which pattern is best? - **MVVM (Model-View-ViewModel):** The traditional Android approach. While familiar, having multiple observable properties (e.g., `isLoading`, `userData`, `errorMessage`) can lead to race conditions when observed by different UI frameworks (Compose vs. SwiftUI). - **MVI (Model-View-Intent):** The preferred architecture for modern KMP. MVI enforces a **Unidirectional Data Flow (UDF)**. The UI sends "Intents" (actions) to the ViewModel, which emits a single, immutable `ViewState`. Because SwiftUI and Jetpack Compose are both declarative, consuming a single stream of state is infinitely safer and easier to debug. ### State Management: Bridging the Reactive Gap To pass state from KMP to your native UI, **Kotlin Coroutines and Flow** are the undisputed champions. You expose your MVI state as a `StateFlow`. However, Swift doesn't natively understand `StateFlow`. To solve this, the ecosystem relies on: - **SKIE (by Touchlab):** A compiler plugin that automatically bridges Kotlin Coroutines and Flows into native Swift `async/await` and `Combine` publishers. It eliminates the boilerplate of writing custom wrappers. - **KMP-NativeCoroutines:** An alternative library by Rick Clephas that generates Swift-friendly concurrency code from your Kotlin definitions. ### Navigation: Native vs. Shared Navigation is the hardest architectural decision in any cross-platform app. You have two main routes: #### 1\. Native Navigation (The Purist Approach) You handle navigation entirely in the platform layer. - **Android:** Jetpack Navigation. - **iOS:** Swift Navigation or `NavigationStack`. **Pros:** 100% native transitions and deep-linking integration. **Cons:** You have to write your routing logic twice. #### 2\. Shared Navigation (The Pragmatic Approach) You manage the backstack and routing inside `commonMain`. - [**Decompose**](https://arkivanov.github.io/Decompose/?ref=commonmain.dev)**:** The industry standard for enterprise apps. It handles lifecycle management and state preservation across configuration changes without depending on the UI framework. - [**Voyager**](https://voyager.adriel.cafe/?ref=commonmain.dev)**:** A pragmatic, Compose-first navigation library. If you are using Compose Multiplatform for your UI, Voyager is the easiest way to handle multiplatform routing. ## 7\. The Developer Experience (DX) & Tooling The KMP tooling landscape has matured significantly following the consolidation of JetBrains' IDE offerings. In 2026, the focus is on a unified, powerful development environment that handles the complexities of multi-platform compilation behind a seamless UI. ### The IDE: Unified IntelliJ IDEA & Android Studio With the discontinuation of Fleet, the ecosystem has returned to its roots in the [IntelliJ platform](https://www.jetbrains.com/idea/?ref=commonmain.dev). - **IntelliJ IDEA:** Following the 2025 "[Unified Release](https://www.jetbrains.com/help/idea/intellij-idea-single-distribution.html?ref=commonmain.dev)", IntelliJ IDEA now serves as the primary hub for KMP. The dedicated [Kotlin Multiplatform Plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform?ref=commonmain.dev) provides deep integration for iOS, Web, and Desktop targets, including integrated simulators and a sophisticated Swift interop debugger. - **Android Studio:** Still the powerhouse for mobile-first teams. It offers the best-in-class integration for the [Android Gradle Plugin (AGP)](https://developer.android.com/build/releases/about-agp?ref=commonmain.dev) and allows you to run your iOS app directly from the play button via the KMP plugin. ### Testing: The Power of `commonTest` One of the highest ROI features of KMP is shared testing. Instead of writing unit tests for your business logic in both JUnit (Android) and XCTest (iOS), you write them once in the `commonTest` source set. When you hit "Run," the Kotlin compiler executes these tests across all targets. - It runs as a JVM test for Android. - It compiles to a native binary and runs in the iOS simulator. - It runs in a V8 engine for Web/Wasm. ### CI/CD: Shipping Multiplatform Apps Continuous Integration for KMP requires a specific setup because **you cannot compile iOS binaries on a Linux or Windows machine.** To build the iOS `.framework` or `.xcframework`, your CI pipeline must run on macOS. 1. **The CI Provider:** Use a provider with macOS runners, such as [Bitrise](https://bitrise.io/?ref=commonmain.dev) or [GitHub Actions](https://github.com/features/actions?ref=commonmain.dev). 2. **The Build Matrix:** Run Android/JVM tests on cheaper Linux runners, and reserve the expensive macOS runners purely for the iOS compilation. 3. **Automation:** Use [Fastlane](https://fastlane.tools/?ref=commonmain.dev) to automate the deployment of your Android `.aab` to Google Play and your iOS `.ipa` to TestFlight directly from your Gradle tasks. ## 8\. The 2026 KMP Roadmap Kotlin Multiplatform is no longer a "new" technology - it is a foundational one. As we look ahead, three major themes define the future of the ecosystem: - **Kotlin 2.x and the K2 Compiler:** The new compiler has halved build times for multiplatform projects and enabled much smoother IDE performance when switching between `common` and `native` source sets. - **Agentic Development (**[**Project Air**](https://air.dev/?ref=commonmain.dev)**):** Following the pivot from Fleet, JetBrains is integrating "Agentic" workflows, where AI agents can autonomously refactor shared code and update platform-specific shims - directly into the IntelliJ environment. - **Kotlin/Wasm Dominance:** With WebAssembly reaching high maturity, KMP is becoming a top choice for high-performance web applications that require more power than standard JavaScript can provide. ## 9\. Resources & Community The best way to stay ahead in the KMP space is to immerse yourself in the community. - [**The Official KMP Documentation**](https://kotlinlang.org/docs/multiplatform.html?ref=commonmain.dev)**:** The definitive starting point for every developer. - **The KMP Newsletter:** Join hundreds of Kotlin engineers by subscribing to [commonMain.dev](https://commonmain.dev/kmp-newsletter/) for weekly deep dives into architecture, libraries, and industry news. - **Kotlin Slack:** Join the `#multiplatform` channel to chat directly with the engineers at JetBrains and Google. ## Posts ### Kotlin Multiplatform Newsletter #33 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-33/ Last updated: 2026-09-01T14:20:47.000Z We explore the launch of **Compose Multiplatform 1.12.0**, featuring new AI assistant integrations, upgraded web resource management, and refined desktop window controls. We also break down consuming SKIE Flows directly in SwiftUI, configuring KMP CI/CD pipelines with Xcode Cloud, and implementing physical page-curl animations in Compose. Plus, a look at Jetpack Compose 1.12's `MeshGradientPainter`, architectural enforcement via **Aalekh**, screen-capture protection with **ComposeShield**, and a remote Senior Mobile Engineer position at Fanatics. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Compose Multiplatform 1.12.0 Released](https://blog.jetbrains.com/kotlin/2026/08/compose-multiplatform-1-12-0/?ref=commonmain.dev) Compose Multiplatform 1.12.0 is out! This version brings new tooling for AI assistants, improvements to web resource management, and finer control over desktop window states. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. [Kotlin/Native desktop still doesn’t feel productive for real applications](https://www.reddit.com/r/Kotlin/comments/1w2bioe/kotlinnative%5Fdesktop%5Fstill%5Fdoesnt%5Ffeel%5Fproductive/?ref=commonmain.dev) I've been trying to use Kotlin/Native for desktop/CLI stuff, and honestly it feels like you get a native binary and then you're on your own. Basic things like logging, resource loading, decent file operations, and process execution are either missing or surprisingly painful. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Consuming SKIE Flows in SwiftUI](https://touchlab.co/skie-swiftui?ref=commonmain.dev) SKIE already makes the interop between Kotlin and Swift smooth, but SwiftUI adds a layer of complexity. We've included a series of extensions in SKIE to enable easy KMP usage from SwiftUI. [How to build a KMP Library using Xcode Cloud](https://darrylbayliss.net/how-to-build-a-kmp-library-using-xcode-cloud/?ref=commonmain.dev) One interesting issue I ran into early was making sure the KMP library could be built successfully using Xcode Cloud as part of my continuous integration process. I’m a fan of using Xcode Cloud since it’s relatively simple to setup and you get [25 hours of free compute](https://developer.apple.com/xcode-cloud/?ref=commonmain.dev) as part of Apple’s developer membership. [Building Music Vox Trainer: A Kotlin Multiplatform Music Theory App for Android and iOS](https://medium.com/@recipesforsoftware/building-music-vox-trainer-a-kotlin-multiplatform-music-theory-app-for-android-and-ios-846f0f596f45?ref=commonmain.dev) From a focused music theory exercise to a production-ready Kotlin Multiplatform application built with Compose Multiplatform ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Fun Animations with Mesh Gradients: Jetpack Compose 1.12](https://medium.com/@kevindesai777/fun-animations-with-mesh-gradients-jetpack-compose-1-12-0f708eed6c56?ref=commonmain.dev) We’ve always had APIs for linear and radial gradients in Jetpack Compose. But if you wanted a more complicated color blending API, there was nothing like that. Enter ****MeshGradientPainter** introduced in Jetpack Compose 1.12. [The Recompositions That Weren’t There!](https://medium.com/@qamar%5Fsafadi/the-recompositions-that-werent-there-d2cf429c47f2?ref=commonmain.dev) I recently went down a rabbit hole trying to understand why a production Compose screen felt heavier than it should. What started as a simple profiling session turned into something bigger. The Layout Inspector and the Memory Profiler were telling me two completely different stories about what was happening. This is what I found, what I fixed, and what I wish I’d known earlier. [Turning the page: a real page-curl on iOS with Compose Multiplatform](https://medium.com/@zeyad.gasser/turning-the-page-a-real-page-curl-on-ios-with-compose-multiplatform-608ffd4acbdd?ref=commonmain.dev) I build a diary app. The visual identity leans hard on a paper metaphor: cream pages, an ink-colored dark mode, handwriting in the margins. The interaction that sells the metaphor is the page turn. When you swipe to yesterday, the page should peel up under your finger like a real sheet of paper. A crossfade would remind you that you’re looking at a database. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Compose gradient generator**](https://composegradients.com/create?ref=commonmain.dev) Easily visualize and create compose gradients and copy the code into your projects. Now with mesh gradients available. - [**PageCurl for Compose Multiplatform**](https://github.com/Zeyad-37/pagecurl-cmp?ref=commonmain.dev) Page curl (page turn) effect for **Compose Multiplatform**: Android and iOS from one Kotlin codebase. - [**Mockzilla**](https://mockzilla.apadmi.dev/?ref=commonmain.dev) A compile safe solution for running and configuring a local Http server for your mobile apps. - [**Aalekh**](https://github.com/shivathapaa/Aalekh?ref=commonmain.dev) Aalekh is a Gradle plugin that extracts, visualizes, and enforces architectural rules across any Gradle multi-module project - Kotlin Multiplatform, Android, JVM, or any Gradle project. - [**ComposeShield**](https://github.com/abdo-essam/ComposeShield?ref=commonmain.dev) A lightweight, zero-overhead screen-capture protection library for Kotlin Multiplatform (Android & iOS) - [**MapLibre for Compose Multiplatform**](https://github.com/maplibre/maplibre-compose?ref=commonmain.dev) MapLibre Compose is a Compose Multiplatform wrapper around the [MapLibre](https://maplibre.org/?ref=commonmain.dev) SDKs for rendering interactive maps. You can use it to add maps to your Compose UIs across Android, iOS, Desktop, and Web. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. affiliate link ****Carrd** • ****Simple, free, fully responsive one-page sites for pretty much anything.** Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [Music Vox Trainer - Apps on Google PlayTrain music theory with interval drills and note-reading exercises.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon_v3-67e354ed-cd5b-44be-b799-f051c07cddfc.ico)Apps on Google PlayRecipes For Software![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/afGrrKbCA3N_lCCiMjBO9QyZfjD8hZfUi5MgbMIVwVZW_SmN7vnrpL_o6hX1xoU2GKRgckcYfu45W_KITa7FAw-s0-br30-f5a9b3f2-4b3a-4247-a5b7-b08e2594e715)](https://play.google.com/store/apps/details?id=pl.recipesforsoftware.musicvoxtrainer&ref=commonmain.dev) [GitHub - devuloopers/KNet: A modern, local-first network debugging and proxy tool for Desktop, Android, and iOS.A modern, local-first network debugging and proxy tool for Desktop, Android, and iOS. - devuloopers/KNet![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-8751e6c3-ba64-421f-bee1-7801fc5310c9.png)GitHubdevuloopers![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/KNet-5bad0f2a-4980-4dea-a158-4ca99fb344b8)](https://github.com/devuloopers/KNet?ref=commonmain.dev) [GitHub - snj07/req-lab: Open-Source Desktop API client built with Kotlin (KMP). HTTP requests, MCP Client, scripting, variables, collections, and Postman import — runs offline. Alternative to Postman/Insomnia.Open-Source Desktop API client built with Kotlin (KMP). HTTP requests, MCP Client, scripting, variables, collections, and Postman import — runs offline. Alternative to Postman/Insomnia. - snj07/req…![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-370066c8-b454-43ca-8c80-6c8967981f22.png)GitHubsnj07![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/req-lab-d270aa46-ebc1-4bf6-bb65-c066c258b4f1)](https://github.com/snj07/req-lab?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Software Engineer - Mobile (REMOTE)](https://job-boards.greenhouse.io/fanaticsfbg/jobs/4373906009?ref=commonmain.dev) at [Fanatics](https://www.fanaticsinc.com/?ref=commonmain.dev) We embrace principles of data-driven development, operational excellence, and continuous process optimization to deliver a stable, scalable platform. Central to our strategy is Kotlin Multiplatform, which empowers us to deliver high-quality features quickly and consistently across multiple ecosystems. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #32 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-32/ Last updated: 2026-08-25T13:00:21.000Z Five weeks remain to submit your project to the JetBrains Shipaton for a shot at the $30,000 prize pool and a Times Square billboard spot, supported by the new AI-ready "Koko" starter kit. We also break down how Kotlin/Native invokes iOS platform APIs directly without Swift bridges, walk step-by-step through porting JNI-bound Android libraries to KMP, and compare vertical versus horizontal architecture slicing. Plus, runtime accessibility debugging via **ComposeA11yScanner**, zero-reflection validation with **Valix**, and a remote Senior Mobile position at Fanatics. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Five weeks left to submit your app to the JetBrains Shipaton](https://kotlinlang.org/lp/shipaton/?ref=commonmain.dev) Build and ship a mobile app with KMP by Sep 30, compete for the Ship Kotlin Everywhere Award, $30,000 across three winners, top app goes on a Times Square billboard. Starter Guide, AI Guide, IntelliJ IDEA Ultimate and Junie access included. [Introducing the KMP Contest Starter Kit](https://kotlinfoundation.org/news/introducing-the-kmp-contest-starter-kit/?ref=commonmain.dev) We are thrilled to announce the KMP Contest Starter Kit (nicknamed “Koko”), a new open-source, AI-ready framework designed to help developers build and publish commercial-ready Android and iOS applications using Kotlin Multiplatform (KMP). [JetBrains Compose Multiplatform App Showcase](https://surveys.jetbrains.com/s3/Compose-Multiplatform-App-Showcase-Submission-Form?ref=commonmain.dev) We're looking for beautiful real-world apps built with Compose Multiplatform to feature on Kotlin and JetBrains websites, social media channels, in presentations, and across other promotional materials. If your app is live in production or available in public beta, we'd love to see it! The form takes about five minutes to complete. If your submission is selected, we'll get in touch to confirm all the details before anything is published. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. [IntelliJ vs Android Studio - Kotlin Multiplatform?](https://www.reddit.com/r/Kotlin/comments/1vuv71x/intellij%5Fvs%5Fandroid%5Fstudio%5Fkotlin%5Fmultiplatform/?ref=commonmain.dev) Looking at making an app using Kotlin Multiplatform, is it better to use IntelliJ or Android Studio for the development? I can see they both are supported natively, but what would be reasons to use one over the other? [Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App](https://www.youtube.com/watch?v=svQAKu30C18&ref=commonmain.dev) Struggling with how to break down a large mobile app project? Learn the difference between vertical and horizontal slicing and discover the best approach to tackle your app development efficiently. Understand why starting with shared infrastructure is crucial and how to structure your project for better maintainability and faster build times. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Torque Spec: Shared Form State and Validation in KMP](https://medium.com/@kmpbits/torque-spec-shared-form-state-and-validation-in-kmp-kmp-bits-f86bc0dad79f?ref=commonmain.dev) My validation rules were already shared. That part I had right years ago: `ValidateEmailUseCase`, `ValidatePasswordUseCase`, plain Kotlin in `commonMain`, called from a shared ViewModel that drove both the Compose screen and the SwiftUI one. One rule, one place, both platforms. If you had asked me whether form validation was a solved problem in my apps, I would have said yes. [No Swift, No Bridge: How Kotlin Multiplatform Calls Native iOS APIs Directly](https://medium.com/@princevala%5Fofficial/how-kotlin-multiplatform-kmp-lets-you-write-ios-code-in-kotlin-a4d01425298d?ref=commonmain.dev) While working on a Kotlin Multiplatform (KMP) project, I was spending time inside the `composeApp/iosMain` source set when I noticed something that genuinely caught my attention: I was writing iOS-specific code directly in Kotlin. No Swift file, no switching languages, just Kotlin. And if you’re thinking this is simply another cross-platform approach where platform-specific code works through a bridge, similar to Flutter or React Native, that’s not what’s happening here. [Taking a Native Android Library to Kotlin Multiplatform, Step by Step](https://medium.com/@lucf15/taking-a-native-android-library-to-kotlin-multiplatform-step-by-step-04785b1577e5?ref=commonmain.dev) A concrete, in-order walkthrough for turning a JNI-only Android library into a Kotlin Multiplatform one, using `TiffRenderer`'s actual files as the worked example at every step. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [CountryCodeKit Compose](https://github.com/tharukack/countrycodekit?ref=commonmain.dev) A polished country calling-code picker for Compose Multiplatform. Search countries, display recent selections, format input, and validate phone numbers locally on Android and iOS. [ComposeA11yScanner](https://github.com/mohdaquib/ComposeA11yScanner?ref=commonmain.dev) ComposeA11yScanner is a debug-only runtime scanner that finds accessibility issues in Jetpack Compose and highlights them directly on the rendered UI. Inspect the affected element, understand the problem, and see a suggested fix without leaving the app. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Coroutine Leak Detector**](https://github.com/Godark14/coroutine-leak-detector?ref=commonmain.dev) Android Studio plugin that catches common Kotlin coroutine and Flow mistakes (leaks, ANRs, flaky tests) with context-aware quick fixes. - [**Valix**](https://github.com/DeveloperSyndicate/Valix?ref=commonmain.dev) Compile-time generated, zero-reflection validation framework for Kotlin using KSP. Type-safe validation for Android, Ktor, Spring, Micronaut, and Kotlin Multiplatform. - [**TiffRenderer**](https://github.com/lucf15/TiffRenderer?ref=commonmain.dev) A Kotlin Multiplatform library for decoding and rendering TIFF images — Android, iOS, and JVM/desktop — including multi-page/multi-directory TIFFs, on top of `libtiff`. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. affiliate link ****Carrd** • ****Simple, free, fully responsive one-page sites for pretty much anything.** Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [SlipgateA console-style game select screen that boots classic id Tech games, each engine compiled to WebAssembly and driven from a single Kotlin Multiplatform host.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-b8ae181a-624b-4547-9f6f-0d67421796ed.png)![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/cover_mars-c8a32912-5324-47a7-8cb4-89c6fc640a7d.webp)](https://slipgate.vercel.app/?ref=commonmain.dev) GitHub link available [here](https://github.com/jacksonfdam/slipgate?ref=commonmain.dev). [splitcash — Split Expenses with FriendsThe easiest way to split expenses with friends, flatmates, family or travel buddies — even if they don’t have the app. 100% Offline. 150+ Currencies. Available Worldwide. Made for real life![](https://static.ghost.org/v5.0.0/images/link-icon.svg)splitcash![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/featureGraphic-352e0a2f-ce5c-4068-be20-eec5109dbb77.png)](https://splitcash.app/?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Software Engineer - Mobile (REMOTE)](https://job-boards.greenhouse.io/fanaticsfbg/jobs/4373906009?ref=commonmain.dev) at [Fanatics](https://www.fanaticsinc.com/?ref=commonmain.dev) We embrace principles of data-driven development, operational excellence, and continuous process optimization to deliver a stable, scalable platform. Central to our strategy is Kotlin Multiplatform, which empowers us to deliver high-quality features quickly and consistently across multiple ecosystems. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #31 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-31/ Last updated: 2026-08-18T13:00:51.000Z `klibs.io` crosses 4,200+ indexed KMP projects with enhanced AI discovery, Kotlin 2.4 spotlights Collection literals, Swift Export, and SPM import, and we break down architecting hybrid on-device vs. cloud AI pipelines in shared code. We also explore automatic UI skeleton loading in Compose, build-time `@Preview` generation with `Pose`, IDE-style window docking, and reading Excel spreadsheets in pure Kotlin with `Kexcel`. Plus, a Senior Mobile Engineer opening at Bayer Global. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Klibs.io Grows to 4,200+ KMP Projects With Smarter Discovery and New AI Integrations](https://blog.jetbrains.com/kotlin/2026/08/klibsio-grows-to-4200-kmp-projects-with-smarter-discovery-and-new-ai-integrations/?ref=commonmain.dev) When we introduced klibs.io in December 2024, the goal was simple: make it easier to find a Kotlin Multiplatform library that fits both your use case and target platforms. Since then, klibs.io has grown into a catalog of more than 4,200 KMP projects – and discovering new libraries has become even easier. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. [What’s New in Kotlin 2.4 | Featuring: Collection literals | Swift Export | SPM import](https://www.youtube.com/watch?v=RI4J0C2%5FFR8&ref=commonmain.dev) Kotlin 2.4 is packed with some especially nice features and improvements from the Kotlin team. From language updates, to standard library additions, and finally platform-specific updates, this video will make sure you’re in the know! ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Integrating on-device and cloud AI in a Kotlin Multiplatform app](https://blog.watermelonkode.com/routing-modes-are-not-a-routing-policy-9feccfac2ae7?ref=commonmain.dev) This is the third article in a loose series on making correctness checkable. The previous one covers the fixtures, scoring layers, and evaluation harness behind the numbers here. This piece is about the architecture those measurements informed. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Lights Out: Automatic Skeleton Loading in Compose Multiplatform](https://medium.com/@kmpbits/lights-out-automatic-skeleton-loading-in-compose-multiplatform-kmp-bits-75a17db09327?ref=commonmain.dev) I already had a shimmer effect working. A small composable called `ShimmerBox`, copied from project to project for a couple of years, doing the one job it was built for: a gray box with a moving gradient, dropped in wherever a screen needed to look like it was loading. It worked. Nobody had ever complained about it, and I took that as proof it was fine. I decided to pull it out into a real library, something I could publish and reuse properly instead of pasting the same forty lines into every new app. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**AdMob CMP**](https://github.com/Meet-Miyani/admob-compose-multiplatform?ref=commonmain.dev) Plug-and-play Compose Multiplatform AdMob SDK for Android GMA Next-Gen and iOS Google Mobile Ads. - [**Skeletal**](https://github.com/kmpbits/skeletal?ref=commonmain.dev) Automatic loading skeletons for Compose Multiplatform. Wrap your existing composables — no parallel skeleton UI to build or maintain. - [**Pose**](https://github.com/AkshayChordiya/Pose?ref=commonmain.dev) Auto-generate Jetpack Compose `@Preview` functions from your `@Composable` code at build-time, deterministic, offline, no LLM. - [**Compose Docking**](https://github.com/sproctor/compose-docking?ref=commonmain.dev) IDE-style window docking for Compose Multiplatform: splits, tab groups, drag-to-dock with docking handles, floating windows, maximize, and layout persistence. - [**materialKolor**](https://github.com/jordond/MaterialKolor?ref=commonmain.dev) A Compose Multiplatform library for creating dynamic Material Design 3 color palettes from any color. - [**Kexcel**](https://github.com/ShreyashKore/kexcel?ref=commonmain.dev) Read and write Excel (`.xlsx`) spreadsheets from Kotlin Multiplatform — pure Kotlin, no Apache POI. - [**kmp-zip**](https://github.com/henrik242/kmp-zip?ref=commonmain.dev) Kotlin Multiplatform ZIP and GZIP library for JVM, iOS, macOS, Linux, Windows, and Kotlin/Wasm (wasmJs) targets, with encryption support. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. affiliate link ****Carrd** • ****Simple, free, fully responsive one-page sites for pretty much anything.** Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [GitHub - CharlieTap/mood: A Kotlin Multiplatform Doom implementationA Kotlin Multiplatform Doom implementation. Contribute to CharlieTap/mood development by creating an account on GitHub.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-11d3f431-9a75-4f89-9778-f86ebe2108c1.png)GitHubCharlieTap![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/mood-60588feb-4d12-4b79-a254-40ab3947c7c3)](https://github.com/CharlieTap/mood?ref=commonmain.dev) [GitHub - NucleusFramework/EdgeTranslator: Offline Ai translator for desktopOffline Ai translator for desktop. Contribute to NucleusFramework/EdgeTranslator development by creating an account on GitHub.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-d16c7b69-6deb-4537-ab3b-213e039165fb.png)GitHubNucleusFramework![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/EdgeTranslator-168c5b20-6718-4ad6-9faa-05f2879de63c)](https://github.com/NucleusFramework/EdgeTranslator?ref=commonmain.dev) [GitHub - Otacon/Kassette: A Kotlin Multiplatform NES emulatorA Kotlin Multiplatform NES emulator. Contribute to Otacon/Kassette development by creating an account on GitHub.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-9666f86a-dd83-4f25-886a-3897b076fa30.png)GitHubOtacon![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/Kassette-2904d091-ff0f-41d2-8e8f-0461a1bea9ab)](https://github.com/Otacon/Kassette?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Engineer Mobile](https://jobs.bayer.com/job/Residence-Based-Senior-Engineer-Mobile-Resi/1426687733/?ref=commonmain.dev) at [Bayer Global](https://www.bayer.com/en/?ref=commonmain.dev) Are you motivated by solving real-world problems that impact farmers and help protect the world's food supply? Digital Farming Solutions at Bayer is looking for a Senior Mobile Engineer to join one of our regional, dynamic product delivery teams working in cloud-based distributed environments. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #30 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-30/ Last updated: 2026-08-11T13:00:26.000Z We debate using native SwiftUI over Compose UI on iOS to shrink app binary sizes from \~100 MB down to 8 MB, evaluate why choosing KMP over React Native is an architecture bet rather than a framework preference, and track down a memory leak in JetBrains Jewel’s `LazyTree`. We also look at pairing Gemini Nano with Apple Intelligence in Compose, OCR scanning using ML Kit and Vision, parameter instability pitfalls under Strong Skipping Mode, and cross-platform home screen widgets using **WARP**. Plus, a foundational Senior KMP role at Yonder Media Mobile. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. [I don't think shared Compose Multiplatform UI is the future for iOS (yet)](https://www.reddit.com/r/Kotlin/s/MdKRKq7BTL?ref=commonmain.dev) I'm still using Kotlin Multiplatform for business logic, networking, database, etc., but I no longer share the UI. Android uses Compose. iOS is built entirely in SwiftUI while calling shared Kotlin through a shared module. The difference has been huge. The new iOS app is around ****8–10 MB** instead of \~100 MB, and the experience finally feels like a proper iOS app. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Yet Another Way to KMP: One Pattern, Three Seams](https://blog.watermelonkode.com/yet-another-way-to-kmp-one-pattern-three-seams-8435459b8d88?ref=commonmain.dev) The last article ended on a claim: isolate the platform API behind a small interface in `commonMain`, and everything above it can be written once. That result came from porting a 2012 Objective-C iOS app into shared Kotlin and standing up Android alongside it. Good outcome — but a single data point, and one where I controlled the scope. So I did it again, deliberately choosing a project that would stress the parts the first one didn’t. [Why We Chose KMP Over React Native: It’s an Architecture Bet, Not a Framework Preference](https://medium.com/@Y4583L/why-we-chose-kmp-over-react-native-its-an-architecture-bet-not-a-framework-preference-e9ad0a7dffd5?ref=commonmain.dev) For a long time, React Native was the go-to answer. On paper, it sounds great: write JavaScript once, leverage a huge web ecosystem, and ship features fast. But once your app grows, the reality hits. React Native forces you to wrap your entire mobile application inside a JavaScript runtime engine. When we re-evaluated our long-term mobile strategy, we realized we didn’t want a framework that forces us to compromise on native quality just to save time. We wanted an architecture that actually scales. [The One-Liner That Was Eating Our Memory](https://touchlab.co/the-one-liner-that-was-eating-our-memory?ref=commonmain.dev) The JetBrains [Jewel](https://github.com/JetBrains/intellij-community/tree/master/platform/jewel?ref=commonmain.dev#readme) project recently got a report of a supposed memory leak in the `LazyTree` `Composable`. Thankfully, the issue had a minimal reproducer that we could use to investigate this weird behavior. But the reproducer by itself is not enough, to effectively check if there are any memory leaks going on, we need specific tooling. [One Codebase, Two On-Device Brains: Gemini Nano and Apple Intelligence in Compose Multiplatform](https://medium.com/@Y4583L/one-codebase-two-on-device-brains-gemini-nano-and-apple-intelligence-in-compose-multiplatform-7f785dec5dfc?ref=commonmain.dev) Jibify’s rule has always been the same: AI runs on the phone by default, and the cloud is only a fallback. That rule didn’t change when I moved to Compose Multiplatform. What changed is that “the phone” now means two very different phones. [Scanning bus stop codes with ML Kit and Vision in the GalwayBus Compose Multiplatform app](https://johnoreilly.dev/posts/galwaybus-scan-stop-kmp/?ref=commonmain.dev) In this article we’ll look at how that’s put together: the `expect`/`actual` camera scanner, the per-platform OCR implementations, and how we match the recognised text to a stop. [The 7% You Can’t Share](https://medium.com/@shivathapaa/the-7-you-cant-share-e30ed2a7b528?ref=commonmain.dev) A Compose Multiplatform app can share 93% of its code and still meet the platform in two places nothing abstracts away — native vendor SDKs, and the physical device. The finale is about engineering that edge so it fails loudly instead of rotting in silence. [The challenge of adding a Web target to DroidconKotlin](https://touchlab.co/adding-web-target-to-droidcon?ref=commonmain.dev) It took a while for all the dependencies to be in place, but once support was available (especially SQLDelight support) we were finally able to add support for browsers. In this post we wanted to go over the difficulties and intricacies of adding web support to our project. [Same Car, Every Time: Deterministic Feature Module Generation in KMP](https://medium.com/@kmpbits/same-car-every-time-deterministic-feature-module-generation-in-kmp-kmp-bits-65191dbbd733?ref=commonmain.dev) Feature modules are a spec series. I want every one of mine built to the same jig, so that when a module behaves oddly I know it’s the code I wrote and not the scaffold it arrived in. It took me a while, and one AI-generated codebase, to work out that I’d been running Formula 1. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Stop Ignoring Compose Stability (Yes, Even with Strong Skipping Mode)](https://blog.shreyaspatil.dev/stop-ignoring-compose-stability-yes-even-with-strong-skipping-mode/?ref=commonmain.dev) In this post, we’ll look at how Strong Skipping Mode actually compares parameters under the hood 🔬 and demonstrate with a live demo (using `List` as a primary example) why unstable parameters can still cause unnecessary recompositions 🔄. [Yaru Compose UI](https://github.com/NucleusFramework/yaru-compose-ui?ref=commonmain.dev) A Compose Multiplatform port of [yaru.dart](https://github.com/ubuntu/yaru.dart?ref=commonmain.dev), Ubuntu's design system. It brings the GNOME/Yaru design language — widgets, accent variants, the Ubuntu font — to Android, iOS, Desktop and Web through Compose Multiplatform. [From God ViewModel to Composed Screen Logic](https://yvesandmobile.substack.com/p/from-god-viewmodel-to-composed-screen) When building a Compose UI, passing a ViewModel deep into the UI makes components less reusable because they become tied to one ViewModel type, and therefore to one screen. It also makes them harder to test in isolation and can break previews because previews are not meant to recreate the real runtime environment of the app. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**WARP**](https://github.com/DevAtrii/Warp?ref=commonmain.dev) Widget Abstraction & Rendering Pipeline for **Kotlin Multiplatform**. Write home screen widgets once in Kotlin — render natively on Android (Glance) and iOS (WidgetKit + SwiftUI). - [**Grafima**](https://github.com/Kyriakos-Georgiopoulos/Grafima?ref=commonmain.dev) Charts for Compose Multiplatform. Android, iOS and desktop, one codebase. Five chart types (bar, line, pie, radar, gauge) drawn on `Canvas`, animated, and accessible by default. - [**audio-stream-player**](https://github.com/adrianczuczka/audio-stream-player-kmp?ref=commonmain.dev) Low-latency raw PCM streaming audio player for Kotlin Multiplatform (Android, iOS, macOS) - [**Kmemo**](https://github.com/NaCode-Studios/Kmemo?ref=commonmain.dev) Kotlin Multiplatform semantic cache for LLM calls: eleven guards against false cache hits, measured on blind corpora, coroutine-first. - [**Kamera**](https://github.com/Kashif-E/Kamera?ref=commonmain.dev) A modern camera library for Compose Multiplatform supporting Android, iOS, and Desktop with a unified API. - [**Kim - Kotlin Image Metadata**](https://github.com/StefanOltmann/kim?ref=commonmain.dev) Kim is a Kotlin Multiplatform library for reading and writing image metadata. - [**Pikto**](https://github.com/daniatitienei/pikto?ref=commonmain.dev) A Compose Multiplatform photo gallery library. Read the device photo library, show thumbnails, play videos and delete assets, all from `commonMain`. One Kotlin Multiplatform API over MediaStore on Android and PhotoKit on iOS. - [**KitFlow**](https://github.com/vedangj72/KitFlow?ref=commonmain.dev) KitFlow helps you create responsive layouts across Android, iOS, Desktop and Web with a simple adaptive API. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. affiliate link ****Carrd** • ****Simple, free, fully responsive one-page sites for pretty much anything.** Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [Hourly Journal - Hourly Mood Tracker & Micro Journaling AppHourly Journal is a calm hourly check-in journal for mood, voice journaling, photos, energy and stress. Micro journaling on Android & iOS.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/logo-598b0bec-c063-455f-8973-9f39790bd638.webp)Hourly JournalCoding Guruji![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/logo-65d85a13-8ef2-414e-8109-20fdb6918032.webp)](https://hourlyjournal.app/?ref=commonmain.dev) [GitHub - ber4444/motoman-kmp: Kotlin Multiplatform 3D motorcycle racing game — shared engine and OpenGL ES renderer, Compose Multiplatform HUD.Kotlin Multiplatform 3D motorcycle racing game — shared engine and OpenGL ES renderer, Compose Multiplatform HUD. - ber4444/motoman-kmp![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-91fd4193-7530-4435-b1c4-5971a7a55612.png)GitHubber4444![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/motoman-kmp-29443383-dcb8-484a-81fd-24a0be2de060)](https://github.com/ber4444/motoman-kmp?ref=commonmain.dev) [GitHub - joreilly/GalwayBus: Galway Bus Kotlin Multiplatform project using Jetpack Compose and SwiftUIGalway Bus Kotlin Multiplatform project using Jetpack Compose and SwiftUI - joreilly/GalwayBus![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-1fee301c-98a3-4452-ae36-ae1e5f3bc63f.png)GitHubjoreilly![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/GalwayBus-d91e4982-1a55-4a46-8987-c8cdc8403fab)](https://github.com/joreilly/GalwayBus?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Kotlin Multiplatform Engineer - YOnC SDK](https://yomobile.bamboohr.com/careers/190?ref=commonmain.dev) at [Yonder Media Mobile](https://yondermediamobile.com/?ref=commonmain.dev) Yo is building an AI inference platform that runs directly on smartphones - turning the phone in your pocket into part of a global AI network. The mobile SDK that ships this to Android and iOS devices is moving to a shared core built in Kotlin Multiplatform, replacing what was previously two separate native codebases. This is a foundational hire on a KMP effort that is just getting started. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #29 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-29/ Last updated: 2026-08-04T13:00:18.000Z 🏖️ commonMain.dev is on vacation this week. But don’t worry, nothing will be lost. Next issue will include all the news from the previous two weeks. Hey KMP community! This week, we’re putting the newsletter on `suspend`. The editor is detached from the main thread, stepping away from the IDE, and recharging somewhere with zero build errors. There won’t be a curated list in your inbox today. But don't worry, we’ll return to our regularly scheduled `commonMain` updates next week! In the meantime, take this as your official sign to step away from the IDE, close those 40 open browser tabs, and run a quick garbage collection on your own stress levels. Take some time off to recharge! See you next Tuesday, when we resume with everything you missed. ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/07/kodee-on-the-beach-4x-resized-1-1-1.png) Kodee relaxing on the beach under an umbrella, sipping from a drink. Until next time, **Stay platform-independent!** Bogdan • Founder of commonMain.dev ### Kotlin Multiplatform Newsletter #28 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-28/ Last updated: 2026-07-28T13:00:18.000Z JetBrains and RevenueCat team up for the Ship Kotlin Everywhere Shipaton! We also examine two remarkable real-world KMP transformations: building Multidex across three targets using Kotlin 2.4 and Material 3 Expressive, and how GeoKrishi Farm scaled from a meager 848 shared lines to a 93% shared codebase across 46 modules. Plus, an 8x RPG engine speedup by migrating Compose Canvas to Google Filament, locale-aware formatting in `commonMain` via Klocale, and a Senior Kotlin role at Accesa. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Ship Kotlin Everywhere (JetBrains x RevenueCat Shipaton)](https://kotlinlang.org/lp/shipaton/?ref=commonmain.dev) Reuse the Kotlin you know to build and launch a real app across Android, iOS, desktop, and web. Then compete for the Ship Kotlin Everywhere Award. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link — supports the newsletter at no extra cost to you ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [One Kotlin codebase, three platforms: building Multidex with Compose Multiplatform](https://kunal26das.github.io/blog/multidex-kotlin-multiplatform/?ref=commonmain.dev) Multidex is a Pokédex app that ships to Android, iOS and Desktop (JVM) from one Kotlin codebase — Kotlin 2.4, Compose Multiplatform 1.9, Material 3 Expressive. It's live on Google Play, and this post is the honest write-up I wish I'd read before starting: how the modules are cut, what shared beautifully, and where the platform seams still show. [We Called Our App Multiplatform. 848 Lines Actually Were](https://medium.com/@shivathapaa/we-called-our-app-multiplatform-848-lines-actually-were-01d95643cb3f?ref=commonmain.dev) This series is the story of the rebuild: how GeoKrishi Farm went from that number to 46 Gradle modules with 93% measured shared code, live on both stores, without users ever noticing the swap. This first part is the case study — what the fork looked like, why it happened to a reasonable team, and what the rebuild changed, in numbers I can defend line by line. [Fuel Strategy: Paging in Compose Multiplatform](https://medium.com/@kmpbits/fuel-strategy-paging-in-compose-multiplatform-kmp-bits-c238a239219d?ref=commonmain.dev) That’s paging. You don’t pull four thousand rows into memory because the user might scroll that far. You pull thirty, and you pull the next thirty while they’re still reading the first ones. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Evolving my Pure Kotlin & Compose RPG Engine: Migrating world rendering to Filament for an 8x performance boost](https://www.reddit.com/r/Kotlin/comments/1v5afcz/evolving%5Fmy%5Fpure%5Fkotlin%5Fcompose%5Frpg%5Fengine/?ref=commonmain.dev) While pure Compose Canvas was an incredible playground for prototyping the engine and keeping everything strictly in Kotlin, expanding the tilemap, weather, and dynamic lighting eventually pushed me into a hard bottleneck on the CPU. To fix this without breaking the live game or throwing away my canvas codebase, I decided to overhaul the world rendering pipeline and migrate it to ****Google Filament**. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Klocale**](https://github.com/andreadellaporta01/klocale?ref=commonmain.dev) Comprehensive, locale-aware number and value formatting for Kotlin Multiplatform — the missing `NSNumberFormatter` / `Intl.NumberFormat` / ICU `NumberFormat` equivalent usable straight from `commonMain`, with consistent output across every target. - [**Andy**](https://github.com/j-roskopf/Andy?ref=commonmain.dev) Andy is a desktop helper for Android, Kotlin, and Compose Multiplatform developers. Use it to manage devices and emulators, mirror screens, inspect apps, and drive day-to-day mobile workflows from one place. - [**CloudBridge**](https://github.com/jacobras/CloudBridge?ref=commonmain.dev) Multiple clouds, one Kotlin Multiplatform bridge. Supporting Android, iOS, web and desktop (JVM). - [**log4k**](https://github.com/smyrgeorge/log4k?ref=commonmain.dev) A robust, event-driven logging and tracing platform specifically designed for Kotlin Multiplatform (also compatible with the Java ecosystem). Built with coroutines and channels at its core, it offers asynchronous, scalable logging across multiple platforms. - [**KSafe**](https://github.com/ioannisa/KSafe?ref=commonmain.dev) A library for saving key/value pair data for Kotlin Multiplatform and Android. Encryption enabled by default, with option for Plain (unencrypted) storage. Supports Property Delegates, Flow/StateFlow, with Jetpack Compose and biometrics integration using hardware-backed encryption. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. affiliate link — supports the newsletter at no extra cost to you ****Carrd** • ****Simple, free, fully responsive one-page sites for pretty much anything.** Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [Multidex – Pokédex & Dex Guide - Apps on Google PlayFast offline Pokédex app — search every Pokémon, moves, types, stats & shinies![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon_v3-65872004-5986-4a76-ba99-f79606c2384b.ico)Apps on Google PlayKudos Labs![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/ip4XgE2857Wrpj1XzA2AKRv8KH9jcfIu45w0NGaDD4c1TWL0wNq2ZxcC03-Vt9qCgT2IX9OEew9WAtyi6haCa0Q-2cbf244a-96c0-4fee-a398-12a2b55ed565)](https://play.google.com/store/apps/details?id=io.github.kunal26das.multidex&ref=commonmain.dev) [Adventurers Guild: RPG Sim - Apps on Google PlayBuild your guild, recruit heroes, hunt monsters. Offline fantasy RPG simulator![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon_v3-fa5420c5-d83c-4214-86c5-29edc5a6a6fa.ico)Apps on Google PlayVimal Das![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/a-taPXdxjypGis97xjHRw3j66HOhCg5WevFqzhyFc4fwM2s_jzir3m2Gom35h-iTPkHHbBH6jgXawr9WaJqJ-e652cebf-6c92-4997-9168-74e7cdbc561a)](https://play.google.com/store/apps/details?id=com.vimal.dungeonbuilder&ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link — supports the newsletter at no extra cost to you ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Mobile Software Engineer with Kotlin](https://jobs.smartrecruiters.com/ACCESA/744000139994404-senior-mobile-software-engineer-with-kotlin?ref=commonmain.dev) at [Accesa](https://accesa.eu/?ref=commonmain.dev) (Remote) We are looking for a Senior Kotlin Developer who is experienced in Kotlin Multiplatform delivery, comfortable owning complex shared modules in a layered architecture, and motivated by the challenge of building the reliable, platform-agnostic foundation that modern retail operations depend on. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #27 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-27/ Last updated: 2026-07-21T13:00:44.000Z We explore unified Feature Flags and Remote Config to eliminate platform-specific discrepancies, build a complete Ktor + Firebase Auth authentication store, and check out an AI milestone: shipping a full KMP app in seven Claude Code commands. We also break down a clever hack to shrink Compose Desktop apps by 10x using WebAssembly and Tauri, navigate iOS UI trade-offs, and feature a foundational Senior KMP Engineer role building the YOnC SDK at Yo. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link — supports the newsletter at no extra cost to you ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Change the Map: Feature Flags and Remote Config in Kotlin Multiplatform](https://medium.com/@kmpbits/change-the-map-feature-flags-and-remote-config-in-kotlin-multiplatform-kmp-bits-44537b1cce8e?ref=commonmain.dev) Feature flags are the same dial for an app. Turn a broken feature off without an App Store review cycle. Roll a change out to ten percent of users and watch what happens before committing the rest of the field. The trap in KMP is building that dial twice, once per platform, with two different opinions about what “on” means. I want one flag evaluation that both platforms trust, because a flag that reads differently on Android and iOS isn’t a flag anymore, it’s a bug with a config file attached. [Practical Kotlin Multiplatform: Setting up the Kotlin Multiplatform Networking Module with Ktor](https://joebirch.co/android/practical-kotlin-multiplatform-setting-up-the-kotlin-multiplatform-networking-module-with-ktor/?ref=commonmain.dev) In this part of the book, we’ll build the complete authentication remote store, defining a repository that handles every operation our app needs for managing user accounts. We’ll be using Ktor as our networking library and Firebase Authentication’s REST API as our backend, giving us a way to sign users up, sign them in, and manage their accounts from our shared code. [The full KMPilot walkthrough: an Android + iOS app from seven Claude Code commands, every prompt and timing included](https://proandroiddev.com/seven-claude-code-commands-one-kotlin-multiplatform-app-on-android-and-ios-cb01e920a3e6?ref=commonmain.dev) This post is the whole build with nothing cut from the record: Loupe, an art gallery for the Art Institute of Chicago’s public-domain collection. Every prompt I typed is in this post, and every timing counts active work only. [How to Shrink Your Compose Desktop App by 10x](https://gist.github.com/terrakok/bb876b257adfdedffdd6fda98457c8ce?ref=commonmain.dev) If you want a sleek, ultra-lightweight desktop app without ditching your Kotlin Compose codebase, there is a brilliant hack: compile your app to WebAssembly (WASM) and wrap it inside Tauri. Tauri leverages the system's native WebView and a lightweight Rust backend, dropping your app's footprint down to just a few megabytes. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Artboard](https://github.com/crowded-libs/artboard?ref=commonmain.dev) Artboard is a spatial browser gallery for Compose Multiplatform `@Preview`s. It discovers previews with KSP, renders them on a pan-and-zoom Kotlin/Wasm board, and gives every frame a stable URL-addressable ID. [I Built JetBrains’ Official Liquid Glass Setup, Then Deleted It](https://medium.com/@shivathapaa/i-built-jetbrains-official-liquid-glass-setup-then-deleted-it-6c2f43011939?ref=commonmain.dev) Compose Multiplatform can’t render iOS 26’s Liquid Glass. The documented fix hands navigation to SwiftUI. Here’s the narrower trade I shipped instead — and what it cost. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**kotlinx-datetime-names**](https://github.com/adrcotfas/kotlinx-datetime-names?ref=commonmain.dev) A Kotlin Multiplatform library that provides localized display names for kotlinx-datetime types. - [**LazySurface**](https://github.com/07jasjeet/LazySurface?ref=commonmain.dev) Build 2D surfaces where items say *who they sit next to*, not where they are. Lazy, on every Compose platform. - [**KMP Logger**](https://github.com/shivathapaa/KMP-Logger?ref=commonmain.dev) A lightweight, structured logging library for Kotlin Multiplatform projects with support for Android, and iOS. - [**TextKit**](https://github.com/jjrodcast/TextKit?ref=commonmain.dev) A rich text editor engine for Compose Multiplatform, targeting Android, iOS, Web (Wasm/JS), and Desktop (JVM). Built on a rope-backed piece-table architecture for efficient O(log n) text editing, it supports formatting (bold, italic, underline, strikethrough, highlight), links, colors, headings, ordered/bullet/task lists, and blockquotes. - [**multibase**](https://github.com/a-sit-plus/multibase?ref=commonmain.dev) 100% Kotlin Multiplatform Multibase Encoder/Decoder. ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link — supports the newsletter at no extra cost to you ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Kotlin Multiplatform Engineer - YOnC SDK](https://yomobile.bamboohr.com/careers/190?ref=commonmain.dev) at [Yo](https://yondermediamobile.com/?ref=commonmain.dev) **Remote* This is a foundational hire on a KMP effort that is just getting started. You will help build the shared core from the ground up and shape its public API alongside the existing Android and iOS engineers. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #26 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-26/ Last updated: 2026-07-14T13:00:59.000Z We explore how Kraken Technologies slashed their average Gradle build times by 70% using the Dependency Analysis Gradle Plugin, and dive into the undocumented compiler rules of advanced `expect`/`actual` declarations. We also break down the performance tax of `BoxWithConstraints` by digging into Compose's `SubcomposeLayout` API, outline migrating multimodule projects to Koin Annotations, and highlight a Senior Mobile KMP position at Accesa. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. [The History of Kodee, Kotlin's Mascot](https://blog.jetbrains.com/research/2026/07/the-history-of-kodee/?ref=commonmain.dev) Bringing Kodee to life wasn’t just a design challenge; it was a deeply collaborative effort by the Kotlin Marketing team, together with the Design and Strategic Research teams at JetBrains. The project’s goal was to create a mascot that truly resonated with the developer community. [Is Kotlin becoming too bloated? Why I am sticking to a "Minimalist" subset of the language](https://www.reddit.com/r/Kotlin/s/dZ3eQUSEiE?ref=commonmain.dev) I really think a language should be simple and powerful, not bloated with endless concepts. Anyone else intentionally keep their Kotlin simple just to stay sane? Or am I missing something? ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link — supports the newsletter at no extra cost to you ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [The Same System: Advanced expect/actual in KMP](https://www.kmpbits.com/posts/expect-actual-advanced-kmp?ref=commonmain.dev) That is `expect`/`actual`, and it is the closest thing KMP has to a signature move. You declare the position once in `commonMain`. Each platform fields its own player. The trivial version, an `expect fun` with a one-line `actual` on each side, gets shown in every intro tutorial and it is genuinely easy. This article is about what happens after that, when you start declaring classes, constructors, and typealiases, and the compiler starts enforcing rules that the tutorials never mention. [Kotlin DSL Deep Dive: From Gradle Scripts to Building Your Own](https://proandroiddev.com/kotlin-dsl-deep-dive-from-gradle-scripts-to-building-your-own-8e08a1471467?ref=commonmain.dev) What `.kts` files actually are, why Gradle’s `dependencies { }` is just a function call, and how to build a working HTML DSL from scratch [How to use Koin Compiler in a Multimodule Project?](https://blog.insert-koin.io/how-to-use-koin-compiler-in-a-multimodule-project-6bd8e57d5e4b?ref=commonmain.dev) Today we’re diving into how to use the Koin Compiler in a Compose Multiplatform multi-module project. In the previous article, we explored how to migrate a multimodule setup to Koin Annotations, using a convention Gradle plugin to move forward in small, safe steps. We’ll follow that same approach diving deep into a project called MovieDB-App. [Cut build time by 70% in your KMP projects with the Dependency Analysis Gradle Plugin](https://autonomousapps.com/blog/announcing-dagp-kmp/post/?ref=commonmain.dev) Kraken Technologies, which maintains a Kotlin Multiplatform (KMP) project of roughly 600 modules, was recently able to cut its average build time from about 6 minutes to about 1 minute and 50 seconds, or \~70%. They also report that sync times improved from roughly 5 minutes to roughly 45 seconds, or \~85%. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Another Way to KMP: Shared Renderers](https://proandroiddev.com/another-way-to-kmp-shared-renderers-0d1b66a733d7?ref=commonmain.dev) In the first two articles I built 3D chess twice — once with a Compose Multiplatform shell, once with React Native. In both cases, the game logic was in shared Kotlin, and platform-specific 3D renderers displayed the state. This article is about a project that inverts that architecture — and about why the inversion is correct. [Mirage: Cloudy Grows from a Blur Library into a Graphics Effect Library](https://medium.com/proandroiddev/mirage-cloudy-grows-from-a-blur-library-into-a-graphics-effect-library-3b8eaf9cc7ca?ref=commonmain.dev) Blur is a single effect with a single knob, a radius, and for a long time that was the whole library. Mirage is where that changes. It is the first step in Cloudy growing past “the blur library” into a general graphics effect toolkit — a way to run authored GPU shader effects, not just a fixed blur, over the content and backdrops in your Compose UI. [Inside SubcomposeLayout: Jetpack Compose’s Most Misunderstood API](https://blog.shreyaspatil.dev/inside-subcomposelayout-jetpack-composes-most-misunderstood-api/?ref=commonmain.dev) Hey Composers 👋, if you’ve built a complex UI in Jetpack Compose, you’ve probably reached for `BoxWithConstraints`. And by doing so, you’ve probably paid a performance tax you didn’t fully understand. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Cloudy**](https://github.com/skydoves/Cloudy?ref=commonmain.dev) Kotlin Multiplatform blur and liquid glass effect library for Compose, with GPU-accelerated rendering and CPU fallback for older devices. - [**kUML**](https://github.com/kuml-dev/kUML?ref=commonmain.dev) Architecture that compiles. Kotlin DSL for UML 2.x, SysML 2 and C4 diagrams-as-code — CLI, Compose Desktop, IntelliJ & Obsidian plugins, Asciidoctor extension on Maven Central, ELK layout, reverse engineering (Java/Kotlin), XMI import/export, plugin SPI. Apache-2.0. - [**KMP Biometric Auth**](https://github.com/Froyder/kmp-biometric-auth?ref=commonmain.dev) KMP biometric authentication library with hardware-backed crypto. Keystore-bound AES/GCM on Android, Keychain with biometryCurrentSet on iOS. - [**Compose Multiplatform Preferences**](https://github.com/kvarun701/compose-multiplatform-preferences?ref=commonmain.dev) A lightweight, developer-friendly Key-Value Storage library for Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP) projects. - [**Documents**](https://github.com/nomemmurrakh/documents?ref=commonmain.dev) Typed, reactive documents on top of MMKV — a Kotlin Multiplatform storage library for Android & iOS. - [**Compose Media Player**](https://github.com/kdroidFilter/ComposeMediaPlayer?ref=commonmain.dev) Compose Media Player is a video player library designed for Compose Multiplatform, supporting multiple platforms including Android, macOS, Windows, Linux, iOS and Compose Web. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. affiliate link — supports the newsletter at no extra cost to you ****Carrd** • ****Simple, free, fully responsive one-page sites for pretty much anything.** Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [Unbeatable Football | Historic Football Draft GameDraft players across 11 rounds, build a balanced lineup, clear daily challenges, and protect your streak.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-32x32-96c0ddc2-3fd2-4a27-813e-b8b243749780.png)Unbeatable FootballUnbeatable Football![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/og-image-44aba6b8-0afc-4cdf-8cc0-012310f572f3.png)](https://unbeatablefootball.com/?ref=commonmain.dev) [GitHub - wingedsheep/argentum-engine: Magic: The Gathering rules engine + online play platform, in KotlinMagic: The Gathering rules engine + online play platform, in Kotlin - wingedsheep/argentum-engine![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-fa1540dd-0c7e-4874-8569-d803c7992b0a.svg)GitHubwingedsheep![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/argentum-engine-df483f87-ae18-4492-9d39-9cae6a6a0e39)](https://github.com/wingedsheep/argentum-engine?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link — supports the newsletter at no extra cost to you ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Mobile Software Engineer with Kotlin](https://jobs.smartrecruiters.com/ACCESA/744000136778369-senior-mobile-software-engineer-with-kotlin?ref=commonmain.dev) at [Accesa](https://accesa.eu/?ref=commonmain.dev) We are looking for a Senior Kotlin Developer who is experienced in Kotlin Multiplatform delivery, comfortable owning complex shared modules in a layered architecture, and motivated by the challenge of building the reliable, platform-agnostic foundation that modern retail operations depend on. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #25 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-25/ Last updated: 2026-07-07T13:00:35.000Z 🌴 commonMain.dev is on vacation this week. But don’t worry, nothing will be lost. Next issue will include all the news from the previous two weeks. ## Even coroutines take a break There’s no issue this week. commonMain.dev is *suspended*, not *cancelled*. Don’t worry, nothing gets dropped. Just like a buffered Flow, everything from these two weeks is quietly queuing up and next Tuesday it all emits at once. A double issue with twice the news and a *Dependency Graph* that’s been growing in the background while you weren’t looking. **While we’re delay-ing:** - Found something worth sharing? [Submit a link](https://commonmain.dev/submit-your-link/) \- the buffer’s still open. - Missed a past edition? [The archive is right here](https://commonmain.dev/tag/issues/). - New to KMP, or just want a refresher? [Start with the guide](https://commonmain.dev/kotlin-multiplatform/). See you next Tuesday, when we resume with everything you missed. Until next time, **Stay platform-independent!** Bogdan • Founder of commonMain.dev ### Kotlin Multiplatform Newsletter #24 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-24/ Last updated: 2026-06-30T15:05:27.000Z We cover a major evolutionary step as Amper rebrands and graduates into the official Kotlin Toolchain (Alpha). We dive into critical performance and architectural wins, including a breakdown of how to make Ktor JSON parsing 66% faster, a robust guide to handling Coroutine exceptions before they crash your app, and a setup guide for the new native Compose Multiplatform previews. Plus, we look at the community debate over KMP design systems and highlight an exciting mobile role at Zwift. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Kotlin Toolchain 0.11: The Next Step for Amper](https://blog.jetbrains.com/amper/2026/06/kotlin-toolchain-0-11/?ref=commonmain.dev) Amper 0.11.0 is out, and you will notice a shift in the product branding immediately. If you missed the KotlinConf keynote, here’s the headline: Amper has evolved into the Kotlin Toolchain and is now Alpha! ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. [Are you waiting for a Kotlin feature that hasn't been implemented yet?](https://www.reddit.com/r/Kotlin/s/ECOTlGP9Fj?ref=commonmain.dev) Is there a Kotlin language feature that you really want but that hasn't been implemented yet, or has even been rejected? Maybe it has a KEEP, or even not. [Current state of design systems and UI libraries](https://www.reddit.com/r/KotlinMultiplatform/s/Hv2CW2hSzI?ref=commonmain.dev) Now, what’s the current landscape of “middle-ground” UIs in KMP world? Is using compose/material as a foundation for your own design system the best way to do it? ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link — supports the newsletter at no extra cost to you ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Safety Car: Coroutine Exception Handling in KMP](https://medium.com/@kmpbits/safety-car-coroutine-exception-handling-in-kmp-kmp-bits-e824f6f2253d?ref=commonmain.dev) One `launch` block throws, and if nothing contains it, the failure climbs the job hierarchy, cancels every sibling, and on a bad day takes the whole app down with it. The question isn’t whether a coroutine will throw. It’s what happens to everything around it when it does. [How We Made Ktor JSON Parsing 66% Faster with 50% Less Memory on KMP](https://dev.to/juan%5Fhurtado/how-we-made-ktor-json-parsing-66-faster-with-50-less-memory-on-kmp-2pca?ref=commonmain.dev) If you are building Kotlin Multiplatform applications, you know that JSON serialization is often one of the main bottlenecks in high-throughput backends and mobile apps—especially regarding CPU cycles and Garbage Collector (GC) pressure. [Kotlin tricks: Non-exhaustive enums](https://ivan.canet.dev/blog/2026/06/29/kotlin-non-exhaustive-enum.html?ref=commonmain.dev) Enums are an exhaustive set of values. But what if you suspect you may want to add new entries in the future? ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [DrawBox Goes Multiplatform](https://ak1.io/blog/2026/06/23/drawbox-goes-multiplatform/?ref=commonmain.dev) Why I rewrote my Android-only drawing library for Kotlin Multiplatform, and the part of the rewrite that actually hurt. [Setting up Compose Multiplatform previews](https://zsmb.co/compose-multiplatform-preview-setup/?ref=commonmain.dev) Earlier this year, the new Kotlin Multiplatform IDE plugin was released, with one of the highlighted features being Compose previews for common code, powered by the Android preview tooling. In this blog post, we’ll look at how to set this up in your projects. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**kmp-targets**](https://github.com/rsicarelli/kmp-targets?ref=commonmain.dev) Gradle plugin for Kotlin Multiplatform that builds only the targets you select. The ones you skip never register, so their tasks never exist. - [**DrawBox**](https://github.com/akshay2211/DrawBox?ref=commonmain.dev) Kotlin Multiplatform drawing library with SVG export, undo/redo & shapes for Android, iOS, Web & Desktop. - [**RtfParserKmp**](https://github.com/Darkrock-Studios/RtfParserKmp?ref=commonmain.dev) Idiomatic Kotlin Multiplatform RTF reader & writer — a port of RTFParserKit (Apache 2.0). Runs on JVM, Android, iOS, JS, WebAssembly, and Native. - [**Compose GLFW**](https://github.com/sargunv/compose-glfw?ref=commonmain.dev) This library provides a JVM Compose host that runs Compose UI in a GLFW window instead of the default AWT/Swing desktop host. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. affiliate link — supports the newsletter at no extra cost to you ****Carrd** • ****Simple, free, fully responsive one-page sites for pretty much anything.** Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [ClashAlly - Apps on Google PlayYour Ultimate Clash Companion — track clans, players, and wars like a pro![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon_v3-ea9a3773-6074-4ff7-beb2-59e5fc17d37d.ico)Apps on Google PlayMazren![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/SDdNHd69ST5dzRWxPj4RetG0So6QZrflGgRoyUiQizJw0p4U8a67daDg4TVCqBjWSOS6ofJuQjnsTH3mQ3p7psE-2d82f4ec-c39b-4ed5-b341-d4e6ce43b856)](https://play.google.com/store/apps/details?id=com.mazren.clashally&ref=commonmain.dev) Web version available [here](https://web.clashally.com/?ref=commonmain.dev). [SoccerRPG](https://cerrativan.itch.io/soccerrpg?ref=commonmain.dev) This is a tactical 5v5 football game inspired by the feeling of Blitzball: positioning, decision-making, team strategy, and creating plays that feel satisfying to execute. Built with Compose Multiplatform ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link — supports the newsletter at no extra cost to you ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Software Engineer](https://www.zwift.com/eu/careers?gh%5Fjid=8586077002&ref=commonmain.dev#grnhse-job-details) (with KMP) at [Zwift](https://www.zwift.com/?ref=commonmain.dev) In this role, you will work on Zwift’s mobile app, Zwift Companion (ZC), delivering high-quality features and ensuring a seamless user experience. You will collaborate with cross-functional teams to deliver product features on iOS and Android apps that help Zwifters plan, track, and achieve their fitness goals. Additionally, you will contribute to defining and executing the technical strategy to achieve our team objectives - make it easy for Zwifters to plan and start their experiences in Zwift. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #23 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-23/ Last updated: 2026-06-23T13:00:23.000Z We celebrate Kotlin’s 15th anniversary with free Hyperskill courses, dive into handling multiple inheritance using Class Delegation, and expose the silent "division-by-zero" trap in Kotlin Multiplatform. We also cover wiring up FCM Push Notifications in Compose (and the undocumented step that breaks iOS), handling precise decimal arithmetic for money in `commonMain`, building native macOS screen savers, and fresh UI libraries like Composables UI and Kore. Plus, an open Senior Engineering Manager role at Quo. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Kotlin is turning 15 – and now is a great time to take your Kotlin skills further](https://hyperskill.org/categories/37?ref=commonmain.dev) Celebrate Kotlin’s 15th anniversary this summer. Join Hyperskill now and get free access to our Kotlin courses — from language fundamentals to advanced development topics — through the end of summer. Available for new users only. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link — supports the newsletter at no extra cost to you ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Multiple Inheritance in Kotlin. Class Delegation Closes the Gap](https://itnext.io/multiple-inheritance-in-kotlin-class-delegation-closes-the-gap-0928991eadb3?ref=commonmain.dev) Kotlin, like Java, gives you exactly one parent class. Most of the time that’s fine. Occasionally it isn’t, and you end up staring at two base classes that need the same behavior but already extend two different things. [The Kotlin Multiplatform division-by-zero trap](https://github.com/kotools/types/discussions/996?ref=commonmain.dev) If you write Kotlin Multiplatform code that involves integer division, you may have already hit this: the exact same expression behaves completely differently depending on which platform compiles it. [Push Notifications in Compose Multiplatform: The Setup Guide I Wish I Had (Including the Mistake That Cost Me 3 Days)](https://medium.com/@sijanneupane/push-notifications-in-compose-multiplatform-the-setup-guide-i-wish-i-had-including-the-mistake-dfc3b980ec03?ref=commonmain.dev) This article is the setup guide I wish someone had handed me before I started: how to wire up Firebase Cloud Messaging (FCM) in a Kotlin Multiplatform / Compose Multiplatform project, for both Android and iOS, and — more importantly — the one step that has nothing to do with your code and will silently break iOS if you skip it. [Floating point can’t hold a cent. BigDecimal can, until commonMain.](https://proandroiddev.com/floating-point-cant-hold-a-cent-bigdecimal-can-until-commonmain-0ba3d6c49115?ref=commonmain.dev) TL;DR — There are three ways to store money. Two of them bite back, and Kotlin Multiplatform takes the favorite one off the table. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Building a 3D Game in React Native + Kotlin Multiplatform](https://medium.com/@gabor.berenyi.california/building-a-3d-game-in-react-native-kotlin-multiplatform-526b3c2ddb6a?ref=commonmain.dev) Recently I built a 3D chess game in Compose Multiplatform: shared Kotlin logic, a 3D board behind a small renderer interface, and four native rendering backends for Android, web, iOS, and desktop. Today I rebuilt the same game on React Native to see what changes and what stays. [Building a macOS screen saver in Kotlin](https://zsmb.co/building-a-macos-screen-saver-in-kotlin/?ref=commonmain.dev) This article documents how I created my own custom screen saver for macOS, built almost entirely in Kotlin, using the powers of Kotlin Multiplatform to target macOS. [Introducing Composables UI](https://composables.com/blog/introducing-composables-ui?ref=commonmain.dev) After 2 years of iterations on Compose Unstyled, a brand new Compose library is born: Composables UI. [Kore](https://kore-3j8.pages.dev/?ref=commonmain.dev#home) Kore is a Compose Multiplatform design foundation that provides beautifully pre-styled components to help you build scalable and consistent design systems. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Deci**](https://github.com/Kimplify/Deci?ref=commonmain.dev) Deci is a Kotlin Multiplatform library for high-precision decimal arithmetic. Built for money, taxes, invoicing, and any workload where `Float`/`Double `cannot be trusted. - [**kVinInfo**](https://github.com/kabirnayeem99/kVinInfo?ref=commonmain.dev) A pure Kotlin Multiplatform library for VIN (Vehicle Identification Number) decoding, validation, and NHTSA API integration. - [**Vibrance**](https://github.com/romainguy/vibrance?ref=commonmain.dev) Natural color mixing for Kotlin and Compose Multiplatform. - [**Warden Supreme**](https://github.com/a-sit-plus/warden-supreme?ref=commonmain.dev) Warden Supreme is the evolution of the battle-tested WARDEN server-side key and app attestation library, augmented by Signum's *Supreme* KMP crypto provider for a consistent UX across Android and iOS. - [**Kamera**](https://github.com/Kashif-E/Kamera?ref=commonmain.dev) A modern camera library for Compose Multiplatform supporting Android, iOS, and Desktop with a unified API. - [**Sharingan**](https://github.com/mibrahimdev/Sharingan?ref=commonmain.dev) Live HTTP · MQTT · Bluetooth logging for Kotlin Multiplatform — iOS & Android, one API ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link — supports the newsletter at no extra cost to you ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Engineering Manager, Foundations](https://jobs.gem.com/quo/am9icG9zdDrSIwOjTXKoT63nWHbum6ME?ref=commonmain.dev) at [Quo](https://www.quo.com/?ref=commonmain.dev) **Remote - United States & Canada* We're looking for a Senior Engineering Manager to lead our Foundations team, the group that builds and scales the technical and organizational infrastructure the rest of Quo's engineering org is built on. Foundations is a uniquely cross-disciplinary team of mobile, web, and backend engineers responsible for the core systems everything else depends on: our GraphQL platform, client data sync, mobile frameworks (Kotlin Multiplatform), CI and testing platforms, and the core architecture of our client systems. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #22 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-22/ Last updated: 2026-06-16T13:01:05.000Z **In this briefing:** We look at the launch of the **2026 Kotlin Foundation Grant Program** offering financial support for KMP and AI library authors. We also dive into the future of iOS interop, comparing **Swift Export vs. SKIE**, and explore real-world lessons from building a production Kotlin/JS & Wasm web app. Plus, we highlight the magic of caching with **Coil 3**, a visual navigation mapper for Compose, and feature heavy-hitting Senior/Staff roles at Quo and Cantina. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Apply for the 2026 Kotlin Foundation Grant Program for Library Authors](https://kotlinfoundation.org/news/grant-program-for-library-authors-2026/?ref=commonmain.dev) The program provides financial support to developers who create and maintain open-source libraries, tools, and frameworks that strengthen the Kotlin ecosystem. We continue to welcome projects related to Kotlin Multiplatform, as well as libraries focused on AI and large language models. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. [\[Reddit\] Things I wish I knew before starting a Kotlin/JS & Kotlin/WASM project with Compose](https://www.reddit.com/r/Kotlin/comments/1u4vgeh/things%5Fi%5Fwish%5Fi%5Fknew%5Fbefore%5Fstarting%5Fa%5Fkotlinjs/?ref=commonmain.dev) Hello, I just finished most of the development of my first Kotlin/JS & Kotlin/WASM app (5KLOC, \~100 hours of dev in the last 6 months) and I wanted to share my experience with you. It's a web application my wedding guests could use to post their wedding pictures, post their "guestbook" messages on, and play some games together. [\[Reddit\] KMP vs Flutter in 2026 — Genuine career dilemma for an Android dev. Need advice from people actually using KMP in production.](https://www.reddit.com/r/KotlinMultiplatform/comments/1u4kyiy/kmp%5Fvs%5Fflutter%5Fin%5F2026%5Fgenuine%5Fcareer%5Fdilemma%5Ffor/?ref=commonmain.dev) Looking for honest, experience-based answers — not marketing speak. If you've shipped a KMP app in production, especially in India, your perspective would mean a lot. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link — supports the newsletter at no extra cost to you ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [The Future of KMP's iOS Interop](https://touchlab.co/the-future-of-kmps-ios-interop?ref=commonmain.dev) Kotlin's new Swift Export feature promises to eliminate the Objective-C middleman and generate native Swift APIs directly from your KMP code. But with SKIE already solving many of the same pain points in production today, which approach should your team bet on? We break down the capabilities, limitations, and tradeoffs of both. [In which order should Kotlin parameters be declared?](https://ivan.canet.dev/blog/2026/06/08/kotlin-parameter-order.html?ref=commonmain.dev) The Kotlin programming language itself doesn't give strong rules on the order in which parameters should be declared. Yet, there is an order that is better than the others. [Kotlin 2.4 + Swift export: Flow → AsyncSequence (and Swift Packages)](https://medium.com/@santimattius/kotlin-2-4-swift-export-flow-asyncsequence-and-swift-packages-6a97c3afe7b7?ref=commonmain.dev) Interoperability with Swift is often the biggest **pain point* in KMP. Historically, Kotlin has been exposed to Swift indirectly through an Objective-C bridge: the Kotlin/Native compiler generates Objective-C headers that Swift imports, with **mangled* names and unidiomatic underscores. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Warm Tyres: Image Loading and Caching in Compose Multiplatform with Coil 3](https://www.kmpbits.com/posts/coil3-compose-multiplatform?ref=commonmain.dev) Coil 3 is Kotlin Multiplatform. One `AsyncImage` call in `commonMain` renders on Android, iOS, desktop, and web. No `expect`/`actual`. No second library. The same memory cache, the same disk cache, the same loading code. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Compose Navigation Graph**](https://github.com/skydoves/compose-nav-graph?ref=commonmain.dev) Compose Navigation Graph turns your entire app flow into one **living map**: every screen as a rendered existing `@Preview` thumbnail, every transition an arrow you can follow. It works with **Navigation 3**, **Navigation 2**, any other Compose navigation libraries, and even plain Activities. - [**AdaptiveNavBar**](https://github.com/narendraanjana09/adaptive-navigation-bar?ref=commonmain.dev) A Compose Multiplatform adaptive navigation bar — Material 3 on Android, glassy floating bar with FAB on iOS - [**Compose Stability Analyzer 0.10.0**](https://doveletter.dev/articles/compose-stability-analyzer-doctor?ref=commonmain.dev) Diagnostic tools for Jetpack Compose recomposition - now introducing Stability Doctor and Trace-All Mode. - [**OpenSavvy Spine**](https://spine.opensavvy.dev/index.html?ref=commonmain.dev) Share your Ktor endpoints between multiplatform clients and server. - [**KSensor**](https://github.com/ShadAdman/KSensor?ref=commonmain.dev) Live Sensors/States data from Android & iOS targets - [**KGML**](https://github.com/karmakrafts/KGML?ref=commonmain.dev) The Kotlin Graphics Maths Library for Kotlin Multiplatform. A GLM/JOML inspired library with a touch of idiomatic Kotlin. - [**Kompress**](https://github.com/karmakrafts/Kompress?ref=commonmain.dev) Compression and archiver APIs for Kotlin Multiplatform. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. affiliate link — supports the newsletter at no extra cost to you ****Revolut** • ****This is your bank, redefined.** Get powerful daily banking and global freedom. Sign up for free in a tap. Join 75+ million customers worldwide and 13 million in the UK. [Get Started ](https://www.revolut.com/en-RO/referral/?referral-code=bogdanc1m%21JUN1-26-AR-H4&ref=commonmain.dev) [Kodee vs FrictionA small and fun 2D game built in pure Kotlin with Compose Multiplatform & WebAssembly. Celebrating 15 years of Kotlin.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-f3d781b4-84c1-4e7a-b540-f2723dad2ac8.svg)![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/og-image-37238907-4feb-4c20-b5a4-d549b21d0c2f.png)](https://game.kotlinlang.org/?ref=commonmain.dev) GitHub repository available [here](https://github.com/JetBrains/kotlin-15-game?ref=commonmain.dev). [Beam — local-first PDF presenter remoteProject a PDF on the big screen and run it from your phone — live ink, spotlight, speaker notes, and a shared timer. Local-first, nothing leaves your network.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-aa57e6df-8100-4e97-a64d-2404e6e41d05.svg)Beam](https://beam-deck.vercel.app/?ref=commonmain.dev) GitHub repository available [here](https://github.com/jacksonfdam/Beam?ref=commonmain.dev). ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link — supports the newsletter at no extra cost to you ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Engineering Manager, Foundations](https://jobs.gem.com/quo/am9icG9zdDrSIwOjTXKoT63nWHbum6ME?ref=commonmain.dev) at [Quo](https://www.quo.com/?ref=commonmain.dev) **Remote - United States & Canada* We're looking for a Senior Engineering Manager to lead our Foundations team, the group that builds and scales the technical and organizational infrastructure the rest of Quo's engineering org is built on. Foundations is a uniquely cross-disciplinary team of mobile, web, and backend engineers responsible for the core systems everything else depends on: our GraphQL platform, client data sync, mobile frameworks (Kotlin Multiplatform), CI and testing platforms, and the core architecture of our client systems. [Kotlin Multiplatform Engineer (Senior-Staff Levels)](https://cantina.com/careers?ashby%5Fjid=7061225a-6116-4d95-b556-fb6f95b0ebb8&ref=commonmain.dev) at [Cantina](https://cantina.com/?ref=commonmain.dev) **Los Angeles or San Francisco; California; Remote (U.S. or Canada); Sunnyvale* As a Kotlin Multiplatform Engineer at Cantina, you’ll be the architect of our shared-code strategy — building the foundation that powers our experiences across Android, iOS, and web from a single Kotlin codebase. You’ll work at the cutting edge of the KMP ecosystem, shipping production code to real users on multiple platforms, while keeping platform-specific layers feeling truly native. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/06/kodee-mail-v1-upscaled-2-1-1.png) ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #21 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-21/ Last updated: 2026-06-12T12:24:38.000Z [Milestone achieved: commonMain.dev has surpassed 300 subscribers! 🎉](https://commonmain.dev/kotlin-multiplatform-newsletter-20/) Hi everyone! [Bogdan](https://www.linkedin.com/in/bogdancodes/?ref=commonmain.dev) here, founder and curator of the commonMain.dev newsletter. I want to personally thank each of you for subscribing and reading along every week. I hand-curate the news and insights for every single issue, so it’s incredibly rewarding to see so many of you opening and enjoying these emails. I have a lot of exciting ideas in store to make the newsletter even better, so stay tuned! Enjoy this week's edition, and feel free to share it with anyone else who might be interested. Thank you! This week, we unpack the massive **Kotlin 2.4.0** launch - bringing stable context parameters and Native Swift package dependencies, and celebrate **Koin Compiler 1.0** delivering true compile-safe dependency injection without KSP. We also dive into real-world engineering at Booking.com, building cross-platform NFC and BLE tools, and surviving Jetpack Compose "nested bracket hell." Plus, an open **Senior Engineering Manager** seat at Fanatics Markets. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Kotlin 2.4.0 Released](https://kotlinlang.org/docs/whatsnew24.html?ref=commonmain.dev) The Kotlin 2.4.0 release is out! Here are the main highlights: \- ****Language**: Stable context parameters, explicit backing fields, and multiple features for annotation use-site targets. \- ****Standard library**: Stabilized support for the UUID API and support for checking sorted order. \- ****Kotlin/JVM**: Support for Java 26 and annotations in metadata enabled by default. \- ****Kotlin/Native**: Support for Swift packages as dependencies, updates on Swift export, and the CMS GC enabled by default. \- ****Kotlin/Wasm**: Incremental compilation enabled by default and support for WebAssembly Component Model. \- ****Kotlin/JS**: Support for value class export and ES2015 features in JS code inlining. \- ****Gradle**: Compatibility with Gradle 9.5.0. \- ****Maven**: Automatic alignment between Java and JVM target versions. \- ****Kotlin compiler**: More consistent inline function behavior during `.klib` compilation. [Koin Compiler 1.0: DSL and Annotations, Now Compile-Safe](https://blog.insert-koin.io/koin-compiler-1-0-dsl-and-annotations-koin-now-compile-safe-06905a2b04ad?ref=commonmain.dev) ****Koin Compiler 1.0 is out.** Koin’s DSL and annotations now sit on a native Kotlin compiler plugin that verifies your dependency graph at build time: the missing-definition error that used to wait for a `get()` call no longer makes it past `gradlew build`. No KSP, no generated files, full Kotlin Multiplatform support out of the box. It’s the biggest ergonomic shift we’ve made in Koin’s nine-year history. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. [What Nobody Told Us About KMP on iOS](https://youtu.be/efT95%5F%5FW%5FoU?ref=commonmain.dev) Three Android developers. Zero Swift experience. A two-month deadline. At KotlinConfersations'2026, Suhyeon (Leah) Kim shares how her team used KMP to build and ship a brand-new iOS app despite having no iOS developers on the team. [Am I the only one who finds Jetpack Compose syntax absolutely unreadable and ugly?](https://www.reddit.com/r/JetpackCompose/comments/1u02exh/am%5Fi%5Fthe%5Fonly%5Fone%5Fwho%5Ffinds%5Fjetpack%5Fcompose/?utm%5Fsource=share&utm%5Fmedium=web3x&utm%5Fname=web3xcss&utm%5Fterm=1&utm%5Fcontent=share%5Fbutton) Every single UI layout turns into a giant waterfall of nested trailing lambdas. There are curly brackets inside normal parentheses, inside more curly brackets, and if you accidentally put a bracket on a new line (like right after setContent), the whole compiler falls apart. I am experiencing a complete "nested bracket hell" right now and constantly losing track of where a component starts or ends. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Kotlin Multiplatform in Production: Two Real-World Use Cases from Booking.com](https://medium.com/booking-com-development/kotlin-multiplatform-in-production-two-real-world-use-cases-from-booking-com-46ffe13a773d?ref=commonmain.dev) This article examines two specific engineering challenges solved using Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP): 1\. Developing a shared experimentation library to ensure uniform experiment assignments across Android and iOS. 2\. Using Compose Multiplatform to host our Android design system in a web browser, bridging the gap between design concepts and implementation. While both cases use the same underlying technology, each provides unique insights into multiplatform development. [Compose Multiplatform BLE Tools: One Compose UI Over Two Native Bluetooth Stacks](https://medium.com/@rwatson%5F86305/compose-multiplatform-ble-tools-one-compose-ui-over-two-native-bluetooth-stacks-7aa4e4a38534?ref=commonmain.dev) Bluetooth Low Energy looks straightforward from a distance. Scan for devices, connect to one, discover services, read a characteristic, maybe subscribe to notifications. The API names make the workflow sound linear and friendly. Across two platforms, it is not quite that simple. [Adding NFC to Compose Multiplatform: Android, iOS, and Desktop](https://medium.com/@rwatson%5F86305/adding-nfc-to-compose-multiplatform-android-ios-and-desktop-2a51e6ac0734?ref=commonmain.dev) This article walks through a working implementation that covers all three platforms and does three things on each: read any NFC tag, write an NDEF message to a tag, and read the public data a contactless EMV payment card exposes. The focus is on the decisions that required real investigation — the places where the documentation is silent and the behavior only makes sense once you have traced what is actually happening on a device. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Through the Lens: Barcode Scanning in Compose Multiplatform](https://www.kmpbits.com/posts/barcode-scanning-compose-multiplatform?ref=commonmain.dev) CMP’s interop surface has grown enough now that you can drive the camera from a shared Composable, and the tool that makes it clean is one you already know: `expect`/`actual`. Not in a ViewModel, not in a repository. At the Composable level itself. The shared screen declares the contract; each platform provides its own camera. [Scratchify - A Compose Multiplatform Scratch Card SDK](https://github.com/gsrathoreniks/Scratchify?ref=commonmain.dev) Scratchify is a powerful and highly customizable scratch card SDK built using Jetpack Compose Multiplatform. It enables you to create engaging interactive scratch surfaces where users can scratch off an overlay to reveal hidden content underneath. Perfect for reward systems, discount reveals, surprise elements, and gamification in your modern apps! ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Ghost Serializer**](https://github.com/juanchurtado1991/ghost-serializer?ref=commonmain.dev) A zero-copy, KMP-ready JSON parser. It uses KSP to generate reflection-free, highly optimized Field Tries that operate directly on contiguous memory buffers, achieving very high throughput and very little GC pressure. - [**FlowMarbles**](https://terrakok.github.io/FlowMarbles/?ref=commonmain.dev) A simple web application that helps you understand how operators work with flows through interactive diagrams (implemented in Compose Multiplatform). - [**KitePDF**](https://github.com/yuroyami/KitePDF?ref=commonmain.dev) PDF library written in pure Kotlin (reading, viewing, rendering, editing and creating PDFs) for Android, iOS, Web and JVM Desktop. No JNI or expect/actuals, only 100% Kotlin. Supports Compose Multiplatform. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED ****Profitable mobile app for sale • Yazcam** Yazcam is an AI-powered dating assistant that helps users analyze chat screenshots and generate better replies, opening lines, and messaging strategies. The app is available on iOS and Android, monetized through subscriptions, and growing organically through short-form social content. It is built with Swift for iOS and Kotlin for Android. [Contact seller ](https://trustmrr.com/startup/yazcam?ref=bogdan-ddd454) [GitHub - maxrave-dev/SimpMusic: A cross-platform music app using YouTube Music for backendA cross-platform music app using YouTube Music for backend - maxrave-dev/SimpMusic![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-84295cde-1b2f-4af8-9114-2ec7918625a7.svg)GitHubmaxrave-dev![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/d1caf378-9996-45bd-aad8-360494ce98be-67c24c41-09dc-4cf6-9ccf-352203f5e430)](https://github.com/maxrave-dev/SimpMusic?ref=commonmain.dev) [Free Workout Logger & Progressive Overloading TrackerPlates is a free, private, offline workout logger for iOS and Android. Track sets, reps and weight, customise your splits, and watch your progressive overloading over time. No ads, no subscriptions.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/appicon-d048ddfc-abf7-4364-bead-1fef36ddfa76.webp)PlatesPlates![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/socialpreview-1e14093e-ce2c-4bca-952e-385ebfc769dc.jpg)](https://www.plates-gym.app/?ref=commonmain.dev) [GitHub - iammohdzaki/OneTask-Desktop: OneTask is a flexible, block-based workspace application built with Compose Multiplatform. It allows you to organize your thoughts, tasks, and data in a unified environment that feels local-first and high-performance.OneTask is a flexible, block-based workspace application built with Compose Multiplatform. It allows you to organize your thoughts, tasks, and data in a unified environment that feels local-first a…![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-640c71ef-4eb4-484c-ac15-0e057c9b9793.svg)GitHubiammohdzaki![](https://opengraph.githubassets.com/347efe706bccab4cc68bf61a0fd60fd1637469d6735a8bc7080d5ca464ee5911/iammohdzaki/OneTask-Desktop)](https://github.com/iammohdzaki/OneTask-Desktop?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED ****hackajob** • **Meet Archer, your AI job matching agent** 5x more interviews. Zero guesswork. Archer works 24/7 to find roles where you genuinely match and shows you exactly why — so you apply with confidence, not blind hope. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Senior Engineering Manager - Mobile](https://job-boards.greenhouse.io/fanaticsfbg/jobs/4260459009?ref=commonmain.dev) at [Fanatics Markets](https://fanaticsmarkets.com/?ref=commonmain.dev) This is a ****fully remote, US-based role** for someone in the ****EST or CST time zones**, with a salary range of ****$204,250–$268,750 USD**. Fanatics Markets is building a real-money prediction and trading app at the intersection of ****sports, entertainment, culture, and financial markets**. This role will lead the mobile engineering team powering the app and help shape our ****Kotlin Multiplatform strategy** as we scale. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #20 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-20/ Last updated: 2026-06-12T12:25:38.000Z We celebrate the arrival of official **Kotlin support for Visual Studio Code (Alpha)** and open up the 10th annual JetBrains Developer Ecosystem Survey. We dive deep into practical multiplatform mechanics, including a step-by-step roadmap for publishing your KMP library to **Maven Central**, integrating a robust **WebView** across Android, iOS, and Desktop, and migrating past the deprecated `PredictiveBackHandler` in Compose Multiplatform 1.10.x. Plus, we explore **KMPify** for automated project migrations and highlight a senior KMP opening at Yazio. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [KMP Contest Starter Kit 2026 Grant Recipient](https://kotlinfoundation.org/news/kmp-contest-starter-kit-2026-grant-recipient/?ref=commonmain.dev) The Kotlin Foundation team responsible for evaluating the submissions was genuinely impressed by the thoughtfulness of the submissions and shares a heartfelt thank you to everybody who took the time to share their ideas of what a compelling KMP Contest Starter Kit would look like. [JetBrains Developer Ecosystem Survey 2026](https://surveys.jetbrains.com/s3/cn-developer-ecosystem-survey-2026?ref=commonmain.dev) Take part in the 10th annual JetBrains Developer Ecosystem Survey! Your insights are essential. They help us map the state of software development and shape the industry report we’ll publish from the aggregated results. [Official Kotlin Support for Visual Studio Code Is Now Available in Alpha](https://blog.jetbrains.com/kotlin/2026/05/official-kotlin-support-for-visual-studio-code-is-now-available-in-alpha/?ref=commonmain.dev) IntelliJ IDEA and Android Studio remain the most complete environments for Kotlin development. But not every Kotlin developer uses either IDE – some prefer VS Code. Kotlin by JetBrains is an extension for those developers, providing official Kotlin language support in VS Code, powered by the Kotlin Language Server, and offering core features for reading, writing, and navigating Kotlin code. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Homologated: Publishing Your Kotlin Multiplatform Library to Maven Central](https://www.kmpbits.com/posts/kmp-maven-central?ref=commonmain.dev) Publishing a Kotlin Multiplatform library to Maven Central is your homologation moment. Until you do it, your library is a `mavenLocal()` entry that only you can use. After it, anyone can add one line to their `libs.versions.toml` and pull it in without cloning anything. [Kotlin Context Parameters: Cleaner and Safer APIs](https://bloder.io/kotlin-context-parameters?ref=commonmain.dev) Kotlin keeps getting better at expressing intent in the type system. One of the most interesting language proposals right now is Context Parameters, a redesign of the earlier context receivers idea. [Adding a WebView to Compose Multiplatform: Android, iOS, and Desktop](https://medium.com/@rwatson%5F86305/adding-a-webview-to-compose-multiplatform-android-ios-and-desktop-8f17e91649f4?ref=commonmain.dev) This article walks through a working implementation that covers all three platforms. The focus is on the decisions that required real investigation — not the parts that follow directly from reading the API documentation, but the parts where the documentation is silent and the behavior is only understandable after tracing through what is actually happening. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [KMPify](https://github.com/MahmoudRH/kmpify?ref=commonmain.dev) KMPify is a Kotlin tool that helps migrate Android Jetpack Compose projects to Kotlin Multiplatform (KMP) with minimal effort. Available as both a CLI tool and Desktop GUI. [Goodbye PredictiveBackHandler: How to Migrate to the New Navigation Event in Compose](https://medium.com/@santimattius/goodbye-predictivebackhandler-how-to-migrate-to-the-new-navigation-event-in-compose-6e2f294f5ddb?ref=commonmain.dev) If you work with ****predictive back** in Compose and have updated to Compose Multiplatform 1.10.x, your code likely no longer compiles. This isn’t a bug: `PredictiveBackHandler()` has been deprecated, and the new API changes how you model the “back” gesture. In this article, I’ll explain what changed, why, and how to migrate step by step. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Kottie**](https://github.com/ismai117/kottie?ref=commonmain.dev) Compose Multiplatform animation library that parses Adobe After Effects animations. Inspired by Airbnb/Lottie. - [**KmpEssentials**](https://github.com/Ares-Defence-Labs/KmpEssentials?ref=commonmain.dev) KmpEssentials is a library that contains apis (40+ Modules) to accelerate your development. Everything from managing the Battery, File System, getting Package information, or taking Photos. Supports iOS, Android, AppleWatch, JVM & JS. - [**Sentinel**](https://github.com/rexiox/sentinel?ref=commonmain.dev) Sentinel is a modular Kotlin Multiplatform security toolkit designed to analyze operating environments and detect potential security threats in real time. - [**NumberFlow**](https://github.com/NadeemIqbal/number-flow?ref=commonmain.dev) A per-digit animated number ticker for Compose Multiplatform — only the digits that change move, and they roll up when the value increases, down when it decreases. Locale-friendly formatting, configurable animation, prefix/suffix friendly. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED ****Carrd** \- Simple, free, fully responsive one-page sites for pretty much anything. Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [Visa & Tax Days Tracker: Immio App - App StoreDownload Visa & Tax Days Tracker: Immio by Dev Mode Ltd on the App Store. See screenshots, ratings and reviews, user tips, and more apps like Visa & Tax Days…![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-180-03b385a587a1953dcc65e93cb8aec6363f713ca36261590acbcb44fee7afdad8.png)App StoreDev Mode Ltd![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/1200x630wa-9cc60046c754239bdac22c396cbac0bd7b02cf42cd29f4584a83a1aea3e532c2.jpg)](https://apps.apple.com/us/app/visa-tax-days-tracker-immio/id6747927306?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) [Senior Mobile Engineer (Food Tracking)](https://jobs.ashbyhq.com/yazio/e904eadc-df9d-4fe5-aeaa-93abcbc39449?ref=commonmain.dev) at [yazio](https://www.yazio.com/en?ref=commonmain.dev) **Remote in Germany, Spain, Portugal or the U.K.* We’re looking for a Senior Mobile Engineer to join the Food Tracking squad at Yazio, the team building the core experience of our product. This includes daily food tracking, AI-driven insights, and features used by millions every day. You are a key part in shaping the Food Tracking squad, leveraging our ****Kotlin Multiplatform (KMP)** stack to deliver high-impact solutions for iOS and Android users. You join a cross-functional team partnering closely with Product Managers, Designers and Analysts. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #19 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-19/ Last updated: 2026-06-12T12:25:51.000Z We unpack the massive announcements from **KotlinConf '26**, including the latest shifts in language design, tooling, and AI-driven workflows, alongside a brand-new **Security Support Policy** for the Kotlin Standard Library. We dive into complex multiplatform setups, featuring cross-platform **3D physics simulations** using SceneView, the engineering behind building a **multiplatform tone generator**, and setting up bulletproof **CI/CD with GitHub Actions**. Plus, we review how to use Kotlin 2.3's experimental **Return Value Checker** and detail a KMP engineer position currently open at Cantina. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [KotlinConf’26 Keynote Highlights: Advances in Language Design, Tooling, AI-Driven Workflows, and Multiplatform Development](https://blog.jetbrains.com/kotlin/2026/05/kotlinconf26-keynote-highlights/?ref=commonmain.dev) At KotlinConf’26, the JetBrains team and industry partners shared how Kotlin continues to evolve for developers at every scale. The keynote highlighted advances in language design, tooling, AI-driven workflows, and multiplatform development – all aimed at improving the Kotlin development experience for building modern applications everywhere. [Introducing a Security Support Policy for the Kotlin Standard Library](https://blog.jetbrains.com/kotlin/2026/05/security-support-policy-for-the-kotlin-standard-library/?ref=commonmain.dev) As more code depends on Kotlin, the language becomes more useful – and more constrained. People building on it expect that what they wrote yesterday will keep working tomorrow, that changes will be predictable, and that the team behind Kotlin will treat compatibility as a deliberate choice rather than an afterthought. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. [Gotta use that returned value?](https://www.youtube.com/watch?v=VDEQh2JkCAE&ref=commonmain.dev) Kotlin 2.3 brought an experimental feature that you might have missed - the Return Value Checker. [Built for Productivity: What the Data Finally Shows About Kotlin](https://blog.jetbrains.com/kotlin/2026/05/built-for-productivity-what-the-data-shows-about-kotlin/?ref=commonmain.dev) Developers describe working in Kotlin in a fairly consistent way: more time spent on what you’re trying to build, less time on ceremony. There are fewer rituals to satisfy the compiler, and less boilerplate to write before getting to the part that matters. For years, the interesting question was whether that effect would also be visible at scale. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [Every Commit on the Clock: CI/CD for Kotlin Multiplatform with GitHub Actions](https://www.kmpbits.com/posts/drafts/kmp-github-actions?ref=commonmain.dev) KMP gives you one codebase and two (or more) build targets. That’s the pitch. What the pitch leaves out is that Android and iOS builds have completely separate toolchains, separate runners, and separate failure modes. [Building a Cross-Platform 3D Physics Simulation for Android, iOS, and Web with Kotlin Compose Multiplatform and SceneView](https://dc-engineer.com/building-a-cross-platform-3d-physics-simulation-for-android-ios-and-web-with-kotlin-compose-multiplatform-and-sceneview/?ref=commonmain.dev) TwoLinks is a real-time 3D physics simulation of a chaotic double pendulum swinging freely under gravity. The setup sounds simple, and yet the resulting motion is completely unpredictable. Shift the length of one link by a centimeter, or move the pivot point a few millimeters, and the long-term trajectory diverges entirely from what it was before. That extreme sensitivity to initial conditions is the hallmark of chaos theory, and the double pendulum is one of its most famous physical demonstrations. [The Pit Crew: Advanced Ktor Client Configuration for KMP](https://www.kmpbits.com/posts/ktor-client-advanced?ref=commonmain.dev) I’ve been using Ktor as the HTTP layer in my KMP projects for a while now, and the moment things clicked for me was when I stopped thinking of it as “a way to make HTTP requests” and started thinking of it as a pluggable pipeline. Every request passes through a crew of plugins before it goes out, and every response passes back through them before your code sees it. [Building a Tone Generator in Compose Multiplatform](https://medium.com/@rwatson%5F86305/building-a-tone-generator-in-compose-multiplatform-48cf417ad304?ref=commonmain.dev) A tone generator is one of those projects that looks simple until the code has to make sound on more than one platform. The math is compact: advance a phase accumulator, call `sin()`, scale the result, and write the sample somewhere. The platform mechanics are less compact. Android wants `AudioTrack`. iOS wants `AVAudioEngine` and an `AVAudioSourceNode`. JVM desktop can use Java Sound's `SourceDataLine`. Each output path has different buffer types, threading expectations, lifecycle details, and failure modes. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Building a Custom Theme System for Compose Multiplatform](https://medium.com/@rwatson%5F86305/building-a-custom-theme-system-for-compose-multiplatform-ffc2414e9e4f?ref=commonmain.dev) In 16 years of Android development and several years now with Compose Multiplatform across client projects, the question I hear most often is: “how much do you have to rewrite?” For a well-structured Compose codebase, the honest answer is: almost nothing. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**epub4kmp**](https://github.com/Wavesonics/epub4kmp?ref=commonmain.dev) A Kotlin Multiplatform library for reading, writing, and manipulating EPUB files. - [**PdfKmp**](https://github.com/ConaMobileDev/PdfKmp?ref=commonmain.dev) PdfKmp lets you build PDF documents from a Compose-style DSL that runs identically on Android and iOS. - [**kotlin-csv**](https://github.com/jsoizo/kotlin-csv?ref=commonmain.dev) Pure Kotlin Multiplatform CSV reader and writer. - [**Kostra**](https://github.com/jbruchanov/kostra?ref=commonmain.dev) A library trying to help with resources in KMP project, currently supported platforms are `JVM`, `Android`, `iOS`, and experimentally `Native`. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED ****ThreadCam - Profitable mobile app startup for sale** ThreadCam allows users to create 3D mockups of their tshirt or garment designs. It currently has over 2600 active paid subscribers and $9,580 monthly recurring revenue. [Contact Seller ](https://trustmrr.com/startup/threadcam?ref=bogdan-ddd454) 🌍 World Traveller: Travel Diary ([Play Store](https://play.google.com/store/apps/details?id=worldtraveller.enoler.es.worldtraveller&ref=commonmain.dev) | [App Store](https://apps.apple.com/us/app/world-traveller-travel-diary/id6745434631?ref=commonmain.dev)) We all love traveling, but some of you do it more than others. World Traveller lets you keep track of all the countries and cities you have visited. This online scratch map is what you were looking for! 🚘 Driviko: Mileage Tracker & OBD ([Play Store](https://play.google.com/store/apps/details?id=com.jibru.driviko.android.app&ref=commonmain.dev) | [App Store](https://apps.apple.com/us/app/driviko-mileage-tracker-obd/id6759507127?ref=commonmain.dev)) Driviko is a smart mileage tracker, trip log, and driving logbook app that automatically records your drives using GPS and OBD-II data. ****→** Author's [Reddit thread](https://www.reddit.com/r/KotlinMultiplatform/comments/1thzaas/driviko%5Fmy%5Fkmp%5Fproject%5Fand%5Fexperiences/?ref=commonmain.dev) explaining their experience developing the KMP app. ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) [Kotlin Multiplatform Engineer](https://cantina.com/careers?ashby%5Fjid=7061225a-6116-4d95-b556-fb6f95b0ebb8&ref=commonmain.dev) at [Cantina](https://cantina.com/?ref=commonmain.dev) As a Kotlin Multiplatform Engineer at Cantina, you’ll be the architect of our shared-code strategy — building the foundation that powers our experiences across Android, iOS, and web from a single Kotlin codebase. You’ll work at the cutting edge of the KMP ecosystem, shipping production code to real users on multiple platforms, while keeping platform-specific layers feeling truly native. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #18 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-18/ Last updated: 2026-07-03T08:31:22.000Z We cover the dual arrivals of **Kotlin 2.3.20** and **Compose Multiplatform 1.11.0**, mapping out the massive upgrades to iOS, Web, and UI testing. We explore a foundational shift toward **Name-Based Destructuring**, an upcoming new default KMP project structure, and critical technical walkthroughs—including avoiding silent plain-text database bugs when mixing SPM imports with Room encryption. Plus, we highlight game-changing local AI tooling via **Llamatik** and open positions at VirtusLab and CUJU. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Kotlin 2.3.20 Released](https://blog.jetbrains.com/kotlin/2026/03/kotlin-2-3-20-released/?ref=commonmain.dev) The Kotlin 2.3.20 release is out! Here are the main highlights: \- ****Gradle:** Compatibility with Gradle 9.3.0 and Kotlin/JVM compilation uses the Build tools API by default. \- ****Maven:** Simplified setup for Kotlin projects. \- ****Kotlin compiler plugins:** Lombok is Alpha and improved JPA support in the `kotlin.plugin.jpa` plugin. \- ****Language:** Support for name-based destructuring declarations. \- ****Standard library:** New API for creating immutable copies of `Map.Entry`. \- ****Kotlin/Native:** New interoperability mode for C and Objective-C libraries. [Compose Multiplatform 1.11.0 Is Now Available](https://blog.jetbrains.com/kotlin/2026/05/compose-multiplatform-1-11-0/?ref=commonmain.dev) A new release of Compose Multiplatform has landed, with improvements to the iOS and web experience and a refreshed approach to UI testing. Read on for the highlights, or for the complete list of changes, check out the [What’s New](https://kotlinlang.org/docs/multiplatform/whats-new-compose-111.html?ref=commonmain.dev). [A New Default Project Structure for Kotlin Multiplatform](https://blog.jetbrains.com/kotlin/2026/05/new-kmp-default-structure/?ref=commonmain.dev) We are updating the default project structure for Kotlin Multiplatform projects to give modules clearer responsibilities, better align with conventions used by other build systems and frameworks, and reflect the [changes in Android Gradle Plugin 9.0](https://blog.jetbrains.com/kotlin/2026/01/update-your-projects-for-agp9/?ref=commonmain.dev). [The Road to Name-Based Destructuring](https://blog.jetbrains.com/kotlin/2026/05/the-road-to-name-based-destructuring/?ref=commonmain.dev) Kotlin is changing, with names set to become central in destructuring. In the future, `val (name, age) = person` will extract the `name` and `age` properties from the `person` value, regardless of the way and order in which they were defined. This marks a change from the current approach to destructuring, in which the position is the key element. This blog post explains the reasoning behind this change, the migration strategy, and how Kotlin’s tooling supports it. [Help Shape the Future of Kotlin in the Age of AI](https://blog.jetbrains.com/kotlin/2026/05/help-shape-the-future-of-kotlin-in-the-age-of-ai/?ref=commonmain.dev) We want to better understand how Kotlin developers use AI today, what works well, where the friction points are, and what opportunities lie ahead. That’s why we’re launching a short community survey focused on ****AI-assisted development with Kotlin**. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. affiliate link — supports the newsletter at no extra cost to you ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) [KMP Splash: How I Stopped Opening Xcode for Splash Screens](https://www.kmpbits.com/posts/kmp-splash-plugin?ref=commonmain.dev) KMP Splash is a Gradle plugin that handles the entire splash screen setup for both Android and iOS from a single config block. This is about why I built it and how it evolved. The README has the full setup. This is the story behind it. [When SPM import Symbol Conflicts Break Your Encryption; Properly encrypt your Room database in KMP](https://funkymuse.dev/posts/encrypt-kmp-database-with-firebase-in-project/?ref=commonmain.dev) My KMP project uses Kotlin’s experimental [SPM import](https://kotlinlang.org/docs/native-spm.html?ref=commonmain.dev) (not CocoaPods) to bring in Firebase iOS SDK, GoogleSignIn, and SQLCipher.swift, the moment Firebase entered the picture, the iOS database stopped being encrypted. No crash, no error thrown, just a silently plaintext database, just like being left on seen by your crush. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. [Building GPU Shader Effects for Compose Multiplatform: From Scratch to ShaderX](https://levelup.gitconnected.com/building-gpu-shader-effects-for-compose-multiplatform-from-scratch-to-shaderx-326659c4f47b?ref=commonmain.dev) In this post, we’ll learn how to make GPU shader effects from scratch, talk about the problems that come up when working on multiple platforms, and see how the ShaderX library I made makes everything easier to understand with a simple API. [Compose Styling Is Changing — Here’s What Google’s New Style API Gets Right (and What It Still Needs)](https://medium.com/@simtop/compose-styling-is-changing-heres-what-google-s-new-style-api-gets-right-9cb52f5065ef?ref=commonmain.dev) After working through the exercises and testing it against a real design system used by 60+ engineers, it became clear that this API introduces a missing layer in Compose — one that changes how we should think about component architecture, not just styling. [Nav3 Recipes](https://github.com/terrakok/nav3-recipes?ref=commonmain.dev) Showcase of common use cases & patterns when working with Compose Multiplatform Navigation3. [Compose Unstyled 2.0: Let there be component libraries!](https://composables.com/blog/compose-unstyled-2.0?ref=commonmain.dev) Compose Unstyled 2.0 is finally out, and I'm incredibly stoked I get to talk to you about it! ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**KMP Splash**](https://github.com/kmpbits/KMP-Splash?ref=commonmain.dev) Professional Splash Screens for Compose Multiplatform, configured in seconds. - [**Some**](https://github.com/MessiasLima/Some?ref=commonmain.dev) A Kotlin JVM library that generates populated instances of any Kotlin class for testing purposes, with zero configuration required. - [**ShaderX**](https://github.com/Debanshu777/ShaderX?ref=commonmain.dev) GPU shader effects for Compose Multiplatform — one API, every platform. - [**AI agent skills for Kotlin**](https://github.com/Kotlin/kotlin-agent-skills/?ref=commonmain.dev) A collection of AI agent skills useful for projects using the Kotlin language. - [**JetBrains ecosystem plugin**](https://github.com/Kotlin/declarative-gradle-jetbrains-ecosystem-plugin?ref=commonmain.dev) The JetBrains ecosystem plugin is an experimental plugin for [Declarative Gradle](https://declarative.gradle.org/?ref=commonmain.dev), Gradle's new declarative build language. You can use this plugin to explore Declarative Gradle itself and a new approach to organizing Kotlin build scripts. - [**KMP flavorizr**](https://github.com/tahaak67/KMP-Flavorizr?ref=commonmain.dev) A Gradle plugin for configuring build flavors (variants) across Android and iOS in Kotlin Multiplatform projects. Define your flavors once in Gradle DSL and let the plugin generate the platform-specific configuration files. - [**Llamatik**](https://github.com/ferranpons/Llamatik?ref=commonmain.dev) True on-device AI for Kotlin Multiplatform (Android, iOS, Desktop, JVM, WASM). LLM, Speech-to-Text and Image Generation — powered by llama.cpp, whisper.cpp and stable-diffusion.cpp. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. affiliate link — supports the newsletter at no extra cost to you ****Carrd** \- Simple, free, fully responsive one-page sites for pretty much anything. Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [Rudio — WiFi Map for the Real WorldFind and share open WiFi spots near you.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/apple-touch-icon-ff71530c69ee01bb8e2e0e6a2eacf8b07ce49ccb1b1ecbfda25ae3e28265df1f.png)RudioRudio![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/og-image-960da65ae40d3daae4da46ac2a4943d208a9e8b4783d8d8cfb2bbee16fa13052.png)](https://rudio.app/?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. affiliate link — supports the newsletter at no extra cost to you ****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. [Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) [Kotlin Engineer – (Senior/Staff)](https://careers.virtuslab.com/job-offer/kotlin-engineer-2/?ref=commonmain.dev) at [VirtusLab](https://virtuslab.com/?ref=commonmain.dev) We are looking for engineers interested in building various tooling using mainly Kotlin. Our team is working on IntelliJ plugin, IDEs, coding agents or frameworks for Local AI inference. Your job will be focused 100% on technology and your users will be developers. You will work within, small, flexible team and you will have a lot of autonomy: you will be responsible for design, scope, testing and implementation. You will work with tooling engineers, and you will be part of an organisation specialized in developer tooling. [Senior Android Developer (KMP)](https://join.com/companies/cuju/16173424-senior-android-developer-m-f-d?ref=commonmain.dev) at [CUJU](https://cuju.pro/?ref=commonmain.dev) We’re building a scalable cross-platform product using Kotlin Multiplatform Mobile (KMP) to deliver consistent quality and speed across Android and iOS — and we’re looking for a Senior Android Developer who can help us take CUJU to the next level. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #17 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-17/ Last updated: 2026-06-12T12:26:25.000Z We celebrate the winners of the Kotlin Ecosystem Mentorship Program and dive into high-performance patterns for KMP. We explore **Metro DI patterns**, adaptive layout systems that handle everything from phones to foldables with zero hardcoded pixels, and a guide to handling **exceptions in Kotlin Flows**. Plus, we look at how to fix production bugs using **Claude Code** and the **Kotzilla MCP Server**, and feature new roles at Booz Allen and CoreWillSoft. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. 🏅 Kotlin Ecosystem Mentorship Program: Results and Winners In the [Kotlin Ecosystem Mentorship Program](https://blog.jetbrains.com/kotlin/2026/02/kotlin-ecosystem-mentorship/?ref=commonmain.dev) pilot, mentors and mentees worked together on real Kotlin open-source projects to make their first meaningful community contribution. Four pairs successfully completed the two-month program, and one eligible pair was randomly selected in the prize drawing to receive the grand prize – a trip to KotlinConf 2026 in Munich! ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. ▶️ [How to Handle Exceptions in Kotlin Flows](https://www.youtube.com/watch?v=tJS7D2cC4eU&ref=commonmain.dev) Exceptions can be thrown from within our flows, just like anywhere else in our Kotlin code. In this video, we'll see the right and wrong places to put your try-catch blocks, and how to use the catch operator. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 🏎️ [Drop the Clutch: Three Metro DI Patterns Every KMP Developer Should Know](https://www.kmpbits.com/posts/drop-the-clutch?ref=commonmain.dev) I already covered Koin Annotations in a [previous article](https://www.kmpbits.com/posts/koin-annotations?ref=commonmain.dev). What follows isn’t a migration guide. It’s a look at three specific patterns that come up in every real KMP project and where Metro’s behaviour changed how I think about dependency injection. 🧰 [Fixing production issues in a Kotlin Multiplatform app with Kotzilla MCP Server and Claude Code](https://medium.com/kotzilla/fixing-production-issues-in-a-kotlin-multiplatform-app-with-kotzilla-mcp-server-and-claude-code-62c3305b34ae?ref=commonmain.dev) In this article, I fixed real production issues on a Kotlin Multiplatform app entirely from inside Claude Code using Kotzilla MCP Server. Two things made that loop work. 🔔 [Push Notifications in Mobile Apps Using Kotlin Multiplatform (KMP): A Practical Guide](https://medium.com/@techdynasty/push-notifications-in-mobile-apps-using-kotlin-multiplatform-kmp-a-practical-guide-15bd82b194e8?ref=commonmain.dev) In this article, we’ll walk through how to implement push notifications in a KMP project, share as much logic as possible, and handle the platform-specific parts cleanly using `expect`/`actual`. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 🧑‍🎨 [Building a Production-Grade Adaptive Layout System in Kotlin Multiplatform — From Phone to Foldable](https://medium.com/@mr.califer/building-a-production-grade-adaptive-layout-system-in-kotlin-multiplatform-from-phone-to-foldable-26a50f3ba2d2?ref=commonmain.dev) This article is about building a layout system that is **intentionally* adaptive. One that knows what device it’s running on, what orientation it’s in, whether a hinge is separating the screen in two, whether the iPad is in Split View, and makes a precise, correct decision every single time — with zero hardcoded pixel values and zero platform-specific layout code in your feature screens. ✍️ [Jetpack Compose Animations](https://doveletter.dev/docs/compose-animations?ref=commonmain.dev) A growing catalog of self contained Jetpack Compose animation examples by skydoves. Every entry is a single composable file you can read end to end, with the constants you can tweak and a written walkthrough of how the motion is built. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Kmp Resources Unfold**](https://plugins.jetbrains.com/plugin/31310-kmp-resources-unfold/?ref=commonmain.dev) A professional productivity tool designed for **Android Studio** and **IntelliJ IDEA** developers. It bridges a major gap in the IDE by providing visual management and robust import capabilities for assets across all your Kotlin Multiplatform (KMP) modules. - [**Gradle Lighthouse**](https://github.com/dev-vikas-soni/gradle-lighthouse?ref=commonmain.dev) An enterprise-grade build intelligence plugin for Android and Kotlin Multiplatform. Think of it as "Google Lighthouse" for your module graph. - [**FastCollect**](https://github.com/sooniln/fastcollect?ref=commonmain.dev) A library for high-performance primitive collections in the Kotlin ecosystem. As a drop-in replacement for standard Kotlin collections, FastCollect generally reduces memory usage by 4–5× and improves CPU performance by 2-4× (and perhaps >10× on some iteration heavy workloads). - [**native-kt**](https://github.com/husker-dev/native-kt?ref=commonmain.dev) Gradle plugin for convenient C/C++ integration into a Kotlin Multiplatform project. Supports JVM, Android, Native, Wasm and JS targets. ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🤹‍♂️ [Multi-Platform Mobile Application Developer](https://careers.boozallen.com/jobs/JobDetail?jobId=121616&ref=commonmain.dev) at [Booz Allen](https://www.boozallen.com/?ref=commonmain.dev) As a senior Multi-Platform Mobile Application Developer at Booz Allen, you’ll support the development of systems, sites, and tools for our clients. Using the latest tools and technology, you’ll write, test, and edit code in support of the team’s overall results. You’ll expand your skills as you develop and reverse engineer software that supports hardware functionality on a wide range of devices, as well as configure solutions based on the platform being used. You’ll work with other team leaders to troubleshoot and correct operational issues, as well as with cybersecurity specialists to ensure that the software you’re creating is secure. 👨‍💻 [FullStack Software Engineer (Kotlin/React)](https://www.corewillsoft.com/job/eef5462e-537c-461e-8d48-7c57a84007d5/?ref=commonmain.dev) at [CoreWillSoft](https://www.corewillsoft.com/?ref=commonmain.dev) We are looking for a Full-Stack Software Engineer with strong backend experience in Kotlin/Java and either: solid Frontend (React) expertise, or experience in Kotlin Multiplatform / Android development. Our team operates in a scaled agile approach across Europe with a headquarter in Bonn, Germany. It is responsible for the complete software development lifecycle; including ideation, implementation, and operation of the secure IoT software operating smart buildings and smart homes across the world. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #16 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-16/ Last updated: 2026-06-12T12:29:33.000Z We tackle the big question: Is Kotlin Multiplatform actually worth using in 2026? We dive into a step-by-step guide for migrating to **Koin Annotations** in multi-module projects, the impact of **Swift Export** with proper enum support in Kotlin 2.3.0, and a deep technical look at the mental models of **concurrency and parallelism**. Plus, we explore **Haze 2.0's** pluggable visual effects engine, a guide to building production-ready KMP SDKs, and a unique **OTX Runtime Engineer** role at Salvo Software. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. ❓ [Is Kotlin Multiplatform (KMP) actually worth using in 2026?](https://www.reddit.com/r/androiddev/comments/1sx6qkg/is%5Fkotlin%5Fmultiplatform%5Fkmm%5Factually%5Fworth%5Fusing/?utm%5Fsource=share&utm%5Fmedium=web3x&utm%5Fname=web3xcss&utm%5Fterm=1&utm%5Fcontent=share%5Fbutton) Explore this Reddit discussion on the pros and cons of KMP and learn from the real-world experiences of fellow developers. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 🪙 [Migrating from Koin DSL to Koin Annotations in a Multimodule Project: A Step-by-Step Guide](https://blog.insert-koin.io/migrating-from-koin-dsl-to-koin-annotations-in-a-multimodule-project-a-step-by-step-guide-a38a82f56e17?ref=commonmain.dev) Today we’re going to explore how to migrate a Compose Multiplatform multi-module project from Koin DSL to Koin Annotations. We’ll take a hands-on approach, diving deep into a [project example](https://github.com/CodandoTV/Netflix-CMP?ref=commonmain.dev) built by the [CodandoTV](https://codandotv.com/?ref=commonmain.dev) community. ✂️ [Managing Gradle Daemons while Coding with AI](https://proandroiddev.com/managing-gradle-daemons-while-coding-with-ai-359cf1a4aeb3?ref=commonmain.dev) How to use a `PreToolUse` hook to automatically prune stale Java processes and reclaim your RAM. 🚦 [Threads, Mutexes, Semaphores, Dispatchers & Parallelism: The Mental Model Most Engineers Are Still Missing](https://medium.com/@mr.califer/threads-mutexes-semaphores-dispatchers-parallelism-the-mental-model-most-engineers-are-still-e8df4f2438d8?ref=commonmain.dev) You use them every day. You know their names. But do you truly understand why they exist, what they cost and how your CPU has been quietly lying to you the whole time? 🛠️ [Building a Production-Ready Kotlin Multiplatform SDK for Android & iOS](https://proandroiddev.com/building-a-production-ready-kotlin-multiplatform-sdk-for-android-ios-0044cd5d1baf?ref=commonmain.dev) If you’re a mid-to-senior Android or iOS engineer who has heard the Kotlin Multiplatform (KMP) buzz but isn’t sure what a production-grade shared SDK actually looks like — this article is for you. We’ll go well beyond “Hello KMP” and walk through the architecture, patterns, and hard-won decisions behind a real SDK that ships `.aar` to Android and `.xcframework` to iOS. 🏎️ [The Clean Line: Swift Export for KMP](https://www.kmpbits.com/posts/swift-export-kmp?ref=commonmain.dev) Kotlin 2.3.0 shipped Swift Export with proper enum support. This article covers the before, the after, and the things you need to know before you flip the switch. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. ⚡ [Compose Performance Skills](https://github.com/skydoves/compose-performance-skills?ref=commonmain.dev) A curated library of Agent Skills focused on Jetpack Compose performance - highly applicable to Compose Multiplatform performance as well. 🫨 [Haze 2.0: A Pluggable Visual Effects Engine](https://chrisbanes.me/posts/haze-2.0/?ref=commonmain.dev) Haze is a library for backdrop-style visual effects in Jetpack Compose and Compose Multiplatform. Up until now, blur has been the headline feature and the architecture has been built around that assumption. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Pulsar**](https://docs.swmansion.com/pulsar/sdk/kmp/?ref=commonmain.dev) Rich and ready-to-use haptics library. - [**Colormath**](https://github.com/ajalt/colormath?ref=commonmain.dev) Colormath is a Kotlin Multiplatform library for color manipulation and conversion. - [**KMPUtils**](https://github.com/respawn-app/KMPUtils?ref=commonmain.dev) KMP Utils is a collection of all the things that are missing from Kotlin STL, popular KMP libraries & platform SDKs. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED ****Carrd** \- Simple, free, fully responsive one-page sites for pretty much anything. Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [OptyMacros - Optimize your diet. Eat what you want.Opty makes planning and tracking effortless. Plan your day, adjust as needed, and track progress automatically with exact quantities.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon.svg)Optimize your diet. Eat what you want.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/opty-logo.DuCD3-Cy_1p1EFQ.svg)](https://optymacros.com/?ref=commonmain.dev) CMP app with custom canvas widgets for charts and other visual elements. [GitHub - terrakok/CozySpaceContribute to terrakok/CozySpace development by creating an account on GitHub.![](https://static.ghost.org/v5.0.0/images/link-icon.svg)GitHubterrakok![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/CozySpace)](https://github.com/terrakok/CozySpace?ref=commonmain.dev) A minimal, distraction-free tray app bringing ambient sounds to your desktop. Perfect for deep work, reading, or meditation. [Better: Gym & Calorie Tracker - Apps on Google PlayGym log & calorie tracker in one app. Track lifts, macros, and nutrition.![](https://static.ghost.org/v5.0.0/images/link-icon.svg)Apps on Google PlayBehzod Halil![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/988KdBr1Ed6q13_yIQPRZThGWynx4gV_8nD4i9DrtcxJ1MCgIVNxyUDjzW4Z0go8fdcVvCWDC2mjQJtBKpdMYw)](https://play.google.com/store/apps/details?id=io.behzodhalil.better&ref=commonmain.dev) ****→** [Reddit discussion](https://www.reddit.com/r/Kotlin/comments/1t0q2v9/built%5Fa%5Fnutrition%5Fworkout%5Ftracker%5Fwith%5Fkotlin/?ref=commonmain.dev) about shipping the app to production. ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🚗 [OTX Runtime Engineer](https://apply.workable.com/salvo-software/j/89212BD61C/?ref=commonmain.dev) at [Salvo Software](https://www.salvosoftware.com/?ref=commonmain.dev) We are looking for a Senior OTX Runtime Engineer to design and ship a production-grade runtime for the ISO 13209 Open Test sequence eXchange (OTX) standard. This is a deeply technical, high-ownership role at the core of Salvo's diagnostic toolchain. The work demands equal fluency in language-implementation concepts, Kotlin Multiplatform engineering, and automotive diagnostic protocols. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev Every Tuesday, the few KMP links actually worth your time. Hand-picked, no AI filler. Join free Email sent! Check your inbox to complete your signup. Free forever · One email every Tuesday · No spam, unsubscribe anytime. Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads. ### Kotlin Multiplatform Newsletter #15 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-15/ Last updated: 2026-06-03T15:15:02.000Z We cover the launch of the Kotlin Professional Certificate by JetBrains on LinkedIn Learning and a massive $30,000 grant from the Kotlin Foundation to build a KMP Contest Starter Kit. We dive into technical deep dives on Kotlin Flows (Buffer vs. Conflate vs. Debounce), production-grade IoT network connectivity, and the art of KMP Modularization. Plus, new tools like Halogen for AI-generated Material 3 themes, ComposePdf, and a look at iShape, an AI macro tracker built with 100% Kotlin across the entire stack. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. 🎓 [Kotlin Professional Certificate by JetBrains – Now on LinkedIn Learning](https://blog.jetbrains.com/kotlin/2026/04/kotlin-professional-certificate-by-jetbrains-now-on-linkedin-learning/?ref=commonmain.dev) JetBrains has partnered with LinkedIn Learning to offer the [Kotlin Professional Certificate](https://kotl.in/pro-cert-lil?ref=commonmain.dev). This is a structured learning path that covers the full scope of modern software development – from Kotlin essentials all the way to building full-stack, multiplatform applications for mobile, desktop, web, and backend environments. 🏆 [Create This Year’s KMP Contest Starter Kit](https://kotlinfoundation.org/news/kmp-contest-starter-kit-2026/?ref=commonmain.dev) (Kotlin Foundation) Every year, students and recent graduates compete in the Kotlin Multiplatform Contest to build apps and earn a trip to KotlinConf. To support their efforts, the Kotlin Foundation is offering a new grant for the creation of a KMP Contest Starter Kit. ****Up to $30,000 is available** to support the selected grantee in building an open source sample codebase and accompanying documentation which will be used by contest participants to jumpstart their submission. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. 🌊 [Kotlin Flows: Buffer, Conflate, and Debounce](https://www.youtube.com/watch?v=rHYlUGC109I&ref=commonmain.dev) In Kotlin's Flow API, when we run our emitter and collector on different coroutines, it's possible for the emitter to outpace the collector, producing new values faster than it can consume. What happens to the values when the collector isn't ready for them? In today's video, we look at three strategies we can use for this situation. 🏄 [How we built iShape using 100% Kotlin](https://medium.com/@ofekteken/how-we-built-ishape-using-100-kotlin-43c3941aec83?ref=commonmain.dev) This is the story of how a team of two built an entire product end-to-end using one language we genuinely believe is superior: Kotlin. iOS, Android, backend, AI pipeline — all of it. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 🧩 [KMP Modularization: From Layers to Features](https://www.kmpbits.com/posts/kmp-modularization-intro?ref=commonmain.dev) A poorly organised car doesn’t fail on the drawing board. It fails in the pit lane, under pressure, when the engineer needs to make a change in three seconds and can’t find what he’s looking for. Your Kotlin Multiplatform project is no different. 🛜 [Building a Production-Grade Network Connectivity Layer in Kotlin Multiplatform: The Complete Guide for IoT Transport](https://medium.com/@mr.califer/building-a-production-grade-network-connectivity-layer-in-kotlin-multiplatform-the-complete-guide-5dfb3213d45f?ref=commonmain.dev) A deep technical walkthrough of designing and implementing a shared network monitoring system that works identically on Android and iOS — including SSID, frequency band, interface binding, subnet broadcast, and real-time reactive state — built for IoT UDP transport but applicable to any KMM project that needs to treat connectivity as a first-class concern. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 🪭 [Kmp Resources Unfold](https://github.com/mohamedshemees/kmp-resources-unfold?ref=commonmain.dev) Kmp Resources Unfold is a professional productivity tool designed for Android Studio and IntelliJ IDEA developers. It bridges a major gap in the IDE by providing visual management for assets across all your Kotlin Multiplatform (KMP) modules. 📄 [ComposePdf](https://github.com/kdroidFilter/ComposePdf?ref=commonmain.dev) A Kotlin Multiplatform PDF rendering and text-extraction library built on top of pdfium and Compose Multiplatform. Compose-first API, and a sample desktop/mobile reader with thumbnails, progressive rendering, and selectable text. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Halogen**](https://github.com/himattm/halogen?ref=commonmain.dev) Halogen turns natural language into complete [Material 3](https://m3.material.io/?ref=commonmain.dev) themes at runtime. Give it a prompt like "warm coffee shop" or "neon cyberpunk" and it generates colors, typography, and shapes, all cached so the LLM only runs once per prompt. - [**FileKit**](https://github.com/vinceglb/FileKit?ref=commonmain.dev) Pick and save Files, Medias and Folder for Kotlin Multiplatform and Compose Multiplatform - a powerful cross-platform file operations library for Kotlin Multiplatform. - [**SafeGradle**](https://github.com/MohammedAlaaMorsi/SafeGradle?ref=commonmain.dev) SafeGradle is a professional-grade security scanner for IntelliJ IDEA that protects your development environment from malicious Gradle build scripts. It identifies security risks like hidden network calls, shell execution, and credential leaks *before* they can compromise your system. - [**protovalidate-kt**](https://github.com/bmcreations/protovalidate-kt?ref=commonmain.dev) Kotlin code generation for [protovalidate](https://github.com/bufbuild/protovalidate?ref=commonmain.dev) (buf.validate) and [protoc-gen-validate](https://github.com/bufbuild/protoc-gen-validate?ref=commonmain.dev) (PGV) constraints. Generates Kotlin validation functions from protobuf constraint annotations at compile time via a `protoc` plugin. Includes a lightweight runtime library for common validation logic. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED ****Carrd** \- Simple, free, fully responsive one-page sites for pretty much anything. Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [Heron for bluesky - Apps on Google PlayA tiny, graceful bluesky client![](https://static.ghost.org/v5.0.0/images/link-icon.svg)Apps on Google PlayAdetunji Dahunsi![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/hOlh1Qq5D4cJ8N4HNyiagKhWH66c1QyMz1WrPJ7IdP0dbH_S1RLmFDOvsjXHAWHDx_mpdlgZ1c5gqhFhSQxTDa8)](https://play.google.com/store/apps/details?id=com.tunjid.heron&referrer=utm%5Fcampaign%3Dandroid%5Fmetadata%26utm%5Fmedium%3Dweb%26utm%5Fsource%3Dgithub.com%26utm%5Fcontent%3Dbadge&ref=commonmain.dev) → Link to [Heron GitHub repository](https://github.com/tunjid/heron?ref=commonmain.dev) [iShape: AI Macro Tracker App - App StoreDownload iShape: AI Macro Tracker by Ofek Teken on the App Store. See screenshots, ratings and reviews, user tips, and more apps like iShape: AI Macro Tracker.![](https://static.ghost.org/v5.0.0/images/link-icon.svg)App StoreOfek Teken![](https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/ce/bf/d8/cebfd840-c68a-27c2-94ed-8e56b8b63bed/Placeholder.mill/1200x630wa.jpg)](https://apps.apple.com/us/app/ishape-macros-tracker/id6514314381?ref=commonmain.dev) → Link to [Play Store](https://play.google.com/store/apps/details?id=com.ofekTe.iShape&ref=commonmain.dev) version [GitHub - reivaj-gg/Clarity: Clarity: A cognitive training and self-awareness laboratory built with Kotlin Multiplatform. Play science-backed games, track your daily context, and unlock AI-driven insights about your mindClarity: A cognitive training and self-awareness laboratory built with Kotlin Multiplatform. Play science-backed games, track your daily context, and unlock AI-driven insights about your mind - rei…![](https://static.ghost.org/v5.0.0/images/link-icon.svg)GitHubreivaj-gg![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/Clarity)](https://github.com/reivaj-gg/Clarity?ref=commonmain.dev) [GitHub - snj07/req-lab: Open-Source Desktop API client built with Kotlin (KMP). HTTP requests, scripting, variables, collections, and Postman import — runs offline. Alternative to Postman/Insomnia.Open-Source Desktop API client built with Kotlin (KMP). HTTP requests, scripting, variables, collections, and Postman import — runs offline. Alternative to Postman/Insomnia. - snj07/req-lab![](https://static.ghost.org/v5.0.0/images/link-icon.svg)GitHubsnj07![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/req-lab)](https://github.com/snj07/req-lab?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🏀 [Senior iOS/KMP Engineer](https://jobs.ashbyhq.com/jump/4f12f5ea-b995-4e16-8d9f-5d81c7fb4178?ref=commonmain.dev) at [Jump](https://www.jump.com/?ref=commonmain.dev) We’re looking for a Senior iOS Engineer to help build and evolve Jump’s mobile apps. You’ll be an early member of our mobile team, contributing hands-on to core features, architecture, and technical direction as our app and platform scale. Our mobile stack uses Kotlin Multiplatform (KMP) for shared data and domain layers, with a native SwiftUI layer on iOS. In this role, you’ll write production Kotlin Multiplatform code and own the iOS user experience working across the full mobile stack to deliver high-quality, fan-facing features. You’ll collaborate closely with other mobile engineers, product managers, and designers to ship thoughtful experiences to a passionate and growing sports audience. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #14 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-14/ Last updated: 2026-06-03T15:14:53.000Z We celebrate the arrival of the **Koin Compiler Plugin 1.0.0-RC1**, finally unlocking compile-safe dependency injection for Kotlin and KMP. We explore how to convince decision-makers that KMP is a fundamental shift in capital allocation, and dive into technical deep dives on **observability with Kotzilla**, 3-line ViewModels, and the hard cut-off for **AGP 10.0**. Plus, we look at **UI Testing in Compose Multiplatform 1.11**, the **Materia 3D Engine**, and a featured **Senior iOS/KMP role at Jump**. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. 🪙 [Koin Compiler Plugin 1.0.0-RC1 — Unlocking Compile-Safe Dependency Injection for Kotlin & KMP](https://blog.insert-koin.io/unlocking-koin-compile-safety-6278840ab171?ref=commonmain.dev) Compile-time safety has been one of the most requested features by the community. For years, verifying your Koin dependency graph required runtime tools with `checkModules()` and `verify()` in your test suite. They run after compilation. If something is missing, you find out in test results, not at build time. It’s now time for new generation of tools for Koin. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. SPONSORED ****Carrd** \- Simple, free, fully responsive one-page sites for pretty much anything. Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) 👉 [Helping Decision-Makers Say Yes to Kotlin Multiplatform (KMP)](https://blog.jetbrains.com/kotlin/2026/04/helping-decision-makers-say-yes-to-kmp/?ref=commonmain.dev) In the current competitive landscape, the traditional mobile development model characterized by maintaining independent, duplicated codebases for iOS and Android is no longer a sustainable use of capital. This approach systematically introduces feature lag, technical debt, and a fragmented engineering culture that hinders organizational agility. For leadership, adopting [Kotlin Multiplatform (KMP)](https://kotlinlang.org/multiplatform/?ref=commonmain.dev) must be viewed as a fundamental shift in capital allocation for mobile engineering. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 🦖 [Kotlin Multiplatform observability with Kotzilla SDK and the KotlinConf App](https://medium.com/kotzilla/kotlin-multiplatform-observability-with-kotzilla-sdk-and-the-kotlinconf-app-170fcdc80845?ref=commonmain.dev) With more and more Kotlin Multiplatform apps in production, how do you get one consistent view of crashes and app vitals across all targets? how do you find the actual root cause of app issues when your code is shared Kotlin code running on Android, iOS, JVM and Web? 🤏 [Your ViewModel Should Be 3 Lines Long](https://medium.com/@felix.lf/your-viewmodel-should-be-3-lines-long-984e32f0cde9?ref=commonmain.dev) A pure-Kotlin UIModel pattern for KMP — same class on SwiftUI, Kobweb, and Compose. No AndroidX required. ⚠️ [Evolution of Kotlin Multiplatform: Migration to AGP 10](https://medium.com/@radoslaw.tywanek/evolution-of-kotlin-multiplatform-migration-to-agp-10-1c6144b37614?ref=commonmain.dev) The Hard Cut-off is coming. Don’t let AGP 10.0 turn your deprecation warnings into build failures. 📝 [Dokka V2 for KMP Libraries](https://medium.com/proandroiddev/dokka-v2-for-kotlin-multiplatform-libraries-049b4754a1c9?ref=commonmain.dev) Dokka is an API documentation engine for Kotlin that supports mixed-language projects. This means that you can have KDocs or JavaDocs in your project, and Dokka will generate good-looking and unified docs for you. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 🔪 [Slot pattern, the slicing compose UI](https://medium.com/@amit.work35/slot-pattern-the-slicing-compose-ui-1e4eccedfbb9?ref=commonmain.dev) Let’s talk about how transitioning to the Slot Pattern can save your sanity, clean up your codebase, and actually improve your app’s rendering performance. 🏁 [Clean Lap: UI Testing in Compose Multiplatform](https://www.kmpbits.com/posts/compose-ui-test-cmp?ref=commonmain.dev) Compose Multiplatform 1.11 (currently in beta) brings `runComposeUiTest` v2 support for non-Android targets. Writing a test in `commonTest` and running it on Android, desktop, and iOS is no longer an experimental workaround. This article walks through the setup, the API, and the one coroutine change in 1.11 that will break your existing tests if you upgrade without knowing about it. 🗒️ [Table KMP](https://github.com/mamon-aburawi/Table-KMP?ref=commonmain.dev) TableKMP is a highly customizable, deeply interactive, and buttery-smooth data grid / table library built natively for Compose Multiplatform. Whether you need a simple list, a dense enterprise financial grid, or a fully interactive Kanban-style task board with drag-and-drop, TableKMP adapts perfectly across Desktop, Web, iOS, and Android. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**kmp-app-version**](https://github.com/adrcotfas/kmp-app-version?ref=commonmain.dev) A Gradle plugin that keeps your Android and iOS app versions in sync from a single source of truth: the Gradle version catalog (`libs.versions.toml`). - [**Materia - Kotlin Multiplatform 3D Engine**](https://github.com/codeyousef/Materia?ref=commonmain.dev) Kotlin Multiplatform 3D graphics library providing Three.js-equivalent capabilities with WebGPU/Vulkan backends. Write 3D apps once, deploy on JVM, Web, Android, iOS & Native. 60 FPS target, <5MB size, type-safe math, scene graph, materials & more. - [**Dokka**](https://github.com/Kotlin/dokka?ref=commonmain.dev) Dokka is an API documentation engine for Kotlin. Just like Kotlin itself, Dokka supports mixed-language projects. It understands Kotlin's [KDoc comments](https://kotlinlang.org/docs/kotlin-doc.html?ref=commonmain.dev#kdoc-syntax) and Java's [Javadoc comments](https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html?ref=commonmain.dev). - [**Sysnotify**](https://gitlab.com/connect2x/sysnotify?ref=commonmain.dev) Cross-platform system notifications for Kotlin Multiplatform. ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🏀 [Senior iOS/KMP Engineer](https://jobs.ashbyhq.com/jump/4f12f5ea-b995-4e16-8d9f-5d81c7fb4178?ref=commonmain.dev) at [Jump](https://www.jump.com/?ref=commonmain.dev) We’re looking for a Senior iOS Engineer to help build and evolve Jump’s mobile apps. You’ll be an early member of our mobile team, contributing hands-on to core features, architecture, and technical direction as our app and platform scale. Our mobile stack uses Kotlin Multiplatform (KMP) for shared data and domain layers, with a native SwiftUI layer on iOS. In this role, you’ll write production Kotlin Multiplatform code and own the iOS user experience working across the full mobile stack to deliver high-quality, fan-facing features. You’ll collaborate closely with other mobile engineers, product managers, and designers to ship thoughtful experiences to a passionate and growing sports audience. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #13 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-13/ Last updated: 2026-06-03T15:14:46.000Z We celebrate the Golden Kodee Awards finalists and dive into a technical deep dive on running Room databases client-side in the browser via Kotlin/Wasm and SQLite. We also explore how Koin annotations can make `expect/actual` obsolete, the implementation of cross-platform shaders in Compose Multiplatform, and a breakdown of shared element transitions in Navigation 3\. Plus, new tools for validation, geolocation, and a cyberpunk glitch effect in Jetpack Compose. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. 🏅 [Golden Kodee Awards finalists have been chosen](https://kotlinconf.com/awards/?ref=commonmain.dev) Winners will be announced at KotlinConf'26 in Munich, May 20-22. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. 💢 [At the Mountains of Madness: Rewriting a 100-Line PowerShell Script as a KMP Desktop App](https://www.costafotiadis.com/at-the-mountains-of-madness-rewriting-a-100-line-powershell-script-as-a-kmp-desktop-app/?ref=commonmain.dev) Not sure when it happened, but at some point I contracted this strange illness that compels someone to tinker with their OS on their spare time. The latest symptom: a floating clock widget written in Powershell, that is visible at all times. (I hide my taskbar cause I pretend I'm a minimalist). Since `Powershell` kinda sucks, I wondered if I could do the same with a proper Compose desktop app. Let's lose a few braincells together, shall we? ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) ⤵️ [Koin Annotations Make expect/actual Obsolete in KMP](https://medium.com/@tezov.app/koin-annotations-make-expect-actual-obsolete-in-kmp-5f1445e2055e?ref=commonmain.dev) Today, we can go further. With Koin annotations and the Koin compiler, you can completely bypass `expect/actual`. This method works seamlessly with Compose Multiplatform and lets you maintain a clean architecture while keeping platform-specific logic where it belongs. 💽 [Room Database in the Browser: Kotlin/Wasm and SQLite with OPFS](https://medium.com/@seijind/room-database-in-the-browser-kotlin-wasm-and-sqlite-with-opfs-9c32cc6def61?ref=commonmain.dev) Room 3.0 shipped with Kotlin Multiplatform support, and tucked inside that release is something most developers missed: web support. Not “web” as in REST APIs. Actual Room database operations, running client-side in the browser, powered by SQLite compiled to WebAssembly and storing data in the Origin Private File System (OPFS). This article walks through a minimal working example — a Note-taking app — to show exactly how this works, what the moving parts are, and where the gotchas hide. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. ❇️ [How to Implement Shaders in Compose Multiplatform (Android, iOS, Desktop & Web)](https://proandroiddev.com/how-to-implement-shaders-in-compose-multiplatform-android-ios-desktop-web-c86a36dd9666?ref=commonmain.dev) In this article, you’ll learn how to build a clean and reusable shader abstraction using Compose Multiplatform that works seamlessly across Android, iOS, Desktop (Windows/macOS/Linux), and Web (WASM/JS) from a shared `commonMain` codebase. ⭐ [Sinasamaki](https://www.sinasamaki.com/?ref=commonmain.dev) This is a place to learn how to build delightful apps. Here you will find illuminating articles, detailing implementation of inventive and mesmerizing designs, using Jetpack Compose. 〰️ [Glitch Effect in Jetpack Compose](https://www.sinasamaki.com/glitch-effect-in-jetpack-compose/?ref=commonmain.dev) Glitch effects are a staple in sci-fi movies and cyberpunk games. In this article, we will see how easy it is to implement this effect in Jetpack Compose. 🏎️ [Smooth Handoff](https://www.kmpbits.com/posts/nav3-shared-elements?ref=commonmain.dev) I had Navigation 3 set up, screens were flowing, and I wanted to add shared element transitions. An image from a list item that morphs into the header of a detail screen. The kind of detail that makes an app feel deliberate. I spent an afternoon hunting for the Nav3 equivalent of what I knew from Navigation 2\. Found nothing. So I did what any developer does under a deadline: I switched back to Nav2 and shipped. Months later, while reading through the Navigation 3 source, I found `LocalNavAnimatedContentScope`. It had been there the whole time. The smooth handoff was always available. I just did not know where to pick up the baton. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**KVerify**](https://github.com/KVerify/kverify?ref=commonmain.dev) Type-safe, composable validation for Kotlin Multiplatform. KVerify is what validation should have been. A clean DSL, typed failures, automatic path tracking — and nothing your project didn't already have. - [**barK**](https://ivangarzab.github.io/barK/?ref=commonmain.dev) A lightweight, extensible logging library for Kotlin Multiplatform. - [**RikkaIcons**](https://github.com/rainxchzed/RikkaIcons?ref=commonmain.dev) Semantic icon tokens for Compose Multiplatform. One API, any icon pack. Built with & for Jetpack Compose. - [**Geolocation-KMP**](https://github.com/mamon-aburawi/Geolocation-KMP?ref=commonmain.dev) A hassle-free Geolocation and Geocoding library for KMP. Get location permissions, fetch GPS coordinates, and translate them into localized street addresses using a clean, coroutine-first API. - [**FileMapper KMP**](https://github.com/mamon-aburawi/FileMapper-KMP?ref=commonmain.dev) A lightweight, powerful Kotlin Multiplatform (KMP) library designed to seamlessly map files (XLSX, JSON) to Kotlin Data Classes. Supporting Android, iOS, Desktop, and Web (Wasm/JS), it provides both Compose-ready UI triggers and pure logic-based APIs. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED ****Carrd** \- Simple, free, fully responsive one-page sites for pretty much anything. Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [Sweeper - by sinasamaki App - App StoreDownload Sweeper - by sinasamaki by sinasamaki on the App Store. See screenshots, ratings and reviews, user tips, and more apps like Sweeper - by sinasamaki.![](https://static.ghost.org/v5.0.0/images/link-icon.svg)App Storesinasamaki![](https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/9d/70/0d/9d700d75-60cf-b824-5d29-07466f10d0aa/AppIcon-0-0-1x_U007epad-0-11-0-85-220.png/1200x630wa.jpg)](https://apps.apple.com/us/app/sweeper-by-sinasamaki/id6752220495?ref=commonmain.dev) → Play Store version available [here](https://play.google.com/store/apps/details?id=com.sinasamaki.chroma.sweeper&hl=en-US&ref=commonmain.dev). [Kado - Community DecksBrowse and download community flashcard decks for the Kado spaced repetition app.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon.png)Kado![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/kado_icon_512.png)](https://decks.eldiem.xyz/?ref=commonmain.dev) → Link to [Kado GitHub Repository](https://github.com/LisandroDiMeo/kado-app?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #12 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-12/ Last updated: 2026-06-03T15:14:35.000Z We discuss the diversification of Kotlin as Android developers now make up only 25% of the community, and examine the strategic wind-down of Android KTX. We also feature a technical deep dive into Coroutine bridges for callback-based APIs, a look at writing your first Kotlin compiler plugin, and a showcase of the first native block-based editor for Compose Multiplatform. Plus, new tools for AI-driven orchestration, image metadata, and a Senior Staff role at Fanatics. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. 🐙 [Kotlin Devs Diversify: Android is 25% Now](https://www.youtube.com/watch?v=WcQ-bOItdOE&ref=commonmain.dev) Hadi Hariri discusses the changing profile of the Kotlin community, noting that at the first Kotlin Conf, about 75% of attendees were Android developers, but now Android is only around 25 to 30%. The community has become more diversified technologically, attracting people with server and mobile backgrounds. 🛠️ [An update on Android KTX](https://jakewharton.com/an-update-on-android-ktx/?ref=commonmain.dev) Eight years ago [we launched a library of Kotlin extensions](https://android-developers.googleblog.com/2018/02/introducing-android-ktx-even-sweeter.html?ref=commonmain.dev) for the Android platform, Android KTX. In the time since, the library became Core KTX, and numerous other KTX libraries were written for other AndroidX libraries. And while KTX's approach to adding Kotlin niceties was built on a strong technology foundation, we’ve made the difficult decision to begin winding down our KTX extension libraries. ➕ [How KMP Helped a 378-Year-Old Company](https://www.youtube.com/watch?v=nUzcVw5Kv20&ref=commonmain.dev) Anshika Kaul shares how Posten Bring used Kotlin Multiplatform to centralize business rules from a legacy monolith and improve life for both developers and the business. She explains how the team built trust through small, measurable wins, got product owners reading Kotlin and opening PRs, and turned shared logic into live documentation. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED ****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**](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 🐱 [Kotlin Coroutine bridges: converting any callback-based Android API to suspend functions](https://www.revenuecat.com/blog/engineering/kotlin-coroutine-bridge/?ref=commonmain.dev) This article explores the suspendCoroutine bridge pattern, showing how to convert callback APIs into clean suspend functions, handle diverse callback shapes, design proper error propagation, and how SDKs like RevenueCat apply it at scale. 🔬 [Writing My First Kotlin Compiler Plugin (And Figuring It Out Along the Way)](https://itnext.io/writing-my-first-kotlin-compiler-plugin-and-figuring-it-out-along-the-way-041f78c723a1?ref=commonmain.dev) This is not a tutorial. I’m not presenting expertise here. I’m documenting my first working implementation and what I understood while building it. The goal is intentionally simple: Build a Kotlin compiler plugin that logs every class during compilation. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 📝 [Cascade Editor](https://github.com/linreal/cascade-editor?ref=commonmain.dev) The first native block-based editor for Compose Multiplatform. Notion/Craft-style editing, implemented as a shared Kotlin editor core for Android and iOS: draggable blocks, slash commands, rich-text spans, custom block types, and versioned document serialization, all without WebView, HTML/contentEditable, or embedded JavaScript editors. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**koog-compose**](https://github.com/BrianMwas/koog-compose?ref=commonmain.dev) A developer-first Kotlin Multiplatform (KMP) runtime for building AI-driven features that orchestrate app logic, device capabilities, and UI from a single declarative DSL. - [**Printer KMP**](https://github.com/mamon-aburawi/Printer-KMP?ref=commonmain.dev) A powerful, lightweight Kotlin Multiplatform library designed to make interacting with ESC/POS thermal receipt printers effortless. Built exclusively for Android and Desktop (JVM) targets, this library provides a fluent API for hardware control, reactive connection monitoring, and seamless Jetpack Compose UI capturing. - [**Maryk**](https://github.com/marykdb/maryk?ref=commonmain.dev) A Kotlin Multiplatform framework for defining, validating, serializing, and storing data models consistently across multiple platforms, including iOS, macOS, watchOS, tvOS, Linux, Windows, Android, JVM, JavaScript and Wasm. - [**Kim - Kotlin Image Metadata**](https://github.com/Ashampoo/kim?ref=commonmain.dev) Kim is a Kotlin Multiplatform library for reading and writing image metadata. - [**KtorMonitor**](https://github.com/CosminMihuMDC/KtorMonitor/?ref=commonmain.dev) Powerful tool to monitor Ktor Client requests and responses, making it easier to debug and analyze network communication. Full support for Android, iOS, Desktop (JVM), Wasm, and JS. - [**cryptography-kotlin**](https://github.com/whyoleg/cryptography-kotlin?ref=commonmain.dev) A cryptography library for Kotlin Multiplatform, which wraps well-known future-proof platform-native solutions like [OpenSSL](https://www.openssl.org/?ref=commonmain.dev), [CryptoKit](https://developer.apple.com/documentation/cryptokit/?ref=commonmain.dev), [WebCrypto](https://developer.mozilla.org/en-US/docs/Web/API/Web%5FCrypto%5FAPI?ref=commonmain.dev) or [JCA](https://docs.oracle.com/en/java/javase/17/security/java-cryptography-architecture-jca-reference-guide.html?ref=commonmain.dev) with a type-safe uniform API, aligned defaults as well as tested for cross-compatibility between platforms. [](https://github.com/whyoleg/cryptography-kotlin?ref=commonmain.dev#cryptography-kotlin) ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED ****Carrd** \- Simple, free, fully responsive one-page sites for pretty much anything. Whether it's a personal profile, a landing page for your KMP project, or something a bit more elaborate, Carrd has you covered. Simple, responsive, and yup — totally free! [Get Started ](https://try.carrd.co/commonmain?ref=commonmain.dev) [TVee — Universal Remote App for Android TV & Google TVTurn your phone into a free universal Smart TV remote. TVee works with any Android TV & Google TV, offers voice search, keyboard input, and instant auto-detection.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/logo.svg)![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/bage-min.jpg)](https://tveeapp.com/?ref=commonmain.dev) → Creator [Reddit Thread](https://www.reddit.com/r/KotlinMultiplatform/comments/1sejj39/ive%5Fbuilt%5Fa%5Ffully%5Fmultiplatform%5Ftv%5Fremote%5Fapp/?ref=commonmain.dev) [TeaCabinet — Tea Timer & Collection AppYour personal tea collection manager for Android and iOS.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/icon.png)TeaCabinetWarner Creates LLC![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/og-image-1.jpg)](https://teacabi.net/?ref=commonmain.dev) [GitHub - rezaiyan/Lexicon: Lexicon: Kotlin Multiplatform vocabulary learning appLexicon: Kotlin Multiplatform vocabulary learning app - rezaiyan/Lexicon![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-40.svg)GitHubrezaiyan![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/Lexicon)](https://github.com/rezaiyan/Lexicon?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🥅 [Senior Staff Engineer - Mobile](https://fa-exki-saasfaprod1.fa.ocs.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX%5F1/job/27493?ref=commonmain.dev) at [Fanatics](https://www.fanaticsinc.com/?ref=commonmain.dev) As a Senior Staff Mobile Engineer, you’ll be responsible for powering the rapidly growing Fanatics Markets app. In your role, you'll be recognized as a technical leader, combining strategic thinking with hands-on execution. You'll lead ambitious projects, setting the standard for your team through innovative solutions. Your bold decisions will strike the right balance between addressing immediate business needs and ensuring long-term technical excellence. Through your leadership, you’ll foster a culture of excellence and innovation, leaving a lasting impact on both your immediate team and the broader mobile development community. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #11 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-11/ Last updated: 2026-04-03T09:11:53.000Z We look at how Room 3.0 signals the end of the "Android-First" era by embracing true cross-platform persistence, and explore raw lessons from a senior dev shipping KMP to production. We also cover building custom image plugins with Landscapist, distributing Compose Desktop apps with Gradle, and using RikkaUI for zero-Material dependency components. Plus, new tools like WiretapKMP for network interception and KMP job openings at EXANTE and Tonsser. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. 🗓️ The application deadline for [Google Summer of Code 2026 with Kotlin](https://blog.jetbrains.com/kotlin/2026/03/gsoc-2026-contribute-to-kotlin/?ref=commonmain.dev) is near. If you wish to participate make sure to apply until March 31. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. 💽 [RoomDB 3.0: The End of the “Android-First” Era](https://callmeryan.medium.com/roomdb-3-0-the-end-of-the-android-first-era-60b0cdd077e9?ref=commonmain.dev) This is not merely an incremental update. It is a fundamental shift in architecture that moves Room away from its Android-centric roots and into a future where it stands as a peer to the most powerful cross-platform libraries in the ecosystem. 🚀 [I Thought KMP Would Be Just “Kotlin on iOS.” I Was Wrong Here’s What I Learned After Shipping It to Production](https://medium.com/@baharudinmaulana78/i-thought-kmp-would-be-just-kotlin-on-ios-55c74e6caebf?ref=commonmain.dev) You’re a senior Android dev. Kotlin is your home. So when you hear “Kotlin Multiplatform,” you think: easy. Just share some code with iOS, right? That’s what I thought too. Then I actually shipped it. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) ****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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 🌅 [Build Your Own Landscapist Image Plugin in Jetpack Compose](https://skydoves.medium.com/build-your-own-landscapist-image-plugin-in-jetpack-compose-660aecf26236?ref=commonmain.dev) [Landscapist](https://github.com/skydoves/landscapist?ref=commonmain.dev) provides a composable image loading library for Jetpack Compose and Kotlin Multiplatform. Among its image composables, `LandscapistImage` stands out as the recommended choice: it uses Landscapist's own standalone loading engine built from scratch for Jetpack Compose and Kotlin Multiplatform, with no dependency on platform-specific loaders like Glide or Coil. 🧳 [From C++ Cores to Room 3.0: A Journey of Cross-Platform Persistence](https://medium.com/@njiang.pin/from-c-cores-to-room-3-0-a-journey-of-cross-platform-persistence-f2913d4b6682?ref=commonmain.dev) In the world of mobile engineering, “cross-platform” is often discussed as a modern trend, a product of the Kotlin Multiplatform (KMP). However, for those of us who have spent over a decade in the trenches of SQLite, the quest for a unified data layer is a much older story. 🛥️ [Lessons from Building and Shipping a Compose Desktop App with Gradle](https://cytrowski.me/posts/building-and-shipping-compose-desktop-app-with-gradle/?ref=commonmain.dev) Learn how to build, package, and ship a Compose Desktop application using Gradle, with OS-specific runtimes and a reliable distribution pipeline for Windows and Linux. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 🎨 [RikkaUI ](https://www.rikkaui.dev/?ref=commonmain.dev)\- Composing elements into harmony A shadn/ui-inspired component library and design system for Compose Multiplatform. Copy-paste components you own, zero Material dependency. 🔄 [SVG to Compose](https://github.com/rafaeltonholo/svg-to-compose?ref=commonmain.dev) Convert SVG and Android Vector Drawables (XML) into Jetpack Compose ImageVector code. CLI, Gradle plugin, and online playground. Kotlin Multiplatform supported. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**FuzzyKot**](https://github.com/terrakok/FuzzyKot?ref=commonmain.dev) Fuzzy string matching for Kotlin Multiplatform. - [**WiretapKMP**](https://github.com/skymansandy/wiretapKMP?ref=commonmain.dev) Kotlin Multiplatform network inspection and mocking SDK. Intercept HTTP and WebSocket traffic, mock API responses, and throttle requests — no proxy server needed. - [**Blue-Falcon**](https://github.com/Reedyuk/blue-falcon?ref=commonmain.dev) A Bluetooth BLE "Cross Platform" Kotlin Multiplatform library for iOS, Android, MacOS, Raspberry Pi, Windows and Javascript. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [SimuFlow - API Load Simulation for DevelopersSimulate hundreds of virtual users hitting your API. Find bottlenecks, test failure scenarios, and validate scaling - free desktop tool, no cloud required.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-4.ico)SimuFlowSplodgebox![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/logo_dark.png)](https://www.simuflow.dev/?ref=commonmain.dev) → SimuFlow [Reddit](https://www.reddit.com/r/JetpackCompose/comments/1s7pulq/built%5Fa%5Ffull%5Fdesktop%5Fapp%5Fwith%5Fjetpack%5Fcompose/?ref=commonmain.dev) thread ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 💸 [Mobile Multiplatform Developer (Kotlin/ KMP/ Swift)](https://www.careers-page.com/exante-eu/job/QVV4Y63R?ref=commonmain.dev) at [EXANTE](https://exante.eu/?ref=commonmain.dev) We are looking for a talented and passionate Mobile Multiplatform Developer to join our team. In this role you will be responsible for developing and maintaining our cross-platform mobile applications using Kotlin Multiplatform and Jetpack Compose. ⚽ [Android/KMP Developer](https://jobs.lever.co/tonsser/307dbbd2-db35-4836-9251-b4cb843a4dfd?ref=commonmain.dev) at [Tonsser](https://tonsser.com/?ref=commonmain.dev) You'll join a small, focused team building a best-in-class companion app for the next generation of athletes. This starts as a 6-month freelance engagement with the clear intention of moving into a full-time position. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ### Kotlin Multiplatform Newsletter #10 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-10/ Last updated: 2026-06-03T15:14:26.000Z We explore the launch of Google Summer of Code 2026 for Kotlin and dive into a technical debate on why you shouldn't start coroutine testing with Turbine. We also cover bridging StateFlow and SharedFlow for shared ViewModels, using AI to audit KMP dependency readiness, and highlight useful CMP libraries like Calf and Compose Cupertino. Plus, a look at Super Mario Bros ported to Kotlin and a Senior KMP role at Fanatics. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. ⛱️ [Google Summer of Code 2026 Is Here: Contribute to Kotlin](https://blog.jetbrains.com/kotlin/2026/03/gsoc-2026-contribute-to-kotlin/?ref=commonmain.dev) The Kotlin Foundation is joining [Google Summer of Code (GSoC) 2026](https://summerofcode.withgoogle.com/?ref=commonmain.dev)! If you are a student or an eligible contributor looking to spend your summer working on a real-world open-source project, this is your chance to make a meaningful impact on the Kotlin ecosystem while also benefiting from the mentorship of experienced engineers. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) ****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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) ✋ [Don't Learn Coroutine Testing with Turbine](https://programminghard.dev/dont-learn-coroutine-testing-with-turbine/?ref=commonmain.dev) Turbine is a great testing library. It also makes it easy to write over-specified, flaky tests without realising it. Here's why you should learn coroutine testing without it first. 🏁 [Crossing the Finish Line: StateFlow & SharedFlow in Kotlin Multiplatform](https://www.kmpbits.com/posts/stateflow-kmp?ref=commonmain.dev) In this article, we’ll go from a quick recap of `StateFlow` vs `SharedFlow`, through the KMP bridge problem, all the way to a working shared ViewModel consumed natively on both Android (Jetpack Compose) and iOS (SwiftUI). We’ll also cover the real gotchas that don’t usually make it into the docs. 🤖 [Using AI to Check Your KMP Readiness](https://touchlab.co/using-ai-to-check-your-kmp-readiness?ref=commonmain.dev) Before migrating an Android project to Kotlin Multiplatform, you need to answer one question: are your dependencies ready? Here's how to combine deterministic scripts with AI-powered research to check, without wasting time or money. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Calf**](https://github.com/MohamedRejeb/Calf?ref=commonmain.dev) Calf is a library that allows you to easily create adaptive UIs and access platform specific APIs with Compose Multiplatform (Adaptive UI, File Picker, WebView, Permissions...). - [**Compose Cupertino**](https://github.com/alexzhirkevich/compose-cupertino?ref=commonmain.dev) Compose Cupertino is a Kotlin Multiplatform library for the Compose Multiplatform UI framework. It provides various UI components for making native-looking iOS applications. - [**Kapacity**](https://github.com/DeveloprOfThings/Kapacity?ref=commonmain.dev) Kapacity is a lightweight, zero-allocation Kotlin Multiplatform library for Android and iOS designed to make handling digital data sizes safe, strictly typed, and intuitive. - [**Kotlinx DateTime Fun**](https://github.com/sami-eljabali/kotlinx-datetime-fun?ref=commonmain.dev) Useful extension functions for `kotlinx.datetime` library. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [GitHub - Coding-Meet/DevAnalyzer: DevAnalyzer helps developers analyze, understand, and optimize their entire development setup — from project structure to SDK and IDE storage — all in one unified tool.DevAnalyzer helps developers analyze, understand, and optimize their entire development setup — from project structure to SDK and IDE storage — all in one unified tool. - Coding-Meet/DevAnalyzer![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-29.svg)GitHubCoding-Meet![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/17a2dd14-d030-41e4-a95b-bad524176730)](https://github.com/Coding-Meet/DevAnalyzer?ref=commonmain.dev) [Should I Go Outside? | Yes, No, or Maybe WeatherStop checking complicated weather apps. Just the answer you actually need — YES, NO, or MAYBE.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-3.ico)Should I Go Outside?![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/og-image.jpg)](https://shouldigooutside.now/?ref=commonmain.dev) [GitHub - UnknownJoe796/super-mario-bros-kotlin: A madman’s attempt to port the original Super Mario Bros disassembly to proper Kotlin.A madman’s attempt to port the original Super Mario Bros disassembly to proper Kotlin. - UnknownJoe796/super-mario-bros-kotlin![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-35.svg)GitHubUnknownJoe796![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/super-mario-bros-kotlin)](https://github.com/UnknownJoe796/super-mario-bros-kotlin/tree/main?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🏇 [Senior Mobile Software Engineer](https://fa-exki-saasfaprod1.fa.ocs.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX%5F1/job/27308?ref=commonmain.dev) at [Fanatics](https://www.fanaticsinc.com/?ref=commonmain.dev) We embrace principles of data-driven development, operational excellence, and continuous process optimization to deliver a stable, scalable platform. Central to our strategy is Kotlin Multiplatform, which empowers us to deliver high-quality features quickly and consistently across multiple ecosystems. By focusing on object-oriented design, modern coding practices, open-source frameworks, and third-party platform integrations, we continuously innovate and deliver at speed in this exciting and fast-moving market. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #9 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-9/ Last updated: 2026-06-03T15:14:14.000Z Kotlin 2.3.20 released, Room supporting KMP for JavaScript and WASM, context-aware recomposition budgets for Compose, IntelliJ code selection plugin, how Compose and SwiftUI work under the hood, KMP jobs at Touchlab, and more. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. 🚀 [The Kotlin 2.3.20 release is out! ](https://blog.jetbrains.com/kotlin/2026/03/kotlin-2-3-20-released/?ref=commonmain.dev) Here are the main highlights: \- ****Gradle:** Compatibility with Gradle 9.3.0 and Kotlin/JVM compilation uses the Build tools API by default. \- ****Maven:** Simplified setup for Kotlin projects. \- ****Kotlin compiler plugins:** Lombok is Alpha and improved JPA support in the `kotlin.plugin.jpa` plugin. \- ****Language:** Support for name-based destructuring declarations. \- ****Standard library:** New API for creating immutable copies of `Map.Entry`. \- ****Kotlin/Native:** New interoperability mode for C and Objective-C libraries. 💽 [The first alpha of Room 3.0 has been released!](https://android-developers.googleblog.com/2026/03/room-30-modernizing-room.html?ref=commonmain.dev) Room 3.0 is a major breaking version of the library that focuses on Kotlin Multiplatform (KMP) and adds support for JavaScript and WebAssembly (WASM) on top of the existing Android, iOS and JVM desktop support. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) ****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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 💲 [How KPayment Makes Google Pay & Apple Pay Boring Across Android, iOS, and Web](https://proandroiddev.com/kpayment-cross-platform-apple-pay-google-pay-for-kotlin-multiplatform-032ebc64ff78?ref=commonmain.dev) Integrating Apple Pay and Google Pay in a Kotlin Multiplatform app sounds straightforward until you actually try it. Different SDKs, different lifecycles, different UI entry points. Suddenly, your shared UI is full of platform checks, and the platform source sets are packed with empty stubs just to make things compile. 🌤️ [Tiered Data Fetching: How I Reduced API Calls by \~80% Without Sacrificing Freshness](https://medium.com/@ofek.amirav/tiered-data-fetching-how-i-reduced-api-calls-by-80-without-sacrificing-freshness-9e47f55e8161?ref=commonmain.dev) A cache strategy built around how data actually changes - not how often users open screens. The naive approach to fetching data is simple: the user opens a screen, you fetch the latest data. Every single time. It works. But it’s also incredibly wasteful in ways that compound quickly once you think about the actual nature of the data you’re fetching. 📖 [Gradle vocabulary: projects, builds, artifacts…](https://ivan.canet.dev/blog/2026/03/02/gradle-vocabulary.html?ref=commonmain.dev) To understand discussions about Gradle, it's necessary to understand how things are named—and that can be quite confusing. This is a short article to summarize the various concepts and list tips and tricks I've learned over the years. 🔍 [I tried context parameters, Kotlin's new multi-receiver extension functions](https://ivan.canet.dev/blog/2025/10/13/kotlin-context-parameters.html?ref=commonmain.dev) Kotlin is getting a new concept that will widen the possibility of extension functions. The feature is still experimental in the latest Kotlin version, which makes it the perfect time to try them out. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 🚀 [Introducing Rebound: context-aware recomposition budgets for Compose](https://aditlal.dev/compose-rebound/?ref=commonmain.dev) The Compose ecosystem has solid tooling for tracking recompositions. Layout Inspector shows counts and skip rates. Compiler reports surface stability issues. Rebugger logs argument changes. ComposeInvestigator traces recomposition causes automatically. Each of these tools answers an important question well. But none of them answer this one: "Is this composable recomposing too much **for what it does*?" 👀 [How Compose Preview Works Under the Hood](https://doveletter.dev/preview/articles/compose-preview-internals?ref=commonmain.dev) In this article, you'll explore the full pipeline that transforms a `@Preview` annotation into a rendered image, tracing the journey from the annotation definition itself, through `ComposeViewAdapter` (the FrameLayout that orchestrates the render), `ComposableInvoker` (which calls your composable via reflection while respecting the Compose compiler's ABI), `Inspectable` (which enables inspection mode and records composition data), and the `ViewInfo` tree that maps rendered pixels back to source code lines. 🏎️ [Under the Hood: How Compose and SwiftUI Handle What Happens Off-Screen](https://www.kmpbits.com/posts/sideeffects-under-the-hood?ref=commonmain.dev) The user sees a smooth screen transition, a list that populates, a dialog that appears at just the right moment. What they don’t see is the coroutine that launched in the background, the listener that was cleaned up on exit, the scope that held everything together just long enough to be useful. All that happens off-screen. In the pit lane. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Rebound**](https://github.com/aldefy/compose-rebound?ref=commonmain.dev) Compose recomposition budget monitor — catch runaway recompositions before they ship. Kotlin compiler plugin + IDE cockpit + CLI. Full KMP support. - [**Composable Selection**](https://github.com/dungngminh/composable%5Fselection?ref=commonmain.dev) A lightweight IntelliJ plugin that selects the nearest function call at your cursor. Press again to expand to the parent call — effortless navigation through nested Kotlin function hierarchies. - [**KPayment**](https://github.com/kttipay/KPayment?ref=commonmain.dev) A Kotlin Multiplatform payment library with Compose Multiplatform UI components for Google Pay and Apple Pay across Android, iOS, and Web. One API, shared types, reactive availability detection, and platform-native payment buttons. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [GitHub - kevinguitar/budgetplus: Budget+ is a co-spending tracker, available on Android and iOS. Built by KMP and CMP.Budget+ is a co-spending tracker, available on Android and iOS. Built by KMP and CMP. - kevinguitar/budgetplus![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-28.svg)GitHubkevinguitar![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/budgetplus)](https://github.com/kevinguitar/budgetplus?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 👉 [iOS Developer (Swift/KMP)](https://touchlab.co/ioskmp?ref=commonmain.dev) at [Touchlab](https://touchlab.co/?ref=commonmain.dev) This role will involve directly building client applications using the latest Swift-based tools and Xcode, and coding and interacting with Kotlin libraries. It will include helping to define how our tools will evolve to serve iOS developers better, and directly working on the tools and libraries we publish. 👉 [Kotlin Multiplatform Developer (Contract)](https://touchlab.co/kmpcontract?ref=commonmain.dev) at [Touchlab](https://touchlab.co/?ref=commonmain.dev) This is a contract relationship for project-based engagements. Touchlab has been at the forefront of Kotlin Multiplatform (KMP) since the first Kotlin code ran on an iPhone. We’ve made significant contributions to the KMP ecosystem and are excited to continue growing and improving the community. We’re looking for talented developers with a strong foundation in ****one or more areas** of software development in the competencies listed below. This is a unique opportunity to work on challenging and innovative projects across different industries, from startups to established enterprises. 🍽️ [Kotlin Multiplatform Product Engineer](https://jobs.superbexperience.com/jobs/5642015-kotlin-multiplatform-product-engineer?ref=commonmain.dev) at [Superb](https://www.superbexperience.com/?ref=commonmain.dev) 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. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #8 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-8/ Last updated: 2026-06-03T15:13:48.000Z Reduced Play Store fees for app developers, deep-dive into architecture wars regarding KMP ViewModels, cross-platform & open source 2FA app, useful Compose Multiplatform libraries and a job opportunity at Touchlab. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. ☀️ Android ecosystem updates: [A new era for choice and openness](https://android-developers.googleblog.com/2026/03/a-new-era-for-choice-and-openness.html?ref=commonmain.dev) Today we are announcing substantial updates that evolve our business model and build on our long history of openness globally. We’re doing that in three ways: more billing options, a program for registered app stores, and lower fees and new programs for developers. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) ****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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 🤖 [Is AndroidX ViewModel the best choice for KMP projects?](https://touchlab.co/kmp-view-models?ref=commonmain.dev) Sharing ViewModels between platforms affects the iOS developer experience. In this post we will discuss this topic and some possible solutions in KMP projects that respect the native feel of iOS and Android. 🤍 KMP Architecture: [The Case for Pure Kotlin ViewModels](https://proandroiddev.com/kmp-architecture-the-case-for-pure-kotlin-viewmodels-c85ce95499ee?ref=commonmain.dev) In this article, I’ll walk through the “Pure Kotlin ViewModel” pattern I used to keep shared ViewModels platform-agnostic, how I bridged them to SwiftUI using explicit wrappers, and how this approach compares to newer, library-driven alternatives in the evolving KMP ecosystem. 🔄 [Building Offline-First Bidirectional Sync in Kotlin Multiplatform](https://medium.com/@ofek.amirav/building-offline-first-bidirectional-sync-in-kotlin-multiplatform-8854a04e2e04?ref=commonmain.dev) The internet is full of tutorials on how to fetch data from an API and display it in a UI. But very few show you what happens when the network suddenly vanishes mid-operation and what an app that handles that gracefully actually looks like under the hood. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**hyphen**](https://github.com/DenserMeerkat/hyphen?ref=commonmain.dev) Markdown-aware rich text editor for Compose Multiplatform. Live formatting, keyboard shortcuts, Markdown clipboard, and undo/redo. - [**compose-icons**](https://github.com/DevSrSouza/compose-icons?ref=commonmain.dev) Compose Multiplatform icons is a pack of libraries that provide well known Icon Packs. The library usage is inspired by Compose Material Icons. - [**KMP Maps**](https://github.com/software-mansion/kmp-maps?ref=commonmain.dev) `kmp-maps` provides a unified map component for Compose Multiplatform applications, offering seamless integration with native map APIs on both Android, iOS and desktop platforms. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [GitHub - championswimmer/TwoFac: 2FA Authenticator app that works on mobile, web, desktop, watches and CLI!2FA Authenticator app that works on mobile, web, desktop, watches and CLI! - championswimmer/TwoFac![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-26.svg)GitHubchampionswimmer![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/TwoFac)](https://github.com/championswimmer/TwoFac?ref=commonmain.dev) [GitHub - SimonSchubert/Kai: OpenClaw alternative in your pocketOpenClaw alternative in your pocket. Contribute to SimonSchubert/Kai development by creating an account on GitHub.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-27.svg)GitHubSimonSchubert![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/Kai)](https://github.com/SimonSchubert/Kai?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 👉 [iOS Developer (Swift/KMP)](https://touchlab.co/ioskmp?ref=commonmain.dev) at [Touchlab](https://touchlab.co/?ref=commonmain.dev) This role will involve directly building client applications using the latest Swift-based tools and Xcode, and coding and interacting with Kotlin libraries. It will include helping to define how our tools will evolve to serve iOS developers better, and directly working on the tools and libraries we publish. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #7 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-7/ Last updated: 2026-06-03T15:13:35.000Z We gear up for KotlinConf’26 in Munich and look at how Masabi uses KMP to power global public transit. We dive into non-intrusive integration strategies for native apps, modern project structures for Compose Multiplatform, and creating custom line graphs. Plus, explore new libraries like Fakt and JetCo, and check out a featured freelance Lead KMP Developer role at Valtech. ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. 🎪 [15 Things To Do Before, During, and After KotlinConf’26](https://blog.jetbrains.com/kotlin/2026/02/15-things-to-do-before-during-and-after-kotlinconf-26/?ref=commonmain.dev) Maybe it’s your first time in Munich, or even your first time at KotlinConf. You have your tickets, you’ve learned the schedule by heart, but it might still feel a little overwhelming. Let me show you how you can have the best possible experience by guiding you through all the things you can do. Believe me, KotlinConf is so much more than a conference! 🚋 [How Major Metros Run on Kotlin Multiplatform | Talking Kotlin #145](https://www.youtube.com/watch?v=Wze7qsDl4BM&ref=commonmain.dev) When you tap through a transit gate in major cities around the world, there's a real good chance you’re touching Kotlin Multiplatform! In this episode, we sit down with Paweł Kwieciński from Masabi to explore how they brought a decade-old Java codebase to Kotlin Multiplatform, powering ticket validation across mobile apps, embedded devices, and backend systems for public transit agencies worldwide. 🔮 [Is Kotlin Multiplatform the future of Mobile development?](https://medium.com/@bjmartho/is-kotlin-multiplatform-the-future-of-mobile-development-83e87285dc22?ref=commonmain.dev) Kotlin Multiplatform first came onto the scene in 2017, but it really caught attention when Google announced support for sharing code between Android and iOS at Google I/O 2024\. This was a big deal for developers! Kotlin Multiplatform lets you write code once and use it on both platforms, which saves a ton of time while still allowing for platform-specific tweaks when needed. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) ****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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 🌉 [Bridging the Gap: Integrating KMP into Pure Native Apps Without Breaking the Workflow](https://medium.com/@cristurean.marius.ovidiu/bridging-the-gap-integrating-kmp-into-pure-native-apps-without-breaking-the-workflow-2f0b17d25008?ref=commonmain.dev) This article explores a pragmatic experiment: starting from two fully native applications — Android (Kotlin) and iOS (Swift) — and introducing a shared Analytics feature using a non-intrusive integration strategy. The goal is simple: the iOS application should consume the shared module exactly like any other Swift Package dependency, without Gradle or Kotlin-specific tooling. 🏗️ [My Compose Multiplatform Project Structure](https://dalen.codes/p/my-cmp-project-structure?ref=commonmain.dev) Compose Multiplatform (CMP) project structure is evolving with the recent AGP 9.0 changes that move the `androidApp` out of the `composeApp` and with what looks like more changes on the horizon for [KMP apps](https://x.com/zsmb13/status/1980921121739259936?ref=commonmain.dev). Here is how I decided to structure my CMP projects. This structure is ready for today, and I believe that it should adapt easily when these future KMP changes land. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Fakt**](https://github.com/rsicarelli/fakt?ref=commonmain.dev) Automate the fake-over-mock pattern. Fakt generates type-safe test doubles that eliminate boilerplate. - [JetCo](https://github.com/developerchunk/JetCo?ref=commonmain.dev) Your ultimate Open-Source partner for crafting visually stunning, interactive, and efficient UI components across multiple platforms including Android, iOS, JVM, JS, and WASM. - [**bonsai**](https://plugins.jetbrains.com/plugin/30381-bonsai?ref=commonmain.dev) This toolwindow plugin provides a visual representation of your project structure on an interactive canvas with zoom and pan capabilities. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 📈 [Creating Custom Line Graphs in Jetpack Compose & Kotlin Multiplatform](https://medium.com/@developerchunk/creating-custom-line-graphs-in-jetpack-compose-kotlin-multiplatform-compose-multiplatform-d618648d22f4?ref=commonmain.dev) Most charting libraries for Compose either have bloated dependencies, are Android-only, or offer very limited customization — you get a chart that **works* but doesn’t quite look like **yours*. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [GitHub - RajashekarRaju/hangman-compose: 🎮 Kotlin Multiplatform Hangman (Android, Desktop, Web, iOS) built with Compose Multiplatform. Modular architecture with shared game engine, dynamic word catalog (DSL), responsive layouts, custom creepy-themed UI + animations, cross-platform audio, hints/timer/difficulty modes, persistent settings/history, automated CI/CD deployed to GitHub pages.🎮 Kotlin Multiplatform Hangman (Android, Desktop, Web, iOS) built with Compose Multiplatform. Modular architecture with shared game engine, dynamic word catalog (DSL), responsive layouts, custom cr…![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-25.svg)GitHubRajashekarRaju![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/fabbb3c2-2eca-48a9-9a53-a3079813f8f1)](https://github.com/RajashekarRaju/hangman-compose?ref=commonmain.dev) 💊 Parenty: Medicine Tracker → [Play Store Link](https://play.google.com/store/apps/details?id=cy.com.parenty&ref=commonmain.dev) → [App Store Link](https://apps.apple.com/us/app/parenty-medicine-tracker/id6757712692?ref=commonmain.dev) Parenty is the essential companion for parents, designed to take the stress out of managing your children's health. Whether you’re dealing with a common cold or managing long-term treatments, Parenty helps you stay organized, ensures doses are never missed, and keeps a clear record of your child's recovery journey. ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🤖 [Freelance Lead Mobile Developer (Kotlin Multiplatform)](https://job-boards.eu.greenhouse.io/valtech/jobs/4790101101?ref=commonmain.dev) at [****Valtech**](https://www.valtech.com/?ref=commonmain.dev) We are looking for a Kotlin Multiplatform Developer with experience in both iOS and Android Native to join our mobile development team and work on building a cross-platform application. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #6 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-6/ Last updated: 2026-06-03T15:13:24.000Z We celebrate the latest Kotlin Foundation grant winners fueling the ecosystem, explore the KotlinConf'26 schedule and take a technical deep dive into the internals of `kotlinx.serialization`. We also showcase how far Compose Multiplatform UI can go with a featured roguelike RPG card game, and highlight a new KMP career opportunity at Boosta. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. 🏆 [Winners of the Kotlin Foundation Grants Program 2025](https://kotlinfoundation.org/news/grants-program-winners-25/?ref=commonmain.dev) This year, the program attracted strong interest from across the community, with 117 applications submitted by library authors working to advance the Kotlin ecosystem. After a thorough review process, the committee selected five projects to receive grants in recognition of their impact, technical quality, and value to Kotlin developers. 🗓️ The full [KotlinConf’26 schedule](https://kotlinconf.com/schedule/?day=2026-05-20&%5Fcl=MTsxOzE7cUxIcEY1TjNOOGh6cmxKbjBHRFVIMGFpeXVNNmZhNHdVaklBUk11NE9tdUxTRmVNbHFjS2dIbGF3d3ZlREFINDs%3D&%5Fgl=1%2A19p5bfs%2A%5Fgcl%5Fau%2AMzEwMjE4MjY1LjE3NzE4ODE2NzY.%2AFPAU%2AMzEwMjE4MjY1LjE3NzE4ODE2NzY.%2A%5Fga%2AMTQ0NzA3NzExNS4xNzYzOTc4OTAz%2A%5Fga%5F9J976DJZ68%2AczE3NzE4ODE2NzYkbzE0JGcxJHQxNzcxODgxNzQxJGo1NyRsMCRoMA..&ref=commonmain.dev) is ready! The full KotlinConf’26 schedule is finally live on our website! Talks, workshops, amazing speakers – it’s all there. Take a look and start shaping your own conference experience! ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. 🧠 [How Android devs can advance their career with KMP](https://www.youtube.com/live/B9-yWXgp0-0?ref=commonmain.dev) Join us for a practical webinar where we’ll map out the journey from a dedicated Android expert to a full-stack Kotlin Multiplatform professional. We’ll skip the buzzwords and focus on real-world skills, mindset shifts, and the career opportunities that KMP unlocks. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) ****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.** [Get the Book ](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) 🔀 How `kotlinx.serialization` generates code: [a compiler plugin deep dive](https://www.revenuecat.com/blog/engineering/kotlinx-serialization/?ref=commonmain.dev) In this article, you’ll dive deep into the internal mechanisms of the `kotlinx.serialization` compiler plugin, exploring how the two pass IR generation pipeline works, how the plugin generates the `$serializer` nested class with its descriptor, serialize, and deserialize methods, and the clever optimizations like golden mask validation that make deserialization both safe and performant. 🪙 Koin in Kotlin Multiplatform: [A Complete Guide](https://blog.insert-koin.io/koin-in-kotlin-multiplatform-a-complete-guide-576a24ffeeab?ref=commonmain.dev) We took JetBrains’ KMP App Template — the official starting point for Compose Multiplatform — and added Koin with the Compiler Plugin. ****One module, one DI configuration, shared across both platforms.** 🏎️ Rust + KMP: [System performance meets multiplatform delivery](https://medium.com/@adman.shadman/rust-kmp-system-performance-meets-multiplatform-delivery-b403c2a4f6fc?ref=commonmain.dev) You might wonder why on earth I use Rust in my Kotlin project, but by the end of this article, that question will turn into, “Oh, that’s actually a great idea”. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Umami Kotlin**](https://github.com/AppOutlet/umami-kotlin?ref=commonmain.dev) Umami is a simple, fast, and privacy-focused alternative to Google Analytics. It grants you powerful web analytics while respecting user privacy by not collecting any personal information. - [**Mokkery**](https://github.com/lupuuss/Mokkery?ref=commonmain.dev)\[ 🏆 Winner of the Kotlin Foundation Grants Program 2025\] The mocking library for Kotlin Multiplatform, easy to use, boilerplate-free and compiler plugin driven. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 🎮 How I Built a [Roguelike RPG Card Game with Compose Multiplatform](https://medium.com/@cliffrob25/how-i-built-a-roguelike-rpg-with-compose-multiplatform-and-skipped-traditional-engines-c19c3fc6e310?ref=commonmain.dev) (and Skipped Traditional Engines) The idea of building a complex game without a dedicated game engine sounds, to many, like a Sisyphean task. In the world of ****Compose Multiplatform (CMP)**, the common narrative revolves around sleek business apps, elegant UIs, and shared logic for forms and lists. But what if you wanted to build an entire open-world roguelike card game, complete with intricate animations, deep combat, and responsive mini-games, all while staying purely within the Kotlin ecosystem? 📸 [Scanpose Barcode Scanner](https://github.com/ArcaDone/Scanpose?ref=commonmain.dev) A lightweight, easy-to-use barcode component for ****Compose Multiplatform** (Android & iOS). Built with ****CameraX & MLKit** on Android and ****AVFoundation** on iOS. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) 📈 Crypto Analytics App: CoinHool → [Reddit Discussion](https://www.reddit.com/r/KotlinMultiplatform/comments/1r8x2re/just%5Freleased%5Fa%5Fproduction%5Fcrypto%5Fanalytics%5Fapp/?ref=commonmain.dev) → [Play Store Link](https://play.google.com/store/apps/details?id=com.coinhool&ref=commonmain.dev) → [App Store Link](https://apps.apple.com/us/app/crypto-analytics-on-chain/id6756515251?ref=commonmain.dev) **I finally pushed my side project,* ***CoinHool** *, to production on both the App Store and Play Store. It’s a crypto analytics tool focusing on on-chain data and market intelligence.* 🪄 [ARCANA](https://playarcana.app/?ref=commonmain.dev) \- 2D roguelike card battler built with KMP and Compose Multiplatform Master the art of deck-building in this strategic roguelike card battler. Choose your path, craft your deck, and conquer the arcane realm. 💾 [InstaSaver Pro](https://github.com/ShahzaibAli02/InstaSaver-Kmp?ref=commonmain.dev) Social media video downloader app that allows users to download HD videos. It's designed as both a learning resource and a production-grade reference for building cross-platform apps with Kotlin Multiplatform. ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 💨 [Senior KMP Engineer](https://boosta.biz/vacancies/senior-kmp-engineer/?ref=commonmain.dev) at [Boosta](https://boosta.biz/?ref=commonmain.dev) We are currently looking for a ****Senior KMP Engineer** to join our team! This is an innovative mobile platform focused on high-quality video communication. The product has recently launched on the market and has secured significant funding, opening a phase of rapid growth and active development. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #5 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-5/ Last updated: 2026-06-03T15:13:06.000Z Compose Stability Analyzer 0.7.0 brings live recomposition heatmaps to Android Studio, and we sit down with Kotlin creator Andrey Breslav to discuss what comes after Kotlin. We also deep-dive into building cross-platform persistent caching for Ktor, explore essential Kotlin compiler internals, and compare default vs. buffered SharedFlows. Plus, a new KMP-native HTTP inspector, coachmark libraries for Compose, and job opportunities in robotics. ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. 🎼 [Compose Stability Analyzer 0.7.0: Recomposition Cascade and Live Heatmap](https://proandroiddev.com/compose-stability-analyzer-0-7-0-recomposition-cascade-and-live-heatmap-6e8f789cd8ea?ref=commonmain.dev) [Compose Stability Analyzer](https://github.com/skydoves/compose-stability-analyzer?ref=commonmain.dev) has been providing real-time stability analysis directly in Android Studio through gutter icons, hover tooltips, inline hints, and code inspections. These features answer the question “is this composable stable?” at a glance. Version 0.7.0 goes further by answering two additional questions that static analysis alone cannot address: “what happens downstream when this composable recomposes?” and “which composables are actually recomposing the most on a real device?” ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. 👨‍💻 [The programming language after Kotlin – with the creator of Kotlin](https://www.youtube.com/watch?v=ZggUn2mNqMU&ref=commonmain.dev) Andrey Breslav is the creator of Kotlin and the founder of CodeSpeak, a new programming language that aims to reduce boilerplate by replacing trivial code with concise, plain-English descriptions. He led Kotlin’s design at JetBrains through its early releases, shaping both the language and its compiler as Kotlin grew into a core part of the Android ecosystem. 🚀 [How Android devs can advance their career with KMP](https://www.youtube.com/watch?v=B9-yWXgp0-0&ref=commonmain.dev) Join us for a practical webinar where we’ll map out the journey from a dedicated Android expert to a full-stack Kotlin Multiplatform professional. We’ll skip the buzzwords and focus on real-world skills, mindset shifts, and the career opportunities that KMP unlocks. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) ****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.** [Get the Book ](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) 📦 [How I Built Cross-Platform Persistent Cache for Ktor (Android + iOS)](https://medium.com/@santimattius/how-i-built-cross-platform-persistent-cache-for-ktor-android-ios-170b7955ac95?ref=commonmain.dev) While working on [****kmp-http-client**](https://github.com/santimattius/kmp-http-client?ref=commonmain.dev), a Kotlin Multiplatform project for Android and iOS, I ran into a frustrating limitation. My app needed to cache HTTP responses to improve the offline experience and reduce data consumption. Ktor Client includes the `HttpCache` plugin, which seemed perfect... until I read the documentation: **Persistent caching only works on JVM.** ⭐ [5 Kotlin Internals You Should Know](https://skydoves.medium.com/5-kotlin-internals-you-should-know-d4bab319d4ef?ref=commonmain.dev) Kotlin makes writing clean, expressive code feel effortless. Features like data classes, lazy properties, and extension functions save you from the boilerplate that Java developers deal with daily. But behind every concise Kotlin feature is a compiler performing real work, generating bytecode, managing thread safety, and making allocation decisions on your behalf. Understanding what the compiler actually produces helps you write more performant code and make better design decisions. 🦮 [Default vs buffered SharedFlow in Kotlin: a practical guide](https://medium.com/@yassine.sayah/default-vs-buffered-sharedflow-in-kotlin-a-practical-guide-6abe92aad7d7?ref=commonmain.dev) The default configuration, `MutableSharedFlow()`, has zero buffer and zero replay. That means ****values emitted with no active collector are lost**, and when collectors are active, `tryEmit()` fails because there's nowhere to place the value. Adding `extraBufferCapacity` gives the flow room to absorb emissions when collectors are present. Picking the wrong setup leads to either suspended emitters or silently dropped events. ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Ktor Persistent Cache**](https://github.com/santimattius/ktor-persistent-cache?ref=commonmain.dev) A Kotlin Multiplatform library that adds persistent HTTP caching to [Ktor](https://ktor.io/?ref=commonmain.dev) HttpClient. Responses are stored on disk using [Okio](https://github.com/square/okio?ref=commonmain.dev), with configurable size limits, TTL, and platform-appropriate cache directories. - [**Inspekt**](https://github.com/mohaberabi/inspekt?ref=commonmain.dev) The KMP-native HTTP Inspector for Ktor — elegant, minimal, and actually useful. Inspekt gives you full visibility into your Ktor network calls on Android and iOS. - [**KorrektKlock**](https://github.com/mohaberabi/korrekt-klock?ref=commonmain.dev) KorrektKlock is a Kotlin Multiplatform library that provides correct, monotonic, offline-safe UTC time for Android and iOS without relying on device wall-clock settings. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 🔦 [Lumen](https://github.com/aldefy/Lumen?ref=commonmain.dev) A Compose Multiplatform coachmark library that creates ****true transparent cutouts** in the overlay scrim. Your actual UI remains visible and interactive through the spotlight - animations play, buttons respond, nothing is faked. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [GitHub - mohaberabi/staff-mates: Kotlin Multiplatform Staff management & Attendance Tracking With NFC AppKotlin Multiplatform Staff management & Attendance Tracking With NFC App - mohaberabi/staff-mates![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-21.svg)GitHubmohaberabi![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/staff-mates)](https://github.com/mohaberabi/staff-mates?ref=commonmain.dev) [GitHub - mohaberabi/kueue: Compose Multiplatform Thermal Printer SimulatorCompose Multiplatform Thermal Printer Simulator . Contribute to mohaberabi/kueue development by creating an account on GitHub.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-22.svg)GitHubmohaberabi![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/kueue)](https://github.com/mohaberabi/kueue?ref=commonmain.dev) [GitHub - Coding-Meet/News-KMP-App: News Kotlin Multiplatform project designed to target Android, iOS, Windows, macOS, Linux platforms.News Kotlin Multiplatform project designed to target Android, iOS, Windows, macOS, Linux platforms. - Coding-Meet/News-KMP-App![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-23.svg)GitHubCoding-Meet![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/a0b8b592-6fbe-463d-94a7-a250e8041ab4)](https://github.com/Coding-Meet/News-KMP-App?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🤖 [Mobile App Developer - Java/Kotlin Multiplatform](https://jobs.gusto.com/postings/aion-robotics-corporation-mobile-app-developer-java-kotlin-multiplatform-contract-position-287cd28c-41b7-4525-b8b3-d1f0b3fc9c5c?ref=commonmain.dev) at [AION ROBOTICS CORPORATION](https://www.aionrobotics.com/?ref=commonmain.dev) This is a contract Mobile Developer Position. You will work on cutting-edge mobile application development projects utilizing the latest Java/Kotlin Cross-Platform and AWS technologies to create innovative, real-time vehicle control solutions similar to those used in consumer drones. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #4 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-4/ Last updated: 2026-06-03T15:12:34.000Z 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](https://blog.insert-koin.io/koin-powered-by-kotlin-compiler-0722f1cc96a4?ref=commonmain.dev) 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](https://medium.com/@huseyn.karagozz/kotlin-multiplatform-in-banking-apps-8adca0b8df4c?ref=commonmain.dev) 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?](https://www.reddit.com/r/KotlinMultiplatform/comments/1qy5csv/exploring%5Fkotlin%5Fmultiplatform%5Fwith%5Fjetpack/?ref=commonmain.dev) 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](https://www.reddit.com/r/KotlinMultiplatform/comments/1qwo1hm/saving%5Fon%5Fapk%5Fapp%5Fsize%5Fby%5Fremoving%5Ficon%5Flibrary/?ref=commonmain.dev) 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. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) ****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.** [Get the Book ](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) 🥪 [Scalable API Response Handling Across Multi-Layered Architectures with Sandwich](https://proandroiddev.com/scalable-api-response-handling-across-multi-layered-architectures-with-sandwich-39ab02ae8c90?ref=commonmain.dev) 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](https://medium.com/@shivathapaa/convention-plugins-in-kotlin-multiplatform-the-complete-production-guide-cf61a109a73b?ref=commonmain.dev) 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](https://github.com/skydoves/sandwich?ref=commonmain.dev) An adaptable and lightweight sealed API library designed for handling API responses and exceptions in Kotlin for Retrofit, Ktor, and Kotlin Multiplatform. - [Synapse](https://github.com/coreywaldon/synapse?ref=commonmain.dev) 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](https://github.com/stevdza-san/Swipeable-KMP?ref=commonmain.dev) A highly customizable, modern swipeable component for Compose Multiplatform, supporting Android, iOS, Desktop, and Web (WASM) with beautiful animations and intuitive gestures. 🕸️ [Kilua](https://kilua.dev/?ref=commonmain.dev) \- 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. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [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![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-15.svg)GitHubthejohnsondev![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/a12e6f4b-8838-48c3-bd33-3abb795a6249)](https://github.com/thejohnsondev/ArtSeum?ref=commonmain.dev) [GitHub - vishal2376/footprint: Footprint is a kotlin multiplatform app that turns everyday walks into an exploration gameFootprint is a kotlin multiplatform app that turns everyday walks into an exploration game - vishal2376/footprint![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-18.svg)GitHubvishal2376![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/footprint)](https://github.com/vishal2376/footprint?ref=commonmain.dev) [GitHub - ahmed-madhoun1/Audia\_KMPContribute to ahmed-madhoun1/Audia\_KMP development by creating an account on GitHub.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-17.svg)GitHubahmed-madhoun1![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/Audia_KMP)](https://github.com/ahmed-madhoun1/Audia%5FKMP?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🍽️ [Kotlin Multiplatform Product Engineer](https://jobs.superbexperience.com/jobs/5642015-kotlin-multiplatform-product-engineer?ref=commonmain.dev) at [Superb](https://www.superbexperience.com/?ref=commonmain.dev) 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](https://job-boards.eu.greenhouse.io/jetbrains/jobs/4703937101?ref=commonmain.dev) at [JetBrains](https://www.jetbrains.com/?ref=commonmain.dev) With [Kotlin Multiplatform](https://kotlinlang.org/multiplatform/?ref=commonmain.dev) and [Compose Multiplatform](https://kotlinlang.org/compose-multiplatform/?ref=commonmain.dev), 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](https://www.jetbrains.com/idea/?ref=commonmain.dev) and [Android Studio](https://developer.android.com/studio?ref=commonmain.dev), while also working on IntelliJ IDEA’s Android support, KDoctor, and the Kotlin Multiplatform wizard. 🧠 Senior Software Developer - [Kotlin Native](https://job-boards.eu.greenhouse.io/jetbrains/jobs/4739443101?ref=commonmain.dev) at [JetBrains](https://www.jetbrains.com/?ref=commonmain.dev) Our team works on Kotlin/Native, a compiler and runtime for the Kotlin language, which is based on the [LLVM](https://llvm.org/?ref=commonmain.dev) 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](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #3 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-3/ Last updated: 2026-06-03T15:12:23.000Z 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](https://blog.jetbrains.com/kotlin/2026/02/kotlin-ecosystem-mentorship/?ref=commonmain.dev) The [Kotlin Foundation](https://kotlinfoundation.org/?ref=commonmain.dev) 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](https://kotlinconf.com/?ref=commonmain.dev). ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. ▶️ [Explicit Backing Fields in Kotlin 2.3](https://www.youtube.com/watch?v=qU%5Fa1ioqOR8&ref=commonmain.dev) \- What You Need to Know [Kotlin 2.3](https://kotlinlang.org/docs/whatsnew23.html?ref=commonmain.dev) introduces a new, experimental "[Explicit Backing Fields](https://kotlinlang.org/docs/whatsnew23.html?ref=commonmain.dev#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](https://www.reddit.com/r/Kotlin/comments/1qpi79s/remote%5Fjobs%5Fon%5Fupwork%5Fcompetition%5Fanalysis%5Fpython/?ref=commonmain.dev): 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. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) ****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.** [Get the Book ](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) ❌ Kotlin Coroutines [Cancellation and Exception Handling](https://krossovochkin.com/posts/2026%5F01%5F11%5Fkotlin%5Fcoroutines%5Fcancellation%5Fand%5Fexception%5Fhandling/?ref=commonmain.dev) 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](https://medium.com/@thejohnsondev/mastering-kotlin-swift-objc-interop-9803fed95a65?ref=commonmain.dev) 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](https://medium.com/@Tweeel/how-to-prevent-screenshots-in-kotlin-multiplatform-kmp-for-android-and-ios-280217de148c?ref=commonmain.dev) 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**](https://github.com/skydoves/landscapist?ref=commonmain.dev) 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**](https://github.com/ioannisa/KSafe?ref=commonmain.dev) An Effortless Enterprise-Grade Encrypted key-value storage for Kotlin Multiplatform and Native Android with Hardware-Backed Security. - [**Kotlin Multiplatform Markdown Renderer**](https://github.com/mikepenz/multiplatform-markdown-renderer?ref=commonmain.dev) Markdown renderer for Kotlin Multiplatform Projects (Android, iOS, Desktop), using Compose. - [**Grant**](https://github.com/brewkits/Grant?ref=commonmain.dev) 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](https://proandroiddev.com/announcing-landscapist-core-a-new-image-loading-library-for-android-compose-multiplatform-6a4f408cba00?ref=commonmain.dev): 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](https://github.com/skydoves/compose-stability-inference?ref=commonmain.dev) A comprehensive study of how the Compose compiler determines type stability for recomposition optimization. 🧰 [Hau](https://github.com/Alidon256/Hau?ref=commonmain.dev) \- 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. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [SubFox - Never lose track of your subscriptions againSubFox is a subscription management app that helps you track your subscriptions and save money.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/app_icon.webp)SubFoxSubFox![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/app_icon.webp)](https://subfox.app/?ref=commonmain.dev) [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![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-13.svg)GitHubAnatoliiChub![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/HRAM)](https://github.com/AnatoliiChub/HRAM?ref=commonmain.dev) [GitHub - msasikanth/twine: Twine: A multiplatform RSS reader built using Kotlin and ComposeTwine: A multiplatform RSS reader built using Kotlin and Compose - msasikanth/twine![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-14.svg)GitHubmsasikanth![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/60829092-7dc4-4e71-8b3f-06071ba8ab58)](https://github.com/msasikanth/twine?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 💸 [Android / Kotlin Multiplatform Developer ](https://www.linkedin.com/posts/leo-fadi-541a1b229%5Fwe-are-hiring-an-android-kotlin-multiplatform-activity-7417917250114052096-c3T4?ref=commonmain.dev)at [Vesko](https://www.vesko.fi/?ref=commonmain.dev) Looking for an Android / Kotlin Multiplatform Developer to build Vesko’s modern, high-performance POS system for retail. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #2 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-2/ Last updated: 2026-06-03T15:12:03.000Z ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. 🚀 [Ktor 3.4.0 Is Now Available!](https://blog.jetbrains.com/kotlin/2026/01/ktor-3-4-0-is-now-available/?ref=commonmain.dev) [Ktor 3.4.0](https://ktor.io/?ref=commonmain.dev) improves stability and addresses outstanding issues. Highlights include OpenAPI generation, [Ztsd](https://github.com/facebook/zstd?ref=commonmain.dev) 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*](https://ktor.io/docs/whats-new-340.html?ref=commonmain.dev) page. 🚀 [Exposed 1.0 Is Now Available](https://blog.jetbrains.com/kotlin/2026/01/exposed-1-0-is-now-available/?ref=commonmain.dev) This is the first major release of [Exposed](https://www.jetbrains.com/exposed/?ref=commonmain.dev) – 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](https://www.youtube.com/watch?v=Jp3Yg1VSRkY&ref=commonmain.dev) In this video [Philipp Lackner](https://pl-coding.com/?ref=commonmain.dev) shows us the core changes of Gradle 9 for KMP projects and how to successfully migrate our projects. 🍉 [KMP Wizard Template](https://github.com/watermelonKode/kmp-wizard-template?ref=commonmain.dev) — AGP 9.0.0 Ready A clean [****Kotlin Multiplatform (KMP)**](https://kotlinlang.org/multiplatform/?ref=commonmain.dev) starter generated with the Kotlin Multiplatform Wizard and then updated to work smoothly with [****Android Gradle Plugin (AGP) 9.0.0**](https://developer.android.com/build/releases/agp-9-0-0-release-notes?ref=commonmain.dev). ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) ****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.** [Get the Book ](https://leanpub.com/kotlin-deep-dive/c/3CDEFDB0C03B?ref=commonmain.dev) 🦮 in, out, reified: [A Practical Guide to Kotlin Generics](https://proandroiddev.com/in-out-reified-a-practical-guide-to-kotlin-generics-2beb6b9eb67a?ref=commonmain.dev) Kotlin’s [standard library](https://kotlinlang.org/api/core/kotlin-stdlib/?ref=commonmain.dev) is full of generic signatures — `List`, `Comparable`, `Sequence`. 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](https://proandroiddev.com/tracing-the-user-journey-with-coroutines-in-kotlin-multiplatform-fb5e21072d80?ref=commonmain.dev) 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](https://hudnitsky.com/complete-guide-for-publishing-your-kotlin-multiplatform-compose-desktop-app-to-the-mac-app-store-8ce23ba36d5a?ref=commonmain.dev) 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](https://proandroiddev.com/building-a-text-sentiment-classifier-in-kotlin-multiplatform-987ee2da1717?ref=commonmain.dev) 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**](https://github.com/Tweener/alarmee?ref=commonmain.dev) Alarmee is a Kotlin/Compose Multiplatform library designed to simplify scheduling alarms and notifications on both Android and iOS platforms. - [**moko-permissions**](https://github.com/icerockdev/moko-permissions?ref=commonmain.dev) Runtime permissions controls for mobile (android & ios) Kotlin Multiplatform development. - [**Turbine**](https://github.com/cashapp/turbine?ref=commonmain.dev) A testing library for [kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines?ref=commonmain.dev) Flow. - [**assertk**](https://github.com/assertk-org/assertk?ref=commonmain.dev) Fluent assertions library for [Kotlin](https://kotlinlang.org/?ref=commonmain.dev) with full Multiplatform support. ### LazyColumn Compose Multiplatform tips, tricks, and code snippets. 🌟 [AwesomeUI](https://github.com/ArcaDone/AwesomeUI?ref=commonmain.dev) A collection of ****"copy, paste, use"** snippets and useful elements for those who intend to or are already developing an app in [****Compose Multiplatform**](https://kotlinlang.org/compose-multiplatform/?ref=commonmain.dev) or simply an Android app and already use [****Jetpack Compose**](https://developer.android.com/compose?ref=commonmain.dev) and [****Material3**](https://m3.material.io/?ref=commonmain.dev). 🕸️ [Building a WebView control for Compose Desktop](https://teamdev.com/jxbrowser/blog/building-web-view-for-compose/?ref=commonmain.dev) 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. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [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 & Desktop (Linux, MacOS, Windows).…![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-12.svg)GitHubrainxchzed![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/f714ce52-632a-43ff-8b6c-2314def765e9-1)](https://github.com/rainxchzed/Github-Store/?ref=commonmain.dev) [Bsky Tracker - The must-have Bluesky Followers Analytics & Network ManagerTrack followers, analyze engagement, and manage your Bluesky network with real-time insights. Free app with advanced filtering and bulk actions for iOS & Android.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/apple-touch-icon-2.png)Bluesky TrackerBsky Tracker![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/banner.png)](https://blueskytracker.app/?ref=commonmain.dev) [GitHub - be1ski/vibits: Habit tracker powered by MemosHabit tracker powered by Memos. Contribute to be1ski/vibits development by creating an account on GitHub.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-10.svg)GitHubbe1ski![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/vibits)](https://github.com/be1ski/vibits?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) 🍽️ [Kotlin Multiplatform Product Engineer](https://jobs.superbexperience.com/jobs/5642015-kotlin-multiplatform-product-engineer?ref=commonmain.dev) at [Superb](https://www.superbexperience.com/?ref=commonmain.dev) 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](https://job-boards.eu.greenhouse.io/jetbrains/jobs/4703937101?ref=commonmain.dev) at [JetBrains](https://www.jetbrains.com/?ref=commonmain.dev) With [Kotlin Multiplatform](https://kotlinlang.org/multiplatform/?ref=commonmain.dev) and [Compose Multiplatform](https://kotlinlang.org/compose-multiplatform/?ref=commonmain.dev), 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](https://www.jetbrains.com/idea/?ref=commonmain.dev) and [Android Studio](https://developer.android.com/studio?ref=commonmain.dev), while also working on IntelliJ IDEA’s Android support, KDoctor, and the Kotlin Multiplatform wizard. --- #### 🚀 Get Featured! Got something interesting to share with the Kotlin Multiplatform community? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). #### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #1 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-1/ Last updated: 2026-06-03T15:11:35.000Z ### **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. [Compose Multiplatform 1.10.0](https://blog.jetbrains.com/kotlin/2026/01/compose-multiplatform-1-10-0/?ref=commonmain.dev) has been released! Here are the highlights of this release: - One common `@Preview` annotation to rule them all - Navigation 3 is available on non-Android targets - Stable and bundled Compose Hot Reload [What’s new in Compose Multiplatform 1.10.0 | Kotlin Multiplatform![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/apple-touch-icon-114x114.png)Kotlin Multiplatform Help![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/docs.png)](https://kotlinlang.org/docs/multiplatform/whats-new-compose-110.html?ref=commonmain.dev) ### **The Main Thread** Community's most insightful threads, curated from social media platforms and websites. 🚀 Collaborate with creators to build their mobile app in 4 weeks. [Shipyard: Creator Contest](https://www.shipyard.fyi/?ref=commonmain.dev) is a mobile app-building challenge where real influencers enlist you to build, launch, and monetize an MVP mobile app for their audience. In four weeks or less. 👀 Compose Multiplatform at Perk: [A Pragmatic Look at Our Journey So Far](https://builders.travelperk.com/compose-multiplatform-at-perk-a-pragmatic-look-at-our-journey-so-far-fedd666e9726?ref=commonmain.dev). Earlier this year, we began evaluating Compose Multiplatform (CMP) in our production apps. Not as a replacement, but ****as a way to meaningfully reduce duplication and bring our teams closer together**. This post is a reflection on that journey: what worked, what didn’t, and the lessons we’ve learned so far. 🏀 Building a Basketball Empire with One Codebase: [How Kotlin Multiplatform Changed Everything](https://medium.com/stackademic/building-a-basketball-empire-with-one-codebase-how-kotlin-multiplatform-changed-everything-2dff312b6cbd?ref=commonmain.dev)! Imagine writing your business logic once and watching it run flawlessly on both Android and iOS. No duplicate codebases. No synchronization nightmares. No “but it works on Android” excuses. ### Expect Actual Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/01/practical-kotlin-deep-dive-2.png)](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) ****Practical Kotlin Deep Dive** 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. [Get the Book ](https://skydoves.gumroad.com/l/kotlin-deep-dive?a=705284499&ref=commonmain.dev) 🌡️ The Journey to [Compose Hot Reload 1.0.0](https://blog.jetbrains.com/kotlin/2026/01/the-journey-to-compose-hot-reload-1-0-0/?ref=commonmain.dev). Compose Hot Reload has just been promoted to stable with our [1.0.0](https://github.com/JetBrains/compose-hot-reload/releases/tag/v1.0.0?ref=commonmain.dev) release. We worked hard to build a technology that is easy to use and well-integrated into existing tools while also requiring zero configuration from users. ⛔ [Permission Handling in Kotlin Multiplatform (KMP)](https://medium.com/@mohaberabi98/permission-handling-in-kotlin-multiplatform-kmp-a-real-world-architecture-00b50bc2c86d?ref=commonmain.dev) — A Real-World Architecture. Handling permissions in Kotlin Multiplatform (KMP) is one of those areas where naive abstractions break very quickly because Android and iOS have fundamentally different permission models. 🔍 Inside the Feed Module: [A Complete Kotlin Multiplatform Deep Dive](https://medium.com/@ranger163/inside-the-feed-module-a-complete-kotlin-multiplatform-deep-dive-with-diagrams-code-824613457207?ref=commonmain.dev) (with Diagrams & Code). How a single feature becomes a cross-platform, architecturally clean, fully testable slice of a real KMP system. 🏗️ [Dependency Injection with Koin](https://itnext.io/dependency-injection-with-koin-the-minimal-setup-kmp-d696ae2db09f?ref=commonmain.dev), the minimal setup (KMP). This is the second part of an educational series about dependency injection. In the first article, we implemented dependency injection manually. In this one, we take the ****exact same example** and let ****Koin** do the wiring for us. 🌐 Ktorfit + Kotlin Multiplatform: [Retrofit-like Networking for KMP Apps](https://www.kmpbits.com/posts/ktor-kmp?ref=commonmain.dev). Ktorfit brings the familiar Retrofit-style annotations and structure into the multiplatform realm, built on top of Ktor and powered by Kotlin Symbol Processing (KSP). ### The Dependency Graph Curated libraries, tools and plugins that won't break your Gradle build. - [**Jingdong**](https://compose-jindong.github.io/jindong/?ref=commonmain.dev) Declarative haptics for Kotlin Multiplatform, powered by Compose Runtime. - [**KMP Liquid Glass**](https://github.com/Kashif-E/KMPLiquidGlass?ref=commonmain.dev) A liquid glass effect library for Compose Multiplatform. - [**Passage**](https://github.com/Tweener/passage/?ref=commonmain.dev) A Kotlin Multiplatform library designed to simplify authentication flows across Android and iOS platforms (built on [Firebase Authentication](https://firebase.google.com/docs/auth/?ref=commonmain.dev)). - [**Resilient**](https://github.com/santimattius/kmp-resilient?ref=commonmain.dev) A Kotlin Multiplatform library providing resilience patterns (Timeout, Retry, Circuit Breaker, Rate Limiter, Bulkhead, Hedging, Cache, Fallback) for suspend functions. - [**Compose Stability Analyzer**](https://plugins.jetbrains.com/plugin/28767-compose-stability-analyzer?ref=commonmain.dev) Android Studio plugin that provides real-time stability analysis for Jetpack Compose functions directly in the IDE. ### Target: Production Showcase of real-world apps proving KMP is ready for prime time. SPONSORED Ship your next iOS & Android app in days with Kotlin Multiplatform Skip the boring setup. [****KMPShip**](https://kmpship.app/?ref=commonmain) 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. [Get Started ](https://kmpship.app/?ref=commonmain) [SnappitYour story, 5 seconds at a time. Snappit is a daily video recording app where you capture exactly 5 seconds per day to build a life movie montage. Track streaks, unlock badges, and create weekly, monthly, and yearly montages of your life.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/apple-icon.png)SnappitVivien Mahé![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/opengraph-image.jpg)](https://www.snappit.co/?ref=commonmain.dev) [Bloomeo - Save & Retire EarlyAn all-in-one app for budgeting, savings tracking, and planning your path to early retirement.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/apple-touch-icon.png)Bloomeo - Save & Retire Early![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/card.jpg)](https://bloomeo.app/?ref=commonmain.dev) [GitHub - Ali0092/Taskaroo\_Mulitplatform: TaskKaroo is a modern task management application built using Kotlin Multiplatform.TaskKaroo is a modern task management application built using Kotlin Multiplatform. - Ali0092/Taskaroo\_Mulitplatform![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/pinned-octocat-093da3e6fa40-7.svg)GitHubAli0092![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/Taskaroo_Mulitplatform)](https://github.com/Ali0092/Taskaroo%5FMulitplatform?ref=commonmain.dev) ### Careers Kotlin Multiplatform job postings and opportunities. SPONSORED [![CTA Image](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/2026/03/wellfound-symbol-black.webp)](https://wellfound.com/l/2ABERG?ref=commonmain.dev) ****wellfound** • Where startups and job seekers connect. 🤝 Connect directly with founders at top startups - no third party recruiters allowed. 💸 Everything you need to know, all upfront. View salary, stock options, and more before applying. ✌️ Say goodbye to cover letters - your profile is all you need. One click to apply and you're done. ✨ Unique jobs at startups and tech companies you can’t find anywhere else. [Find Your Next Remote Job ](https://wellfound.com/l/2ABERG?ref=commonmain.dev) [Bitcoiner Jobs | Senior Developer — Android and Kotlin Multiplatform @ GLOK.MEShape the Future of Privacy Tech from Day One About Us GLOK is an emerging…![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/favicon-ek9Ftpz4W.png)Bitcoiner JobsBitcoiner Jobs![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/stealth-project-yiW6AulDSaN.png)](https://bitcoinerjobs.com/job/1779984-senior-developer-android-and-kotlin-multiplatform-glokme?ref=commonmain.dev) --- ### 🚀 Get Featured! Shipped a KMP library, a production app, or authored a technical deep dive? [Submit your link](https://commonmain.dev/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](https://commonmain.dev/sponsor/). ### ✍ 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 ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### Kotlin Multiplatform Newsletter #0 URL: https://commonmain.dev/kotlin-multiplatform-newsletter-0/ Last updated: 2026-06-03T15:11:24.000Z ## Hello world! Welcome to **commonMain.dev**. You're officially in the loop. In the world of Kotlin Multiplatform, `commonMain` is where the heart of the logic lives. It’s where we build once, think clearly, and bridge the gap between platforms. That is exactly what this newsletter is about. ### What to expect every Tuesday: - **The Log** The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know. - **The Main Thread** The community's most insightful threads, curated from social media platforms and websites. - **Expect Actual** Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems. - **The Dependency Graph** Curated libraries and tools that won't break your Gradle build. - **LazyColumn** Compose Multiplatform tips, tricks, and code snippets. - **Target: Production** Showcase of real-world apps proving KMP is ready for prime time. - **Careers** Kotlin Multiplatform job postings and opportunities. ### One small favor? I want to make sure this is the most useful email in your inbox. **Reply to this email** (yes, I read them!) and tell me: 1. Are you currently using KMP in production or just exploring? 2. What is the **single biggest headache** you’ve had with Compose Multiplatform so far? Looking forward to hearing back from you! --- Stay platform-independent, Bogdan • Founder of commonMain.dev ## Sign up for commonMain.dev The weekly newsletter for Kotlin Multiplatform (KMP). News, jobs, technical deep-dives, and more. Delivered every Tuesday. Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime.