Documentation
Kotlin Multiplatform (KMP)
Compose HotSwan focuses on Android. If your Kotlin Multiplatform project has an Android target, you can add HotSwan to the Android module and hot reload it just like a standard Android app.
Overview
KMP projects typically share business logic and UI code across platforms while each platform has its own application entry point. On Android, that entry point lives in a dedicated module , commonly named androidApp, composeApp, or app.
HotSwan operates at the Android application level. It compiles changed Kotlin files, extracts the modified classes, and swaps them into the running app on the device. This process is identical whether the project is a single-module Android app or a KMP project with shared modules, as long as the Gradle plugin is applied to the Android application module.
What is supported
HotSwan can hot reload code changes that affect the Android target of your KMP project. This includes changes in the Android application module itself, as well as changes in shared modules that are compiled into the Android app.
- Android application module
- Shared KMP modules (Android target)
- Composable UI changes
- Non-composable function changes
- Resource value changes
- iOS targets
- Desktop targets (use JetBrains Hot Reload)
- Web (Wasm/JS) targets
Setup
The setup is the same as a standard Android project. Apply the HotSwan Gradle compiler plugin to your Android application module only. Do not apply it to shared KMP library modules.
For the full setup steps, see the Setup Example below. This section covers only what is specific to KMP projects.
Important
The plugin must be applied to the module that produces the Android APK, specifically the one with com.android.application applied. In KMP projects this is often androidApp, not composeApp, shared, or library modules. If you apply it to the wrong module, HotSwan will not be able to detect or reload changes.
App Module Path
After installing the plugin, open Settings → Tools → Compose HotSwan and set the App Module Path to point to your Android application module. The path must match the Gradle module path exactly.
The module path depends on your project structure. Common examples:
| Project structure | Module path |
|---|---|
app/androidApp/ | :app:androidApp |
androidApp/ | :androidApp |
app/ (single module) | :app |
Make sure the target is always the module with the com.android.application plugin, not a shared library or composeApp that only contains shared Compose UI without an Android application entry point.

Settings → Tools → Compose HotSwan with :app:androidApp configured as the module path for the KotlinConf app.
Setup Example: KotlinConf App
The KotlinConf App is an open-source KMP project by JetBrains with Android, iOS, Desktop, and Web targets. Here is how to add HotSwan to its Android module.
Project structure
1. Add the plugin to the version catalog
Define the HotSwan compiler plugin in your version catalog so it can be referenced across modules.
[plugins]
hotswan-compiler = { id = "com.github.skydoves.compose.hotswan.compiler", version = "1.0.13" }2. Register in the root build script
Register the plugin in the root build script without applying it, so submodules can apply it individually.
alias(libs.plugins.hotswan.compiler) apply false3. Apply the plugin to the Android module
In app/androidApp/build.gradle.kts, add the HotSwan compiler plugin:
plugins {
alias(libs.plugins.androidApplication)
alias(libs.plugins.composeMultiplatform)
alias(libs.plugins.composeCompiler)
alias(libs.plugins.googleServices)
alias(libs.plugins.metro)
alias(libs.plugins.hotswan.compiler)
}4. Configure the module path
Open Settings → Tools → Compose HotSwan and set App Module Path to :app:androidApp. Because the Android module is nested under app/ in this project, the path is :app:androidApp rather than just :androidApp.
5. Build, run, and hot reload
Build and run the Android app normally. Then open the HotSwan tool window, select your device, and click Start. From this point, any saved changes to Kotlin files in androidApp, shared, or ui-components will be hot reloaded on the device.