[//]: # (title: Learning resources)

<web-summary>Choose the learning materials that best match your KMP experience level.</web-summary>

We’ve collected over 30 essential Kotlin Multiplatform (KMP) and Compose Multiplatform learning materials. Browse by skill level to find tutorials, courses, and articles that fit your experience:

🌱 **Beginner**. Learn KMP and Compose fundamentals through official JetBrains and Google tutorials. Build simple apps using core libraries 
like Room, Ktor, and SQLDelight.

🌿 **Intermediate**. Develop real-world apps with shared ViewModels, Koin-based dependency injection, and clean architecture. Learn through courses by JetBrains and
community educators.

🌳 **Advanced**. Progress to full-scale KMP engineering for backend and game development, with guidance on scaling architecture and
adoption for large, multi-team projects.

🧩 **Library authors**. Create and publish reusable KMP libraries. Learn API design, Dokka documentation, and Maven publishing with official
JetBrains tooling and templates.

<tabs>
<tab id="all-resources" title="All">


<snippet id="source">
<table>

<!-- BEGINNER BLOCK -->
<thead>
<tr>
<th>

**🎚**

</th>
<th>

**Resource /**

**Type**

</th>
<th>

**Creator /**
**Platform**

</th>

<th>

**You will learn**

</th>
<th>

**Price**

</th>
<th>

**Est. time**

</th>
</tr>
</thead>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Kotlin Multiplatform Overview](kmp-overview.md)

Article

</td>
<td>
JetBrains
</td>

<td>
The core value of KMP, real-world use cases, and guidance on choosing the right learning path.
</td>
<td>
Free
</td>
<td>
30 min
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Create Your First KMP App](multiplatform-create-first-app.md)

Tutorial

</td>
<td>
JetBrains
</td>

<td>
How to set up a KMP project and share simple business logic between Android and iOS while keeping the UI fully native.
</td>
<td>
Free
</td>
<td>
1–2 h
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Get Started With Kotlin Multiplatform (Google Codelab)](https://developer.android.com/codelabs/kmp-get-started)

Tutorial

</td>
<td>
Google

Android
</td>

<td>
How to add a shared KMP module to an existing Android project and integrate it with iOS, using the SKIE plugin to generate idiomatic Swift APIs from your Kotlin code.
</td>
<td>
Free
</td>
<td>
1–2 h
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Create Your First Compose Multiplatform App](compose-multiplatform-create-first-app.md)

Tutorial

</td>
<td>
JetBrains
</td>

<td>
How to build a complete Compose Multiplatform app from the ground up, covering essential UI components, state management,
and resource handling, as you progress from a simple template to a functional time zone app that runs on Android, iOS, desktop, and web.
</td>
<td>
Free
</td>
<td>
2–3 h
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Create a Multiplatform App Using Ktor and SQLDelight](multiplatform-ktor-sqldelight.md)

Tutorial

</td>
<td>
JetBrains
</td>

<td>
How to build a shared data layer using Ktor for networking and SQLDelight for a local database, and connect it to native UIs
built with Jetpack Compose on Android and SwiftUI on iOS.
</td>
<td>
Free
</td>
<td>
4–6 h
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Expected and Actual Declarations](multiplatform-expect-actual.md)

Article

</td>
<td>
JetBrains
</td>

<td>
The core expect/actual mechanism for accessing platform-specific APIs from common code, covering different strategies
like using functions, properties, and classes.
</td>
<td>
Free
</td>
<td>
1–2 h
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Using Platform-Specific APIs in KMP Apps](https://www.youtube.com/watch?v=bSNumV04y_w)

Video tutorial

</td>
<td>
JetBrains

YouTube
</td>

<td>
Best practices for using platform-specific code in your KMP apps.
</td>
<td>
Free
</td>
<td>
15 min
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[KMP for Android Developers](https://nsmirosh.gumroad.com/l/tmmqwa)

Video course

</td>
<td>
Mykola Miroshnychenko

Gumroad
</td>

<td>
How to extend your existing Android development skills to iOS by mastering KMP fundamentals like expect/actual and source sets,
as well as building a complete app stack using modern libraries like Ktor for networking and Room for persistence.
</td>
<td>
~$60
</td>
<td>
8–12 h
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Kotlin Multiplatform Masterclass](https://www.udemy.com/course/kotlin-multiplatform-masterclass/)

Video course

</td>
<td>
Petros Efthymiou

Udemy
</td>

<td>
How to apply clean architecture and MVI from the ground up to build a complete KMP application, integrating a full stack of
essential libraries – Ktor, SQLDelight, and Koin – with native Jetpack Compose and SwiftUI UIs.
</td>
<td>
€10–€20
</td>
<td>
6 h
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Compose Multiplatform Full Course 2025 | Zero to Hero](https://www.youtube.com/watch?v=Z92zJzL-6z0&list=PL0pXjGnY7PORAoIX2q7YG2sotapCp4hyl)

Video course

</td>
<td>
Code with FK

YouTube
</td>

<td>
How to build a complete, feature-rich application entirely with Compose Multiplatform, progressing from the fundamentals
to advanced, real-world features like Firebase Authentication, offline support with SQLDelight, and real-time updates.
</td>
<td>
Free
</td>
<td>
20 h
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Kotlin Multiplatform Development](https://www.linkedin.com/learning/kotlin-multiplatform-development)

Video course

</td>
<td>
Colin Lee

LinkedIn Learning
</td>

<td>
Architectural choices between Compose Multiplatform and native UIs, fundamentals of Swift interoperability,
and a comprehensive overview of the essential KMP ecosystem for networking, persistence, and dependency injection.
</td>
<td>
~$30–$40/month)
</td>
<td>
3 h
</td>
</tr>

<tr filter="beginner">
<td>
🌱
</td>
<td>

[Kotlin Multiplatform by Tutorials (Third Edition)](https://www.kodeco.com/books/kotlin-multiplatform-by-tutorials/v3.0)

Book

</td>
<td>
Kodeco Team (Kevin D. Moore, Carlos Mota, Saeed Taheri)
</td>

<td>
The fundamentals of sharing code by connecting native UI to a KMP shared module for networking, serialization, and persistence.
You'll also see how to apply dependency injection, testing, and modern architecture to build maintainable and scalable real-world apps.
</td>
<td>
~$60
</td>
<td>
40–60 h
</td>
</tr>

<!-- END OF BEGINNER BLOCK -->

<!-- INTERMEDIATE BLOCK -->

<tr filter="intermediate">
<td>
🌿
</td>
<td>

[Make Your Android Application Work on iOS](multiplatform-integrate-in-existing-app.md)

Tutorial

</td>
<td>
JetBrains
</td>

<td>
The practical steps to migrate an existing Android app to KMP by extracting its business logic
into a shared module that can be used by both the original Android app and a new native iOS project.
</td>
<td>
Free
</td>
<td>
2 h
</td>
</tr>

<tr filter="intermediate">
<td>
🌿
</td>
<td>

[Migrate Existing Apps to Room KMP (Google Codelab)](https://developer.android.com/codelabs/kmp-migrate-room)

Tutorial

</td>
<td>
Google

Android
</td>

<td>
How to migrate an existing Android Room database into a shared KMP module, allowing you to reuse your familiar DAOs and entities on both Android and iOS.
</td>
<td>
Free
</td>
<td>
2 h
</td>
</tr>

<tr filter="intermediate">
<td>
🌿
</td>
<td>

[How to Share ViewModels in Compose Multiplatform (with Dependency Injection!)](https://www.youtube.com/watch?v=O85qOS7U3XQ)

Video tutorial

</td>
<td>
Philipp Lackner

YouTube
</td>

<td>
How to implement shared ViewModels in a Compose Multiplatform project using Koin for dependency injection, allowing you to write your state management logic once.
</td>
<td>
Free
</td>
<td>
30 min
</td>
</tr>

<tr filter="intermediate">
<td>
🌿
</td>
<td>

[The Compose Multiplatform Crash Course 2025](https://www.youtube.com/watch?v=WT9-4DXUqsM)

Video course

</td>
<td>
Philipp Lackner

YouTube
</td>

<td>
How to build a complete, production-ready book-reading app from scratch using a clean architecture, covering a modern KMP stack
including Ktor for networking, Room for the local database, Koin for dependency injection, and multi-platform navigation.
</td>
<td>
Free
</td>
<td>
5 h
</td>
</tr>

<tr filter="intermediate">
<td>
🌿
</td>
<td>

[Building Industry-Level Multiplatform Apps With KMP](https://pl-coding.com/kmp/)

Video course

</td>
<td>
Philipp Lackner

[pl.coding.com](https://pl-coding.com/)

</td>

<td>
How to build a real-world translator app by sharing ViewModels and business logic between native UIs (Jetpack Compose and SwiftUI),
covering the full development life cycle from clean architecture to unit, UI, and end-to-end testing for both platforms.
</td>
<td>
~€99
</td>
<td>
20 h
</td>
</tr>

<tr filter="intermediate">
<td>
🌿
</td>
<td>

[Building Industry-Level Compose Multiplatform Android and iOS Apps](https://pl-coding.com/cmp-mobile)

Video course

</td>
<td>
Philipp Lackner

[pl.coding.com](https://pl-coding.com/)

</td>

<td>
How to build a large-scale, offline-first chat application from scratch using a complete Compose Multiplatform stack,
including Ktor for real-time WebSockets, Room for local persistence, and Koin for multi-module dependency injection.
</td>
<td>
~€199
</td>
<td>
34 h
</td>
</tr>

<tr filter="intermediate">
<td>
🌿
</td>
<td>

[Ultimate Compose Multiplatform: Android/iOS and Testing](https://www.udemy.com/course/ultimate-compose-multiplatform-androidios-testing-kotlin/)

Video course

</td>
<td>
Hamidreza Sahraei

Udemy

</td>

<td>
How to build a feature-rich virtual crypto wallet app entirely with Compose Multiplatform, covering not just the core stack
(Ktor, Room, Koin) but also robust unit/UI testing and advanced platform integrations like biometric authentication.
</td>
<td>
~€20
</td>
<td>
8 h
</td>
</tr>
<!-- END OF INTERMEDIATE BLOCK -->

<!-- ADVANCED BLOCK -->

<tr filter="advanced">
<td>
🌳
</td>
<td>

[Kotlin/Swift Interopedia](https://github.com/kotlin-hands-on/kotlin-swift-interopedia)

Article

</td>
<td>
JetBrains

GitHub
</td>

<td>
Interoperability with iOS (Obj-C/Swift), SKIE, KMP-NativeCoroutines, workarounds for language feature gaps, Swift export, and
bidirectional interop.
</td>
<td>
Free
</td>
<td>
2 h
</td>
</tr>

<tr filter="advanced">
<td>
🌳
</td>
<td>

[Multi-Modular Ecommerce App for Android and iOS (KMP)](https://www.udemy.com/course/multi-modular-ecommerce-app-for-android-ios-kmp/)

Video course

</td>
<td>
Stefan Jovanovic

Udemy
</td>

<td>
The full product life cycle, from designing the UI of an e-commerce app in Figma to building it as a complete, multi-modular application
with a shared UI using Compose Multiplatform, while also creating and integrating a full backend with Firebase services for authentication, database, and automated cloud functions.
</td>
<td>
~€50
</td>
<td>
30 h
</td>
</tr>

<tr filter="advanced">
<td>
🌳
</td>
<td>

[Exploring Ktor with Kotlin Multiplatform and Compose](https://www.linkedin.com/learning/exploring-ktor-with-kotlin-multiplatform-and-compose)

Video course

</td>
<td>
Troy Miles

LinkedIn Learning
</td>

<td>
How to build a full-stack Kotlin application by first creating and deploying a secure Ktor backend to AWS and then using Kotlin Multiplatform
to build native clients with shared code that consume your API.
</td>
<td>
~$30–$40/month
</td>
<td>
2-3 h
</td>
</tr>

<tr filter="advanced">
<td>
🌳
</td>
<td>

[Full-Stack Game Development - Kotlin and Compose Multiplatform](https://www.udemy.com/course/full-stack-game-development-kotlin-compose-multiplatform/)

Video course

</td>
<td>
Stefan Jovanovic

Udemy
</td>

<td>
How to build a complete 2D game with Compose Multiplatform, covering physics, collision detection, and sprite sheet animations,
and how to deploy it across Android, iOS, desktop, and web (via Kotlin/Wasm).
</td>
<td>
~€99
</td>
<td>
8–10 h
</td>
</tr>

<tr filter="advanced">
<td>
🌳
</td>
<td>

[Philipp Lackner Full-Stack Bundle: KMP and Spring Boot](https://pl-coding.com/full-stack-bundle)

Video course

</td>
<td>
Philipp Lackner

[pl.coding.com](https://pl-coding.com/)

</td>

<td>
How to architect, build, and deploy a complete, full-stack chat application, covering everything from a multi-module
Spring Boot backend with WebSockets to offline-first Compose Multiplatform clients (Android, iOS, desktop, web) and a full CI/CD pipeline.
</td>
<td>
~€429
</td>
<td>
55 h
</td>
</tr>

<tr filter="advanced">
<td>
🌳
</td>
<td>

[KMP for Native Mobile Teams](https://touchlab.co/kmp-teams-intro)

Article series

</td>
<td>
Touchlab
</td>

<td>
How to navigate the entire KMP adoption process within an established native mobile team, from securing initial buy-in and
running a technical pilot to scaling the shared codebase with a sustainable real-world workflow.
</td>
<td>
Free
</td>
<td>
6–8 h
</td>
</tr>


<!-- END OF ADVANCED BLOCK -->

<!-- LIB-AUTHORS BLOCK -->

<tr filter="lib-authors">
<td>
🧩
</td>
<td>

[API Guidelines for Multiplatform Library Building](https://kotlinlang.org/docs/api-guidelines-build-for-multiplatform.html)

Documentation

</td>
<td>
JetBrains
</td>

<td>
How to design the public API of your multiplatform library, following essential best practices for maximizing code reuse
and ensuring broad platform compatibility.
</td>
<td>
Free
</td>
<td>
1–2 h
</td>
</tr>

<tr filter="lib-authors">
<td>
🧩
</td>
<td>

[Create Your Kotlin Multiplatform Library](create-kotlin-multiplatform-library.md)

Tutorial

</td>
<td>
JetBrains
</td>

<td>
How to use the official starter template, set up local Maven publishing, structure your library, and configure publishing.
</td>
<td>
Free
</td>
<td>
2–3 h
</td>
</tr>

<tr filter="lib-authors">
<td>
🧩
</td>
<td>

[Documentation with Dokka](https://kotlinlang.org/docs/dokka-introduction.html)

Documentation

</td>
<td>
JetBrains
</td>

<td>
How to use Dokka to automatically generate professional API documentation for your KMP library in multiple formats,
with support for mixed Kotlin/Java projects.
</td>
<td>
Free
</td>
<td>
2–3 h
</td>
</tr>

<tr filter="lib-authors">
<td>
🧩
</td>
<td>

[KMP Library Template](https://github.com/Kotlin/multiplatform-library-template)

GitHub template

</td>
<td>
JetBrains

GitHub
</td>

<td>
How to quickly bootstrap a new KMP library project using an official template that comes pre-configured with best practices
for build setup and publishing.
</td>
<td>
Free
</td>
<td>
1 h
</td>
</tr>

<tr filter="lib-authors">
<td>
🧩
</td>
<td>

[Publish to Maven Central](multiplatform-publish-libraries.md)

Tutorial

</td>
<td>
JetBrains
</td>

<td>
The complete, step-by-step process for publishing your KMP library to Maven Central, including setting up credentials,
configuring the publishing plugin, and automating the process with CI.
</td>
<td>
Free
</td>
<td>
3–4 h
</td>
</tr>

<tr filter="lib-authors">
<td>
🧩
</td>
<td>

[Kotlin Multiplatform Libraries](https://www.linkedin.com/learning/kotlin-multiplatform-libraries)

Video course

</td>
<td>
LinkedIn Learning
</td>

<td>
The complete life cycle of creating a KMP library, from effective API design and code sharing strategies to final distribution and best practices.
</td>
<td>
~$30–$40/month
</td>
<td>
2-3 h
</td>
</tr>

<!-- END OF LIB-AUTHORS BLOCK -->

</table>
</snippet>

<!-- END OF REVOKED BLOCK -->

</tab>

<tab id="beginner" title="🌱 Beginner">

<include element-id="source" use-filter="empty,beginner" from="kmp-learning-resources.md"/>

</tab>

<tab id="intermediate" title="🌿 Intermediate">

<include element-id="source" use-filter="empty,intermediate" from="kmp-learning-resources.md"/>

</tab>

<tab id="advanced" title="🌳 Advanced">

<include element-id="source" use-filter="empty,advanced" from="kmp-learning-resources.md"/>

</tab>

<tab id="lib-authors" title="🧩 Library authors">

<include element-id="source" use-filter="empty,lib-authors" from="kmp-learning-resources.md"/>

</tab>


</tabs>