Kotlin Blog Sebastian Sellmair Jan 13, 2026

The Journey to Compose Hot Reload 1.0.0

Article Summary

Sebastian Sellmair and Azat Abdullin from JetBrains reveal how they built Compose Hot Reload 1.0.0—a zero-config tool that lets you update Kotlin UI code instantly while preserving app state. The engineering behind it is wild.

Compose Hot Reload 1.0.0 just shipped with Compose Multiplatform 1.10, enabling developers to see code changes reflected in running apps without restarts. This deep dive from the JetBrains team unpacks the technical architecture: DCEVM for dynamic code reloading, bytecode analysis for UI invalidation, and a custom orchestration protocol connecting IDE, build system, and runtime.

Key Takeaways

Critical Insight

Compose Hot Reload combines JetBrains Runtime's DCEVM, bytecode analysis, and build system integration to deliver instant UI updates with state preservation and zero developer configuration.

The team spent 30% of development time just building test infrastructure, including compatibility tests that run protocol versions in isolation against previous releases.

About This Article

Problem

Lambda functions in Kotlin bytecode became unstable during hot reload. The compiler generated names using depth-first search counters, so adding a single new lambda anywhere in the file caused all lambda classes to rename.

Solution

JetBrains engineers updated the Compose compiler in version 2.1.20 to use stable group keys instead of counters for composable singleton lambda names. They also updated the Kotlin compiler in version 2.2.20 to make indy lambda indices unique per scope rather than file-wide.

Impact

These compiler changes stopped cascading bytecode invalidations and interface mismatches that had blocked valid user code from reloading. Developers can now make arbitrary code changes without triggering reload failures.