{"id":48058759,"url":"https://github.com/skydoves/compose-hotswan-issuetracker","last_synced_at":"2026-04-04T14:30:33.502Z","repository":{"id":345694048,"uuid":"1186964662","full_name":"skydoves/compose-hotswan-issuetracker","owner":"skydoves","description":"🦢 Compose Hot Reload for Android with Compose HotSwan. Instant UI updates on your running Android app with state preserved.","archived":false,"fork":false,"pushed_at":"2026-03-20T23:04:08.000Z","size":620,"stargazers_count":16,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-21T00:18:20.828Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://hotswan.dev","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skydoves.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"skydoves","custom":["https://www.android.skydoves.me/","https://kotlin.skydoves.me/","https://github.com/doveletter"]}},"created_at":"2026-03-20T07:24:45.000Z","updated_at":"2026-03-20T23:30:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/skydoves/compose-hotswan-issuetracker","commit_stats":null,"previous_names":["skydoves/compose-hotswan-issuetracker"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/skydoves/compose-hotswan-issuetracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skydoves%2Fcompose-hotswan-issuetracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skydoves%2Fcompose-hotswan-issuetracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skydoves%2Fcompose-hotswan-issuetracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skydoves%2Fcompose-hotswan-issuetracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skydoves","download_url":"https://codeload.github.com/skydoves/compose-hotswan-issuetracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skydoves%2Fcompose-hotswan-issuetracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31402611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-04-04T14:30:33.355Z","updated_at":"2026-04-04T14:30:33.469Z","avatar_url":"https://github.com/skydoves.png","language":null,"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"resources/logo.png\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://plugins.jetbrains.com/plugin/30551-compose-hotswan/\"\u003e\u003cimg alt=\"JetBrains Plugin\" src=\"https://img.shields.io/jetbrains/plugin/v/30551.svg?label=JetBrains%20Plugin\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://android-arsenal.com/api?level=28\"\u003e\u003cimg alt=\"API\" src=\"https://img.shields.io/badge/API-28%2B-brightgreen.svg?style=flat\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/jaTcyK5XCr\"\u003e\u003cimg alt=\"Discord\" src=\"https://img.shields.io/badge/Discord-Compose%20HotSwan-5865F2?logo=discord\u0026logoColor=white\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/doveletter\"\u003e\u003cimg alt=\"Profile\" src=\"https://skydoves.github.io/badges/dove-letter.svg\"/\u003e\u003c/a\u003e\u003cbr\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://hotswan.dev/\"\u003eCompose HotSwan\u003c/a\u003e is a JetBrains IDE plugin \u0026 compiler plugin that enables instant hot reload for Jetpack Compose on \"real\" Android devices. Edit your Compose UI code, save the file, and see your changes reflected on a real device in seconds, without rebuilding or restarting the app.\n\u003c/p\u003e\n\n## How It Works\n\n[Compose HotSwan](https://hotswan.dev/) uses incremental Kotlin compilation combined with runtime class swapping on the Android Runtime (ART) to deliver fast, reliable hot reload in real Android devices. When you save a file, HotSwan compiles only the changed code, extracts modified classes, pushes them to the connected device, and triggers Compose recomposition. The entire pipeline typically completes in under a few seconds.\n\nFor a detailed breakdown, visit the [How It Works](https://hotswan.dev/docs/how-it-works) documentation.\n\n## Issue Tracker\n\nThis repository serves as the public issue tracker for [Compose HotSwan](https://hotswan.dev/). You can use this repository to report bugs, request features, and track known issues.\n\n- **Bug reports**: If you encounter unexpected behavior, crashes, or compilation errors, please [open an issue](https://github.com/skydoves/compose-hotswan-issuetracker/issues/new) with your IDE version, plugin version, Kotlin version, and steps to reproduce.\n- **Feature requests**: Have an idea for improving HotSwan? Open an issue describing your use case and the expected behavior.\n- **Questions**: For general questions, check the [Troubleshooting](https://hotswan.dev/docs/troubleshooting) documentation or the [FAQ](https://hotswan.dev/faq) first.\n- **Community**: Join the [Discord server](https://discord.gg/jaTcyK5XCr) to discuss HotSwan, share feedback, and connect with other users.\n\n## Features\n\n- **Instant hot reload**: Apply UI changes to a running Android app without rebuilding or restarting. Your navigation stack, scroll position, ViewModel state, and `remember {}` values all stay intact.\n- **Broad change support**: Modify composable function bodies, non composable functions, layout parameters, animations, conditional logic, resource values, data classes, and ViewModel methods.\n- **Multi module**: File paths are automatically resolved to the correct Gradle module. Changes in any module are compiled and pushed independently.\n- **Screenshot snapshot**: Every hot reload automatically captures a device screenshot paired with a code diff. Browse a visual timeline of your changes, revert code to any previous snapshot, and export reports for design collaboration.\n- **AI integration**: Use Claude Code, Cursor, GitHub Copilot, or any AI tool that edits files on disk. HotSwan detects file changes, compiles, and pushes updates to the device automatically.\n- **MCP Server**: Connect AI assistants via the Model Context Protocol to iterate on your UI with natural language, seeing each change reflected on the device in real time.\n- **Debug only**: The Gradle plugin adds the client library as `debugImplementation` only. Release builds have zero overhead.\n\nExplore the full feature set at [hotswan.dev/docs](https://hotswan.dev/docs).\n\n## Getting Started\n\n### 1. Install the Android Studio Plugin\n\nOpen your Android Studio and navigate to **Settings** \u003e **Plugins** \u003e **Marketplace**, search for **Compose HotSwan**, and install it. Restart your IDE when prompted.\n\n![install](resources/install.png)\n\n### 2. Add the Gradle Plugin\n\nAdd the plugin to the `[plugins]` section of your `libs.versions.toml` file. Check the [latest version](https://hotswan.dev/docs/releases) for the version number.\n\n```toml\n[plugins]\nhotswan-compiler = { id = \"com.github.skydoves.compose.hotswan.compiler\", version = \"version\" }\n```\n\nRegister the plugin in your root `build.gradle.kts` with `apply false`:\n\n```kotlin\nplugins {\n    alias(libs.plugins.hotswan.compiler) apply false\n}\n```\n\nThen apply it in your app module's `build.gradle.kts`:\n\n```kotlin\nplugins {\n    alias(libs.plugins.hotswan.compiler)\n}\n```\n\nSync your project. The plugin auto configures everything for debug builds.\n\n### 3. Start Hot Reloading\n\n1. Build and run your app on a device or emulator as usual.\n2. Open the HotSwan panel: **View** \u003e **Tool Windows** \u003e **HotSwan**.\n3. Select your connected device and click **Start**.\n4. Edit any Kotlin file, press **Cmd+S** (or **Ctrl+S**), and watch the device update.\n\n### Gradle Configuration\n\nYou can customize the plugin behavior in your `build.gradle.kts`:\n\n```kotlin\nhotSwanCompiler {\n    enabled = true      // Master switch (default: true)\n    debugOnly = true    // Apply only to debug builds (default: true)\n}\n```\n\nFor full configuration options, visit the [Gradle Configuration](https://hotswan.dev/docs/gradle-configuration) documentation.\n\n## Requirements\n\n| Requirement | Minimum Version |\n|---|---|\n| Android API | 28+ (API 30+ recommended) |\n| IDE | IntelliJ IDEA 2024.3+ / Android Studio Meerkat+ |\n| Kotlin | 2.3.0+ |\n| Android Gradle Plugin | 8.7.3+ |\n\nSee the full [Requirements](https://hotswan.dev/docs/requirements) documentation for IDE version compatibility details.\n\n## Documentation\n\nVisit [hotswan.dev/docs](https://hotswan.dev/docs) for the complete documentation, including:\n\n- [Why HotSwan](https://hotswan.dev/docs/why-hotswan)\n- [Supported Changes](https://hotswan.dev/docs/supported-changes)\n- [State Preservation](https://hotswan.dev/docs/state-preservation)\n- [Screenshot Snapshot](https://hotswan.dev/docs/snapshot)\n- [Hot Reload with AI](https://hotswan.dev/docs/hot-reload-with-ai)\n- [MCP Server](https://hotswan.dev/docs/mcp-server)\n- [Limitations](https://hotswan.dev/docs/limitations)\n- [Troubleshooting](https://hotswan.dev/docs/troubleshooting)\n\n## Release Notes\n\nCheck the latest releases and changelogs at [hotswan.dev/docs/releases](https://hotswan.dev/docs/releases).\n\n## Community\n\nJoin the [Discord server](https://discord.gg/jaTcyK5XCr) to discuss Compose HotSwan, ask questions, share your experience, and connect with other users.\n\n## Find this repository useful? :heart:\n\nSupport it by joining __[stargazers](https://github.com/skydoves/compose-hotswan-issuetracker/stargazers)__ for this repository. :star: \u003cbr\u003e\nAlso __[follow](https://github.com/skydoves)__ me for my next creations!\n","funding_links":["https://github.com/sponsors/skydoves","https://www.android.skydoves.me/","https://kotlin.skydoves.me/","https://github.com/doveletter"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskydoves%2Fcompose-hotswan-issuetracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskydoves%2Fcompose-hotswan-issuetracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskydoves%2Fcompose-hotswan-issuetracker/lists"}