{"id":22572083,"url":"https://github.com/jetbrains/compose-hot-reload","last_synced_at":"2026-04-09T12:00:51.497Z","repository":{"id":258629365,"uuid":"874274681","full_name":"JetBrains/compose-hot-reload","owner":"JetBrains","description":"Compose Hot Reload: Make changes to your UI code in a Compose Multiplatform application, and see the results in real time. No restarts required. Compose Hot Reload runs your application on the JetBrains Runtime and intelligently reloads your code whenever it is changed.","archived":false,"fork":false,"pushed_at":"2025-05-13T15:42:20.000Z","size":4370,"stargazers_count":1054,"open_issues_count":23,"forks_count":29,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-05-13T15:48:03.114Z","etag":null,"topics":["compose","compose-desktop","compose-hot-reload","compose-multiplatform","firework","hot-reload","kotlin"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JetBrains.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-17T14:40:37.000Z","updated_at":"2025-05-13T14:45:57.000Z","dependencies_parsed_at":"2024-10-26T21:16:03.096Z","dependency_job_id":"e26d94c3-2ece-4996-91b4-b49ceec0ed78","html_url":"https://github.com/JetBrains/compose-hot-reload","commit_stats":{"total_commits":87,"total_committers":1,"mean_commits":87.0,"dds":0.0,"last_synced_commit":"2587ead09a8505c4d9569ae9c415a2d66ce124f3"},"previous_names":["sellmair/compose-hot-reload","jetbrains/compose-hot-reload"],"tags_count":89,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Fcompose-hot-reload","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Fcompose-hot-reload/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Fcompose-hot-reload/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JetBrains%2Fcompose-hot-reload/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JetBrains","download_url":"https://codeload.github.com/JetBrains/compose-hot-reload/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254249197,"owners_count":22039029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compose","compose-desktop","compose-hot-reload","compose-multiplatform","firework","hot-reload","kotlin"],"created_at":"2024-12-08T02:05:32.302Z","updated_at":"2026-04-09T12:00:51.468Z","avatar_url":"https://github.com/JetBrains.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"readme-assets/compose-logo.png\" alt=\"drawing\" width=\"30\"/\u003e Compose Hot Reload\n\n[![JetBrains official project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)\n[![Kotlin Beta](https://kotl.in/badges/stable.svg)](https://kotlinlang.org/docs/components-stability.html)\n[![Maven Central](https://img.shields.io/maven-central/v/org.jetbrains.compose.hot-reload/hot-reload-core)](https://search.maven.org/artifact/org.jetbrains.compose.hot-reload/hot-reload-core)\n[![GitHub license](https://img.shields.io/github/license/JetBrains/compose-hot-reload)](LICENSE.txt)\n[![docs](https://img.shields.io/badge/documentation-blue)](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-hot-reload.html)\n[![Slack channel](https://img.shields.io/badge/chat-slack-green.svg?logo=slack)](https://kotlinlang.slack.com/messages/compose-desktop/)\n\nBuild Compose UIs faster and let your creativity flow when designing multiplatform user interfaces.\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./readme-assets/banner_dark.png\"\u003e\n  \u003cimg alt=\"Text changing depending on mode. Light: 'So light!' Dark: 'So dark!'\" src=\"./readme-assets/banner_light.png\"\u003e\n\u003c/picture\u003e\n\nWith Compose Hot Reload, you can make UI code changes in a Compose Multiplatform app and see the results instantly,\nwithout needing to restart.\nThe JetBrains Runtime intelligently reloads your code whenever it changes.\n\n\u003e [!IMPORTANT]  \n\u003e Compose Hot Reload needs a JVM target in your multiplatform project. We're exploring adding support for\n\u003e other targets in the future.\n\n## Prerequisites\n\nEnsure that your project meets the minimum version requirements:\n\n- Kotlin 2.1.20 or higher.\n- Compose compiler 2.1.20 or higher.\n- Compose Multiplatform 1.8.2 or higher.\n- [JetBrains Runtime](https://github.com/JetBrains/JetBrainsRuntime):\n  To be compatible with JetBrains Runtime, your project must\n  [target](https://docs.gradle.org/current/userguide/building_java_projects.html#sec:java_cross_compilation)\n  Java 21 or earlier.\n\nFor the best development experience, we recommend using an IDE with the Kotlin Multiplatform plugin:\n\n- IntelliJ IDEA 2025.2.2 or higher, or Android Studio Otter 2025.2.1 or higher.\n- [Kotlin Multiplatform IDE plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform).\n\n## Set up your project\n\nThere are two ways to add Compose Hot Reload to your project:\n\n* [Create a project from scratch in IntelliJ IDEA or Android Studio](#create-a-project-from-scratch)\n* [Add it as a Gradle plugin to an existing project](#apply-the-gradle-plugin-to-your-project)\n\n### Create a project from scratch\n\nFollow the [Kotlin Multiplatform quickstart](https://www.jetbrains.com/help/kotlin-multiplatform-dev/quickstart.html)\nguide to set up your environment and create a project. Be sure to select the desktop target when you create the project.\n\n### Apply the Gradle plugin to your project\n\n1. In your project, update the version catalog. In `gradle/libs.versions.toml`, add the following code:\n\n   ```\n   composeHotReload = { id = \"org.jetbrains.compose.hot-reload\", version.ref = \"composeHotReload\"}\n   ```\n\n2. In the `build.gradle.kts` of your parent project, add the following code to your `plugins {}` block:\n\n   ```\n   plugins {\n       alias(libs.plugins.composeHotReload) apply false\n   }\n   ```\n\n   This prevents the Compose Hot Reload plugin from being loaded multiple times in each of your subprojects.\n\n3. In the `build.gradle.kts` of the subproject containing your multiplatform application, add the following code to your\n   `plugins {}` block:\n\n   ```\n   plugins { \n       alias(libs.plugins.composeHotReload)\n   }\n   ```\n\n4. An installation of the JetBrains Runtime is required:\n   Launching Compose Hot Reload with the Kotlin Multiplatform IDE plugin will re-use IntelliJ's installation of the\n   JetBrains Runtime.\n   If you want Gradle to automatically download the JetBrains Runtime, add the following code to your\n   `settings.gradle.kts` file\n   ```\n   plugins {\n       id(\"org.gradle.toolchains.foojay-resolver-convention\") version \"1.0.0\"\n   }\n   ```\n    Alternatively, you can use automatic JetBrains Runtime provisioning for the hot reload tasks by enabling\n    the `compose.reload.jbr.autoProvisioningEnabled` property.\n\n\u003e [!IMPORTANT]  \n\u003e Automatic JetBrains Runtime provisioning is an experimental feature. Please report any issues you encounter.\n\n5. Click the **Sync Gradle Changes** button to synchronize Gradle files:\n\n    \u003cimg alt=\"Synchronize Gradle files\" src=\"./readme-assets/gradle-sync.png\" width=\"50\"\u003e\n\n## Use Compose Hot Reload\n\nYou can run your application with Compose Hot Reload using your IDE or the CLI via Gradle tasks.\nCompose Hot Reload supports two modes: **Explicit** mode and **Auto** mode.\n\n* In **Explicit** mode, you manually trigger the reload to apply changes.\n* In **Auto** mode, Compose Hot Reload uses Gradle’s file-watching and continuous build system\nto automatically reload when file changes are detected.\nTo enable this mode, specify the `--autoReload` or `--auto` arguments in CLI \nor in the run configuration settings.\n\n### In the IDE\n\nIn IntelliJ IDEA or Android Studio, you can run Compose Hot Reload directly from the IDE gutter.\n\n1. Click the **Run** icon \u003cimg alt=\"Run main function\" src=\"./readme-assets/run.png\" width=\"12\"\u003e \nin the gutter of your main function and select **Run 'shared [jvm]' with Compose Hot Reload**.\n\n2. When you save code changes, the reload is triggered automatically. \n\n   Alternatively, you can trigger the reload explicitly by pressing the assigned shortcut key or\n   clicking the **Reload UI** button:\n\n    \u003cimg src=\"/readme-assets/compose-hot-reload-floating-toolbar.png\" alt=\"Reload UI in the IDE\" width=\"528\"\u003e\n\nYou can modify the trigger behavior on the **Settings | Tools | Compose Hot Reload** page in your IDE.\n\n\u003e [!IMPORTANT]  \n\u003e If you don't have the [Kotlin Multiplatform IDE plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform)\n\u003e installed, you can manually create Gradle run configurations with hot reload tasks (see [Run tasks](#run-tasks)).\n\u003e In this case, you can trigger the reload by clicking the **Reload UI** button or running the `reload` Gradle task.\n\n### From the CLI\n\n#### Run tasks\n\nThe Compose Hot Reload plugin automatically creates the following tasks to launch the application:\n\n- `:hotRunJvm`: For multiplatform projects. The async alternative is `:hotRunJvmAsync`.\n- `:hotRun`: For Kotlin/JVM projects. The async alternative is `:hotRunAsync`.\n\nYou can run these Gradle tasks from the command line:\n\n```shell\n./gradlew :app:hotRunJvm\n# or\n./gradlew :composeApp:hotRunJvm\n```\n\nAfter making changes, save all files to automatically update your app's UI.\n\n##### Custom target name\n\nIf you define a custom JVM target name, Gradle uses a different task name. For example, if your target name is\n`desktop`:\n\n```kotlin\nkotlin {\n    jvm(\"desktop\")\n}\n```\n\nThe task name is `:hotRunDesktop`.\n\n##### Command-line arguments\n\nHere's a list of all the possible arguments that you can use with the Gradle run tasks:\n\n| Argument                           | Description                                   | Example                                                                         |\n|------------------------------------|-----------------------------------------------|---------------------------------------------------------------------------------|\n| `--mainClass \u003cMain class FQN\u003e`     | The main class to run.                        | `./gradlew :app:hotRunJvm --mainClass com.example.MainKt`                       |\n| `--autoReload` \u003cbr\u003e `--auto`       | Enable automatic reloading. Default: `false`. | `./gradlew :app:hotRunJvm --autoReload` \u003cbr\u003e `./gradlew :app:hotRunJvm --auto`  |\n| `--no-autoReload` \u003cbr\u003e `--no-auto` | Disable automatic reloading.                  | `./gradlew :myApp:hotRunJvm --no-auto` \u003cbr\u003e `./gradlew :myApp:hotRunJvm --auto` |\n\n##### Configure the main class\n\nYou can configure the main class directly in your build script instead of passing it as a command-line argument.\n\nYou can configure it in the Compose Hot Reload task:\n\n```kotlin\ntasks.withType\u003cComposeHotRun\u003e().configureEach {\n    mainClass.set(\"com.example.MainKt\")\n}\n```\n\nOr if you use Compose Multiplatform, in the `application {}` block:\n\n```kotlin\ncompose.desktop {\n    application {\n        mainClass = \"com.example.MainKt\"\n    }\n}\n```\n\n#### Reload tasks (Explicit mode)\n\n\u003e [!WARNING]  \n\u003e You can't run reload tasks with the `--autoReload` or `--auto` command-line argument.\n\nThe Compose Hot Reload plugin also provides Gradle tasks to recompile **and** reload your application:\n\n- `reload`: Reload all, currently running, applications.\n- `hotReloadJvmMain`: Reload all applications that use the `jvmMain` source set.\n\nFor example:\n\n```shell\n./gradlew :app:reload\n```\n\n## Use developer builds\n\nIf you want to try the latest changes in Compose Hot Reload, you can use `dev` builds. To use the latest 'dev' builds of\nCompose Hot Reload, add the `firework` Maven repository in your `settings.gradle.kts` file:\n\n```kotlin\npluginManagement {\n    repositories {\n        maven(\"https://packages.jetbrains.team/maven/p/firework/dev\")\n    }\n}\n\ndependencyResolutionManagement {\n    repositories {\n        maven(\"https://packages.jetbrains.team/maven/p/firework/dev\")\n    }\n}\n```\n\n## FAQ\n\n### I'm developing an Android-only app without Kotlin Mutliplatform. Can I use Compose Hot Reload?\n\nCompose Hot Reload is designed to work with Compose Multiplatform. To use Compose Hot Reload with an Android-only\nproject, you need to:\n\n- Switch from the Jetpack Compose plugin to the Compose Multiplatform plugin.\n- Add a separate Gradle module and configure the JVM target according\n  to [the instructions](#apply-the-gradle-plugin-to-your-project).\n\n### My project is a desktop-only app with Compose Multiplatform. Can I use Compose Hot Reload?\n\nYes! However, be aware that you can't start the application via the run button in the\ngutter ([CMP-3123](https://youtrack.jetbrains.com/issue/CMP-3123)). Instead, use [Gradle tasks](#from-the-cli).\n\n## Feedback and issues\n\nFeel free to submit any feedback to the [CMP issue tracker](https://youtrack.jetbrains.com/newIssue?project=CMP\u0026c=Library%20group%20Hot%20Reload). If you encounter an issue, please check the \n[known issues and limitations](docs/Known_limitations.md) for potential workarounds. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjetbrains%2Fcompose-hot-reload","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjetbrains%2Fcompose-hot-reload","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjetbrains%2Fcompose-hot-reload/lists"}