5 min read

Kotlin Multiplatform Newsletter #28

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)

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.

One Kotlin codebase, three platforms: building Multidex with Compose Multiplatform

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

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

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

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
    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
    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
    Multiple clouds, one Kotlin Multiplatform bridge. Supporting Android, iOS, web and desktop (JVM).
  • log4k
    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
    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.

Multidex – Pokédex & Dex Guide - Apps on Google Play
Fast offline Pokédex app — search every Pokémon, moves, types, stats & shinies
Adventurers Guild: RPG Sim - Apps on Google Play
Build your guild, recruit heroes, hunt monsters. Offline fantasy RPG simulator

Careers

Kotlin Multiplatform job postings and opportunities.

Senior Mobile Software Engineer with Kotlin at Accesa (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.

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