<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>commonMain.dev (Articles)</title>
    <link>https://commonmain.dev/</link>
    <description>This is an RSS Feed for the newsletter "commonMain.dev (Articles)"</description>
    <item>
      <title>Kotlin 2.3.20 Released</title>
      <link>https://commonmain.dev/r/61d0fc7b?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/61d0fc7b?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Compose Multiplatform 1.11.0 Is Now Available</title>
      <link>https://commonmain.dev/r/537d72c5?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/537d72c5?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>A New Default Project Structure for Kotlin Multiplatform</title>
      <link>https://commonmain.dev/r/4cec6e79?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/4cec6e79?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>The Road to Name-Based Destructuring</title>
      <link>https://commonmain.dev/r/58d8355b?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/58d8355b?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Help Shape the Future of Kotlin in the Age of AI</title>
      <link>https://commonmain.dev/r/1665a9d0?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/1665a9d0?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - Practical Kotlin Deep Dive</title>
      <link>https://commonmain.dev/r/2f6991d4?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Stop treating Kotlin like a black box! &#x1f9e0; 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 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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/2f6991d4?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>KMP Splash: How I Stopped Opening Xcode for Splash Screens</title>
      <link>https://commonmain.dev/r/8b9e28f4?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/8b9e28f4?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>When SPM import Symbol Conflicts Break Your Encryption; Properly encrypt your Room database in KMP</title>
      <link>https://commonmain.dev/r/b227d896?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;My KMP project uses Kotlin’s experimental SPM import (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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/b227d896?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Building GPU Shader Effects for Compose Multiplatform: From Scratch to ShaderX</title>
      <link>https://commonmain.dev/r/0db2c179?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/0db2c179?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Compose Styling Is Changing — Here’s What Google’s New Style API Gets Right (and What It Still Needs)</title>
      <link>https://commonmain.dev/r/e67058b1?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/e67058b1?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Nav3 Recipes</title>
      <link>https://commonmain.dev/r/f0a609ab?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Showcase of common use cases &amp; patterns when working with Compose Multiplatform Navigation3.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/f0a609ab?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Compose Unstyled 2.0: Let there be component libraries!</title>
      <link>https://commonmain.dev/r/6d0f2be2?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Compose Unstyled 2.0 is finally out, and I'm incredibly stoked I get to talk to you about it!&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/6d0f2be2?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - Carrd</title>
      <link>https://commonmain.dev/r/435ab72c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;- 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!&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/435ab72c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Rudio — WiFi Map for the Real World</title>
      <link>https://commonmain.dev/r/980ccab1?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Find and share open WiFi spots near you.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/980ccab1?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - wellfound</title>
      <link>https://commonmain.dev/r/c390b56d?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;• Where startups and job seekers connect. &#x1f91d; Connect directly with founders at top startups - no third party recruiters allowed. &#x1f4b8; 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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/c390b56d?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Kotlin Engineer – (Senior/Staff)</title>
      <link>https://commonmain.dev/r/ab6a69da?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;at VirtusLab 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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/ab6a69da?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Senior Android Developer (KMP)</title>
      <link>https://commonmain.dev/r/33818bb3?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;at CUJU 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.&lt;/p&gt;</description>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/33818bb3?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-19T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Kotlin Ecosystem Mentorship Program</title>
      <link>https://commonmain.dev/r/edfce0cd?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;: Results and Winners In the Kotlin Ecosystem Mentorship Program pilot, mentors and mentees worked together on real Kotlin open-source projects to make their first meaningful community contribution. Four pairs successfully completed the two-month program, and one eligible pair was randomly selected in the prize drawing to receive the grand prize – a trip to KotlinConf 2026 in Munich!&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/edfce0cd?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>How to Handle Exceptions in Kotlin Flows</title>
      <link>https://commonmain.dev/r/44af052c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Exceptions can be thrown from within our flows, just like anywhere else in our Kotlin code. In this video, we'll see the right and wrong places to put your try-catch blocks, and how to use the catch operator.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/44af052c?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - Practical Kotlin Deep Dive</title>
      <link>https://commonmain.dev/r/23dbbd91?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;Stop treating Kotlin like a black box! &#x1f9e0; 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 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.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/23dbbd91?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Drop the Clutch: Three Metro DI Patterns Every KMP Developer Should Know</title>
      <link>https://commonmain.dev/r/093130dd?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;I already covered Koin Annotations in a previous article. What follows isn’t a migration guide. It’s a look at three specific patterns that come up in every real KMP project and where Metro’s behaviour changed how I think about dependency injection.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/093130dd?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Fixing production issues in a Kotlin Multiplatform app with Kotzilla MCP Server and Claude Code</title>
      <link>https://commonmain.dev/r/f9b5c8fc?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;In this article, I fixed real production issues on a Kotlin Multiplatform app entirely from inside Claude Code using Kotzilla MCP Server. Two things made that loop work.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/f9b5c8fc?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Push Notifications in Mobile Apps Using Kotlin Multiplatform (KMP): A Practical Guide</title>
      <link>https://commonmain.dev/r/cec5d508?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;In this article, we’ll walk through how to implement push notifications in a KMP project, share as much logic as possible, and handle the platform-specific parts cleanly using expect/actual.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/cec5d508?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Building a Production-Grade Adaptive Layout System in Kotlin Multiplatform — From Phone to Foldable</title>
      <link>https://commonmain.dev/r/c6599482?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;This article is about building a layout system that is intentionally adaptive. One that knows what device it’s running on, what orientation it’s in, whether a hinge is separating the screen in two, whether the iPad is in Split View, and makes a precise, correct decision every single time — with zero hardcoded pixel values and zero platform-specific layout code in your feature screens.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/c6599482?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Jetpack Compose Animations</title>
      <link>https://commonmain.dev/r/bd187dda?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;A growing catalog of self contained Jetpack Compose animation examples by skydoves. Every entry is a single composable file you can read end to end, with the constants you can tweak and a written walkthrough of how the motion is built.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/bd187dda?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>SPONSORED - wellfound</title>
      <link>https://commonmain.dev/r/fc629e13?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;• Where startups and job seekers connect. &#x1f91d; Connect directly with founders at top startups - no third party recruiters allowed. &#x1f4b8; 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.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/fc629e13?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>Multi-Platform Mobile Application Developer</title>
      <link>https://commonmain.dev/r/b37f3870?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;at Booz Allen As a senior Multi-Platform Mobile Application Developer at Booz Allen, you’ll support the development of systems, sites, and tools for our clients. Using the latest tools and technology, you’ll write, test, and edit code in support of the team’s overall results. You’ll expand your skills as you develop and reverse engineer software that supports hardware functionality on a wide range of devices, as well as configure solutions based on the platform being used. You’ll work with other team leaders to troubleshoot and correct operational issues, as well as with cybersecurity specialists to ensure that the software you’re creating is secure.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/b37f3870?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
    <item>
      <title>FullStack Software Engineer (Kotlin/React)</title>
      <link>https://commonmain.dev/r/5de243d4?m=3be13b1e-0485-41a9-8c96-0511056b8af0</link>
      <description>&lt;p&gt;at CoreWillSoft We are looking for a Full-Stack Software Engineer with strong backend experience in Kotlin/Java and either: solid Frontend (React) expertise, or experience in Kotlin Multiplatform / Android development. Our team operates in a scaled agile approach across Europe with a headquarter in Bonn, Germany. It is responsible for the complete software development lifecycle; including ideation, implementation, and operation of the secure IoT software operating smart buildings and smart homes across the world.&lt;/p&gt;</description>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <guid>https://commonmain.dev/r/5de243d4?m=3be13b1e-0485-41a9-8c96-0511056b8af0</guid>
      <dc:date>2026-05-12T00:00:00Z</dc:date>
    </item>
  </channel>
</rss>
