> ## Content Index
> Fetch the complete content index at: https://commonmain.dev/llms.txt
> Use this file to discover other available public pages before exploring further.

# Kotlin Multiplatform Newsletter #13
- URL: https://commonmain.dev/kotlin-multiplatform-newsletter-13/
- Published: 2026-04-14T13:00:17.000Z
- Updated: 2026-06-03T15:14:46.000Z
- Author: Bogdan Codes
- Tags: Issues

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.