5 min read

Kotlin Multiplatform Newsletter #31

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

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

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.

Integrating on-device and cloud AI in a Kotlin Multiplatform app

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

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
    Plug-and-play Compose Multiplatform AdMob SDK for Android GMA Next-Gen and iOS Google Mobile Ads.
  • Skeletal
    Automatic loading skeletons for Compose Multiplatform. Wrap your existing composables — no parallel skeleton UI to build or maintain.
  • Pose
    Auto-generate Jetpack Compose @Preview functions from your @Composable code at build-time, deterministic, offline, no LLM.
  • Compose Docking
    IDE-style window docking for Compose Multiplatform: splits, tab groups, drag-to-dock with docking handles, floating windows, maximize, and layout persistence.
  • materialKolor
    A Compose Multiplatform library for creating dynamic Material Design 3 color palettes from any color.
  • Kexcel
    Read and write Excel (.xlsx) spreadsheets from Kotlin Multiplatform — pure Kotlin, no Apache POI.
  • kmp-zip
    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.

GitHub - CharlieTap/mood: A Kotlin Multiplatform Doom implementation
A Kotlin Multiplatform Doom implementation. Contribute to CharlieTap/mood development by creating an account on GitHub.
GitHub - NucleusFramework/EdgeTranslator: Offline Ai translator for desktop
Offline Ai translator for desktop. Contribute to NucleusFramework/EdgeTranslator development by creating an account on GitHub.
GitHub - Otacon/Kassette: A Kotlin Multiplatform NES emulator
A Kotlin Multiplatform NES emulator. Contribute to Otacon/Kassette development by creating an account on GitHub.

Careers

Kotlin Multiplatform job postings and opportunities.

Senior Engineer Mobile at Bayer Global

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.

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