← ClaudeAtlas

cmp-dev-clientlisted

Run a create-cmp Compose Multiplatform app's shared UI in a live desktop window with Compose Hot Reload — the daily dev loop. Use this when the user wants to run their CMP app on desktop, preview the app while developing, iterate on Compose UI without an emulator, or asks "run my CMP app on desktop", "hot reload compose", "preview my app while developing", "dev client", "desktop target", "compose hot reload not working", or "see my UI changes live". Covers the hotRunDesktop/run Gradle tasks, how reload triggers, the desktop DI fakes (no Firebase on desktop), and adding desktop fakes for new repositories.
kvdm-co-pilot/create-cmp · ★ 0 · AI & Automation · score 72
Install: claude install-skill kvdm-co-pilot/create-cmp
# cmp-dev-client — the desktop dev loop for a stamped CMP app Every app stamped by `create-cmp` (unless `--no-dev-client`) ships a pre-wired `jvm("desktop")` target inside `composeApp`: the whole `commonMain` UI — screens, ViewModels, navigation, theme, Koin DI — in a live, clickable, phone-sized JVM window, with **Compose Hot Reload** attached. This is the daily-driver loop; the Android emulator / iOS simulator are for platform verification, not for iterating on UI. ## 1. The run loop From the generated project root: ```bash # Hot reload + auto-reload on save (recommended): ./gradlew :composeApp:hotRunDesktop --auto # Hot reload, explicit mode (trigger with `./gradlew reload` or the IDE's Reload UI button): ./gradlew :composeApp:hotRunDesktop # Plain run — no hot reload, no JetBrains Runtime needed, any JDK 17+: ./gradlew :composeApp:run ``` Loop: keep the window open → edit a composable in `commonMain` → save → the window updates in place. No reinstall, no restart, state largely preserved. Notes you should relay when relevant: - The task is `hotRunDesktop` because the target is named `desktop` (`hotRunJvm` is the default-name variant you'll see in JetBrains docs). - Hot reload runs the app on the **JetBrains Runtime**. The scaffold pre-wires the `foojay-resolver-convention` settings plugin, so Gradle auto-downloads a JBR on first `hotRunDesktop` if none is installed — a one-time download; don't let the user think it hangs. - Structural changes (new `expect`/`