4 min read

Kotlin Multiplatform Newsletter #27

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.

Change the Map: Feature Flags and Remote Config in Kotlin Multiplatform

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

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

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

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

Artboard is a spatial browser gallery for Compose Multiplatform @Previews. 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

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
    A Kotlin Multiplatform library that provides localized display names for kotlinx-datetime types.
  • LazySurface
    Build 2D surfaces where items say who they sit next to, not where they are. Lazy, on every Compose platform.
  • KMP Logger
    A lightweight, structured logging library for Kotlin Multiplatform projects with support for Android, and iOS.
  • TextKit
    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
    100% Kotlin Multiplatform Multibase Encoder/Decoder.

Careers

Kotlin Multiplatform job postings and opportunities.

Senior Kotlin Multiplatform Engineer - YOnC SDK at Yo
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. 

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