The desktop target is the cheapest bug oracle you are not using
It builds in seconds, runs real Compose, and needs no device.
We use Google Analytics to see which pages help people. No ads, no profiles. Privacy Policy
It builds in seconds, runs real Compose, and needs no device.
Text takes a String or an AnnotatedString. The second lets one composable carry multiple styles, inline content and clickable spans — replacing the Row of Texts that breaks at large font scales.
Declared versions are requests, not guarantees. Resolution picks the highest.
androidx.lifecycle.ViewModel is Android's. The shared class needs an explicit clear() and two platforms that call it.
A window holds a composition, a scope and native handles. Nothing releases them for you.
Dynamic proxies need a JVM. What replaces them asserts on outcomes instead of calls.
A single-threaded target surfaces every real-clock dependency a JVM run hides.
Metadata, klibs and platform artifacts resolve through different Gradle variants.
A layering rule nobody can violate is a dependency declaration, not a document.
Exhaustiveness is why you used a sealed type, and it is exactly what does not cross.
Four channels, four halt latencies, and only one of them is under your hand.
Aliasing to a platform type exports that type's whole surface to every caller.