Conversation
Wires the HotSwan compiler plugin into the two modules its KMP guide calls for: :androidApp as the Android application module, and :composeApp as the module declaring the iOS binaries.framework. :composeApp doubles as the desktop app, so it also picks up interpreter-runtime-core, which desktop hot reload needs on the classpath. Using HotSwan needs the matching IDE plugin and a paid subscription; the Gradle side builds fine without either, with hot reload simply inactive. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ReoMX8TjLpTkCocLiLVTuL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the Compose HotSwan compiler plugin (
2.0.0, latest stable on Maven Central).Per HotSwan's KMP guide, the plugin goes on exactly two modules — the Android application module and the module declaring
binaries.framework::androidApp— the Android application module:composeApp— declares the iOS framework (and holds all the shared Compose UI)build.gradle.kts— registeredapply false:composeAppis also the desktop app, so itsjvmMainpicks upinterpreter-runtime-core, which the docs require on the desktop classpath.Heads-up: this is a paid, proprietary product
The Maven artifacts are published under the "Compose HotSwan License (Commercial)", not an OSS license. Hot reload needs both the matching JetBrains IDE plugin and a valid subscription billed through JetBrains Marketplace; the version must match the Gradle plugin's. Since this is a public sample repo, anyone building it now resolves a proprietary compile-time artifact. The build itself works fine unlicensed — hot reload is just inactive — so CI and contributors are not blocked.
Test plan
assembleDebug,:composeApp:jvmTest,compileKotlinIosSimulatorArm64,compileKotlinWasmJs,:agents:build,:mcp-server:buildall pass:androidApp— cannot be automatedKnown limitation it flagged
The plugin warns at compile time that iOS hot reload will silently no-op for two entry points, because its warm restart calls the entry as a zero-argument Obj-C class method:
CountryListViewController(onCountryClicked:)— note this parameter is currently unused in the bodyCountryInfoDetailedViewController(country:)AgentViewController()already has the required shape. Changing the other two touches the Swift call sites, so it is left out of this PR.🤖 Generated with Claude Code
https://claude.ai/code/session_01ReoMX8TjLpTkCocLiLVTuL