Compose Hot Reload
Compose Hot Reload помогает визуализировать изменения интерфейса и экспериментировать с ними во время работы над проектом Compose Multiplatform. В отличие от стандартных предварительных просмотров Compose, которые помогают просматривать отдельные компоненты с тестовыми данными, Compose Hot Reload применяет изменения кода непосредственно к работающему приложению.
Для встроенного плагина Gradle Compose Hot Reload требуется Kotlin 2.1.20+ и целевая платформа JVM, совместимая с Java 21 или более ранней версией. Чтобы использовать все возможности Compose Hot Reload, рекомендуем установить плагин Kotlin Multiplatform для IDE, доступный для IntelliJ IDEA начиная с версии 2025.2.2 и Android Studio начиная с Otter 2025.2.1.
Пока мы изучаем возможность добавления поддержки других целевых платформ, вы уже можете использовать настольное приложение в качестве песочницы, чтобы быстро экспериментировать с изменениями интерфейса в общем коде, не прерывая работу.

Добавление Compose Hot Reload в проект
Compose Hot Reload можно добавить двумя способами:
Создание с нуля
В этом разделе описаны шаги по созданию многоплатформенного проекта с целевой настольной платформой в IntelliJ IDEA и Android Studio. После создания проекта Compose Hot Reload будет добавлен автоматически.
В кратком руководстве выполните инструкции по настройке среды для разработки на Kotlin Multiplatform.
В IDE выберите Файл | Создать | Проект.
На панели слева выберите Kotlin Multiplatform.
В окне Новый проект укажите значения в полях Имя, Группа и Артефакт.
Выберите целевую платформу Desktop и нажмите Создать.

Для существующего проекта
Начиная с Compose Multiplatform 1.10.0, плагин Compose Hot Reload включен в поставку и активирован по умолчанию для всех проектов, в которых есть целевая настольная платформа.
Если в вашем проекте уже есть целевая настольная платформа, обновитесь до Compose Multiplatform версии 1.10.0 или более поздней и пользуйтесь возможностями Compose Hot Reload сразу после установки.
Хотя плагин включен по умолчанию, вы всё равно можете явно объявить плагин Compose Hot Reload, чтобы использовать конкретную более раннюю версию.
Более ранние версии Compose Multiplatform
В многоплатформенных проектах, использующих Compose Multiplatform версии ниже 1.10.0, необходимо настроить целевую настольную платформу, а затем явно добавить плагин Compose Hot Reload. В инструкциях в качестве примера используется проект из руководства Создание приложения с общей логикой и интерфейсом.
Добавьте целевую настольную платформу: создайте каталог
desktopApp, объявите функциюmain()и предоставьте реализацииactual. Если в вашем проекте уже есть целевая настольная платформа, этот шаг можно пропустить. В качестве примера см. Добавление точки входа JVM.-
Обновите каталог версий, указав последнюю версию Compose Hot Reload (см. раздел Выпуски). В файле
gradle/libs.versions.tomlдобавьте следующий код:composeHotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "composeHotReload"} -
В файле
build.gradle.ktsродительского проекта (ComposeDemo/build.gradle.kts) добавьте следующий код в блокplugins {}:plugins { alias(libs.plugins.composeHotReload) apply false }Это предотвратит многократную загрузку плагина Compose Hot Reload в каждом из подпроектов.
-
В файле
build.gradle.ktsподпроекта, содержащего многоплатформенное приложение (ComposeDemo/sharedUI/build.gradle.kts), добавьте следующий код в блокplugins {}:plugins { alias(libs.plugins.composeHotReload) } -
Проект должен запускаться на JetBrains Runtime (JBR) — форке OpenJDK, поддерживающем расширенное переопределение классов. Compose Hot Reload может автоматически установить совместимую версию JBR для вашего проекта.
Чтобы разрешить автоматическую установку, добавьте следующий плагин Gradle в файл
settings.gradle.kts:plugins { id("org.gradle.toolchains.foojay-resolver-convention") version "1.2.0" } Нажмите кнопку Синхронизировать изменения Gradle, чтобы синхронизировать файлы Gradle:
Использование Compose Hot Reload
-
В исходном наборе
desktopAppоткройте файлmain.ktи обновите функциюmain():fun main() = application { Window( onCloseRequest = ::exitApplication, alwaysOnTop = true, title = "composedemo", ) { App() } }Если присвоить переменной
alwaysOnTopзначениеtrue, созданное настольное приложение будет располагаться поверх всех окон, что упростит редактирование кода и просмотр изменений в реальном времени. -
Откройте файл
App.ktи обновите компонуемый элементButton:Button(onClick = { showContent = !showContent }) { Column { Text(Greeting().greet()) } }Теперь текст кнопки задается функцией
greet(). -
Откройте файл
Greeting.ktи обновите функциюgreet():fun greet(): String { return "Hello!" } -
Откройте файл
main.ktи нажмите значок Запуск на поле слева от кода. Выберите Запустить 'desktopApp' с Compose Hot Reload. -
Измените строку, возвращаемую функцией
greet(), а затем сохраните все файлы (⌘ S/Ctrl+S), чтобы увидеть, как настольное приложение обновится автоматически.Также можно запустить перезагрузку вручную, нажав назначенную клавишу быстрого доступа или кнопку Перезагрузить интерфейс. Изменить поведение запуска можно на странице Настройки | Инструменты | Compose Hot Reload.
Поздравляем! Вы увидели Compose Hot Reload в действии. Теперь можно экспериментировать с изменением текста, изображений, форматирования, структуры интерфейса и многого другого, не перезапуская конфигурацию запуска настольного приложения после каждого изменения.
Сервер MCP для ИИ-агентов
Начиная с Compose Multiplatform 1.12.0, Compose Hot Reload включает встроенный сервер Model Context Protocol (MCP). Сервер MCP позволяет ИИ-агентам для программирования взаимодействовать с работающим приложением Compose: запускать Compose Hot Reload, просматривать отрисованный интерфейс, изучать семантическую структуру, имитировать пользовательский ввод и читать журналы выполнения. Если приложение открывает несколько окон, агент может вывести их список и выбрать любое из них.
Это замыкает цикл обратной связи для ИИ-агентов при редактировании кода Compose. Вместо того чтобы полагаться на вас, который вручную проверяет результат после каждого изменения, агент может самостоятельно вносить изменения в код и проверять каждое из них.
Подключение ИИ-агента
Чтобы подключить ИИ-агента, настройте клиент MCP на запуск задачи Gradle hotMcpServer. Например, в .mcp.json:
{
"mcpServers": {
"compose-hot-reload": {
"command": "./gradlew",
"args": [
"--no-daemon",
"--quiet",
"--console=plain",
"hotMcpServer"
]
}
}
}
Gradle ищет задачи во всех подпроектах и сопоставляет короткое имя hotMcpServer с вариантами для конкретных целевых платформ, такими как hotMcpServerJvm или hotMcpServerDesktop.
Если в модуле определено несколько целевых платформ JVM, укажите полное имя задачи, чтобы избежать неоднозначности: :<module>:hotMcpServer<Target>, например :app:hotMcpServerDesktop или :composeApp:hotMcpServerJvm.
Доступные инструменты MCP
Сервер MCP предоставляет ряд инструментов, которые агент может вызывать, в том числе:
reload— перекомпилирует проект и выполняет горячую перезагрузку изменённых классов.take_screenshot— делает снимок текущего состояния окна приложения.get_semantic_tree— возвращает семантическое дерево Compose, позволяя агенту понять структуру интерфейса.get_logs— возвращает последние записи журнала работающего приложения, включая исключения времени выполнения.click,type_textиscroll— имитируют пользовательский ввод для проверки интерактивных сценариев.
Полный список инструментов MCP и их параметров см. в файле README Compose Hot Reload.
Получение помощи
Если у вас возникли проблемы при использовании Compose Hot Reload, сообщите нам о них, создав задачу на GitHub.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/compose-hot-reload.html
