6 min read

Kotlin Multiplatform Newsletter #33

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

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

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.

Consuming SKIE Flows in SwiftUI

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

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 as part of Apple’s developer membership.
Building Music Vox Trainer: A Kotlin Multiplatform Music Theory App for Android and iOS

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

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!

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

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
    Easily visualize and create compose gradients and copy the code into your projects. Now with mesh gradients available.
  • PageCurl for Compose Multiplatform
    Page curl (page turn) effect for Compose Multiplatform: Android and iOS from one Kotlin codebase.
  • Mockzilla
    A compile safe solution for running and configuring a local Http server for your mobile apps.
  • Aalekh
    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
    A lightweight, zero-overhead screen-capture protection library for Kotlin Multiplatform (Android & iOS)
  • MapLibre for Compose Multiplatform
    MapLibre Compose is a Compose Multiplatform wrapper around the MapLibre 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.

Music Vox Trainer - Apps on Google Play
Train music theory with interval drills and note-reading exercises.
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
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…

Careers

Kotlin Multiplatform job postings and opportunities.

Senior Software Engineer - Mobile (REMOTE) at Fanatics

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.

Got something interesting to share with the Kotlin Multiplatform community? Submit your link for a chance to get featured in the next issue of commonMain.dev.

🤝 Support the Build

commonMain.dev is made possible by our partners. If you have a tool or service that helps KMP developers ship to production faster, we’d love to help you reach our community. Collaborate with us.

✍ Code Review

This newsletter is curated and written by a real human being. I’m always looking for ways to optimize the build. Was there something you liked or disliked in particular? Or did you find a bug in this issue? Simply reply to this email - I read every comment from the community and take your feedback into account for the next release.

Until next time,
Stay platform-independent!
Bogdan • Founder of commonMain.dev