> ## 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 #18
- URL: https://commonmain.dev/kotlin-multiplatform-newsletter-18/
- Published: 2026-05-19T13:00:54.000Z
- Updated: 2026-07-03T08:31:22.000Z
- Author: Bogdan Codes
- Tags: Issues

We cover the dual arrivals of **Kotlin 2.3.20** and **Compose Multiplatform 1.11.0**, mapping out the massive upgrades to iOS, Web, and UI testing. We explore a foundational shift toward **Name-Based Destructuring**, an upcoming new default KMP project structure, and critical technical walkthroughs—including avoiding silent plain-text database bugs when mixing SPM imports with Room encryption. Plus, we highlight game-changing local AI tooling via **Llamatik** and open positions at VirtusLab and CUJU.

### **The Log**

The only Kotlin Multiplatform and Compose Multiplatform news you actually need to know.

[Kotlin 2.3.20 Released](https://blog.jetbrains.com/kotlin/2026/03/kotlin-2-3-20-released/?ref=commonmain.dev)  
  
The Kotlin 2.3.20 release is out! Here are the main highlights:  
\- ****Gradle:** Compatibility with Gradle 9.3.0 and Kotlin/JVM compilation uses the Build tools API by default.  
\- ****Maven:** Simplified setup for Kotlin projects.  
\- ****Kotlin compiler plugins:** Lombok is Alpha and improved JPA support in the `kotlin.plugin.jpa` plugin.  
\- ****Language:** Support for name-based destructuring declarations.  
\- ****Standard library:** New API for creating immutable copies of `Map.Entry`.  
\- ****Kotlin/Native:** New interoperability mode for C and Objective-C libraries.

[Compose Multiplatform 1.11.0 Is Now Available](https://blog.jetbrains.com/kotlin/2026/05/compose-multiplatform-1-11-0/?ref=commonmain.dev)  
  
A new release of Compose Multiplatform has landed, with improvements to the iOS and web experience and a refreshed approach to UI testing. Read on for the highlights, or for the complete list of changes, check out the [What’s New](https://kotlinlang.org/docs/multiplatform/whats-new-compose-111.html?ref=commonmain.dev).

[A New Default Project Structure for Kotlin Multiplatform](https://blog.jetbrains.com/kotlin/2026/05/new-kmp-default-structure/?ref=commonmain.dev)  
  
We are updating the default project structure for Kotlin Multiplatform projects to give modules clearer responsibilities, better align with conventions used by other build systems and frameworks, and reflect the [changes in Android Gradle Plugin 9.0](https://blog.jetbrains.com/kotlin/2026/01/update-your-projects-for-agp9/?ref=commonmain.dev).

[The Road to Name-Based Destructuring](https://blog.jetbrains.com/kotlin/2026/05/the-road-to-name-based-destructuring/?ref=commonmain.dev)  
  
Kotlin is changing, with names set to become central in destructuring. In the future, `val (name, age) = person` will extract the `name` and `age` properties from the `person` value, regardless of the way and order in which they were defined. This marks a change from the current approach to destructuring, in which the position is the key element. This blog post explains the reasoning behind this change, the migration strategy, and how Kotlin’s tooling supports it.

[Help Shape the Future of Kotlin in the Age of AI](https://blog.jetbrains.com/kotlin/2026/05/help-shape-the-future-of-kotlin-in-the-age-of-ai/?ref=commonmain.dev)  
  
We want to better understand how Kotlin developers use AI today, what works well, where the friction points are, and what opportunities lie ahead. That’s why we’re launching a short community survey focused on ****AI-assisted development with Kotlin**.

### Expect Actual

Technical deep dives, or solving the "how-the-hell-do-I-test-this" problems.

affiliate link — supports the newsletter at no extra cost to you 

****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) 

[KMP Splash: How I Stopped Opening Xcode for Splash Screens](https://www.kmpbits.com/posts/kmp-splash-plugin?ref=commonmain.dev)  
  
KMP Splash is a Gradle plugin that handles the entire splash screen setup for both Android and iOS from a single config block. This is about why I built it and how it evolved. The README has the full setup. This is the story behind it.

[When SPM import Symbol Conflicts Break Your Encryption; Properly encrypt your Room database in KMP](https://funkymuse.dev/posts/encrypt-kmp-database-with-firebase-in-project/?ref=commonmain.dev)  
  
My KMP project uses Kotlin’s experimental [SPM import](https://kotlinlang.org/docs/native-spm.html?ref=commonmain.dev) (not CocoaPods) to bring in Firebase iOS SDK, GoogleSignIn, and SQLCipher.swift, the moment Firebase entered the picture, the iOS database stopped being encrypted. No crash, no error thrown, just a silently plaintext database, just like being left on seen by your crush.

### LazyColumn

Compose Multiplatform tips, tricks, and code snippets.

[Building GPU Shader Effects for Compose Multiplatform: From Scratch to ShaderX](https://levelup.gitconnected.com/building-gpu-shader-effects-for-compose-multiplatform-from-scratch-to-shaderx-326659c4f47b?ref=commonmain.dev)  
  
In this post, we’ll learn how to make GPU shader effects from scratch, talk about the problems that come up when working on multiple platforms, and see how the ShaderX library I made makes everything easier to understand with a simple API.

[Compose Styling Is Changing — Here’s What Google’s New Style API Gets Right (and What It Still Needs)](https://medium.com/@simtop/compose-styling-is-changing-heres-what-google-s-new-style-api-gets-right-9cb52f5065ef?ref=commonmain.dev)  
  
After working through the exercises and testing it against a real design system used by 60+ engineers, it became clear that this API introduces a missing layer in Compose — one that changes how we should think about component architecture, not just styling.

[Nav3 Recipes](https://github.com/terrakok/nav3-recipes?ref=commonmain.dev)  
  
Showcase of common use cases & patterns when working with Compose Multiplatform Navigation3.

[Compose Unstyled 2.0: Let there be component libraries!](https://composables.com/blog/compose-unstyled-2.0?ref=commonmain.dev)  
  
Compose Unstyled 2.0 is finally out, and I'm incredibly stoked I get to talk to you about it!

### The Dependency Graph

Curated libraries, tools and plugins that won't break your Gradle build.

- [**KMP Splash**](https://github.com/kmpbits/KMP-Splash?ref=commonmain.dev)  
Professional Splash Screens for Compose Multiplatform, configured in seconds.
- [**Some**](https://github.com/MessiasLima/Some?ref=commonmain.dev)  
A Kotlin JVM library that generates populated instances of any Kotlin class for testing purposes, with zero configuration required.
- [**ShaderX**](https://github.com/Debanshu777/ShaderX?ref=commonmain.dev)  
GPU shader effects for Compose Multiplatform — one API, every platform.
- [**AI agent skills for Kotlin**](https://github.com/Kotlin/kotlin-agent-skills/?ref=commonmain.dev)  
A collection of AI agent skills useful for projects using the Kotlin language.
- [**JetBrains ecosystem plugin**](https://github.com/Kotlin/declarative-gradle-jetbrains-ecosystem-plugin?ref=commonmain.dev)  
The JetBrains ecosystem plugin is an experimental plugin for [Declarative Gradle](https://declarative.gradle.org/?ref=commonmain.dev), Gradle's new declarative build language. You can use this plugin to explore Declarative Gradle itself and a new approach to organizing Kotlin build scripts.
- [**KMP flavorizr**](https://github.com/tahaak67/KMP-Flavorizr?ref=commonmain.dev)  
A Gradle plugin for configuring build flavors (variants) across Android and iOS in Kotlin Multiplatform projects. Define your flavors once in Gradle DSL and let the plugin generate the platform-specific configuration files.
- [**Llamatik**](https://github.com/ferranpons/Llamatik?ref=commonmain.dev)  
True on-device AI for Kotlin Multiplatform (Android, iOS, Desktop, JVM, WASM). LLM, Speech-to-Text and Image Generation — powered by llama.cpp, whisper.cpp and stable-diffusion.cpp.

### Target: Production

Showcase of real-world apps proving KMP is ready for prime time.

affiliate link — supports the newsletter at no extra cost to you 

****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) 

[Rudio — WiFi Map for the Real WorldFind and share open WiFi spots near you.![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/icon/apple-touch-icon-ff71530c69ee01bb8e2e0e6a2eacf8b07ce49ccb1b1ecbfda25ae3e28265df1f.png)RudioRudio![](https://storage.ghost.io/c/57/59/57597180-415a-44ab-aa77-38b4467c31d5/content/images/thumbnail/og-image-960da65ae40d3daae4da46ac2a4943d208a9e8b4783d8d8cfb2bbee16fa13052.png)](https://rudio.app/?ref=commonmain.dev)

### Careers

Kotlin Multiplatform job postings and opportunities.

affiliate link — supports the newsletter at no extra cost to you 

****hackajob** • **Meet Archer, your AI job matching agent**  
  
5x more interviews. Zero guesswork. Archer works 24/7 to match you with roles that fit your stack and seniority. You review the matches, not the job boards.

[Create your free profile ](https://hackajob.com/talent/invite?referral%5Fid=ce111234ec9b294c075f&ref=commonmain.dev) 

[Kotlin Engineer – (Senior/Staff)](https://careers.virtuslab.com/job-offer/kotlin-engineer-2/?ref=commonmain.dev) at [VirtusLab](https://virtuslab.com/?ref=commonmain.dev)  
  
We are looking for engineers interested in building various tooling using mainly Kotlin. Our team is working on IntelliJ plugin, IDEs, coding agents or frameworks for Local AI inference. Your job will be focused 100% on technology and your users will be developers. You will work within, small, flexible team and you will have a lot of autonomy: you will be responsible for design, scope, testing and implementation. You will work with tooling engineers, and you will be part of an organisation specialized in developer tooling.

[Senior Android Developer (KMP)](https://join.com/companies/cuju/16173424-senior-android-developer-m-f-d?ref=commonmain.dev) at [CUJU](https://cuju.pro/?ref=commonmain.dev)  
  
We’re building a scalable cross-platform product using Kotlin Multiplatform Mobile (KMP) to deliver consistent quality and speed across Android and iOS — and we’re looking for a Senior Android Developer who can help us take CUJU to the next level.

---

#### 🚀 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

Every Tuesday, the few KMP links actually worth your time.  
Hand-picked, no AI filler.

Join free 

Email sent! Check your inbox to complete your signup. 

Free forever · One email every Tuesday · No spam, unsubscribe anytime.  
Hand-picked by a senior engineer (8+ yrs) · Read by KMP engineers & tech leads.