KMP Tutorial #19: KMP for Desktop and Web — Compose Multiplatform Beyond Mobile

So far, our notes app runs on Android and iOS. The shared module handles business logic, networking, and database. The UI is platform-specific: Compose on Android, SwiftUI on iOS. But KMP can go further. With Compose Multiplatform, you can build desktop apps for Windows, macOS, and Linux. With Kotlin/Wasm, you can run Kotlin in the browser. In this tutorial, we explore both options — what they look like, how to configure them, and when they make sense. ...

April 7, 2026 · 8 min

KMP Tutorial #17: Building the UI Layer — Compose + SwiftUI with Shared ViewModel

In the previous tutorial, we built the shared data layer with Ktor, SQLDelight, and offline-first sync. The data layer works, but the UI is basic. You can only see a list of notes with a “+” button that creates placeholder notes. In this tutorial, we build a proper UI layer. You will add navigation between screens, a note editing screen with a color picker, pull-to-refresh sync, and loading and error states. All of this works on both Android (Compose) and iOS (SwiftUI). ...

April 6, 2026 · 14 min

KMP Tutorial #15: Planning the Notes App — Architecture and Project Setup

Welcome to Part 4 of our KMP series — Build a Real App. In the next four tutorials, we build a complete cross-platform Notes app from scratch. This article covers the planning phase: architecture decisions, tech stack, project structure, and the initial setup that makes everything work on both Android and iOS. By the end of this tutorial, you will have a working project skeleton with shared business logic, a SQLDelight database, Koin dependency injection, and basic UI on both platforms. ...

April 5, 2026 · 11 min

KMP Tutorial #7: SQLDelight — Database in Kotlin Multiplatform

In the Ktor tutorial, we loaded data from the internet. But what happens when the user has no internet? The app shows nothing. You need a local database — and in KMP, that means SQLDelight. SQLDelight is the opposite of Room. Room generates SQL from Kotlin. SQLDelight generates Kotlin from SQL. You write real SQL queries, and SQLDelight generates type-safe Kotlin code. It works on Android, iOS, Desktop, and Web — all from the same .sq files. ...

April 3, 2026 · 11 min

KMP Tutorial #5: KMP vs Flutter vs React Native — Which Should You Choose in 2026?

This is the most common question in cross-platform development: which framework should I use? The honest answer: there is no universal winner. Each framework has a different philosophy, different strengths, and fits different teams. This article will help you make an informed decision — not sell you on one framework. I will compare them across 10 dimensions with real data from 2026. The Three Philosophies Before we look at features, understand the core philosophy of each: ...

April 2, 2026 · 9 min

KMP Tutorial #4: Compose Multiplatform — Share Your UI Across Android, iOS, and Desktop

In the previous tutorials, we shared business logic between Android and iOS. The UI stayed separate — Compose on Android, SwiftUI on iOS. But what if you could share the UI too? That is what Compose Multiplatform (CMP) does. Write your Compose code once. Run it on Android, iOS, Desktop, and Web. Same @Composable functions. Same Modifier chains. Same MaterialTheme. If you followed our Jetpack Compose tutorial series, you already know how to build Compose UI. CMP uses the exact same API. No new framework to learn. ...

April 2, 2026 · 9 min

KMP Tutorial #3: Understanding KMP Project Structure — Source Sets, Dependencies, and expect/actual

In the previous tutorial, we created a KMP project and ran it on Android and iOS. Now let’s understand exactly how that project is organized — because once you understand the structure, everything else in KMP makes sense. This is the tutorial that separates developers who struggle with KMP from those who build confidently. Take your time. The Core Idea: Source Sets A KMP project is organized into source sets. Each source set is a collection of Kotlin files that compile to specific platforms. ...

April 1, 2026 · 12 min

KMP Tutorial #2: Setting Up Your First Kotlin Multiplatform Project

In the previous tutorial, we learned what KMP is and why it matters. Now let’s get our hands dirty — create a real project, understand every file in it, write shared code, and run it on both Android and iOS. This is a long tutorial. Take your time. By the end, you will have a working cross-platform app and understand exactly how every piece fits together. Part 1: Setting Up Your Environment What You Need Tool Required Purpose Android Studio Yes IDE for KMP development (latest stable) Xcode Yes (Mac only) Builds and runs iOS apps JDK 17+ Yes Kotlin compiler depends on it Mac computer For iOS Apple requires Xcode, which only runs on macOS CocoaPods Optional Some KMP libraries need it for iOS If you are on Windows or Linux, you can still write shared code and build the Android app. But you cannot build or run iOS. There is no way around this — Apple controls iOS builds. ...

April 1, 2026 · 14 min

KMP Tutorial #1: What is Kotlin Multiplatform and Why Should You Learn It?

You are a Kotlin developer. You build Android apps. But your company also needs an iOS app. And maybe a desktop app. And a web app. Do you write everything four times? Do you switch to Flutter and learn Dart? Do you hire a separate iOS team? Or do you use the Kotlin you already know — and share your code across all platforms? That is what Kotlin Multiplatform (KMP) does. ...

April 1, 2026 · 8 min