softartdev.hashnode.devThe “Stale Capture” Trap in Jetpack Compose Side Effects (and why it can surprise Kotlin developers)Sometimes your UI shows the correct value, but a log (or callback) inside LaunchedEffect uses an old one.This is usually not a Compose “bug”. It is a closure capture issue: a long-running lambda can keep old references. This article explains the prob...Jan 26·4 min read
softartdev.hashnode.devKotlin Coroutines on wasmJs: why there is no `runBlocking` (and why “hacks” are risky)Cheat sheet runBlocking is a thread-blocking bridge. It exists only for targets that are built from the concurrent source set. js/wasm* are built from jsAndWasm* source sets, so they don’t get runBlocking. On JS (and wasmJs hosted by JS) you cannot ...Jan 3·5 min read
softartdev.hashnode.devUnder the Hood: How Compose Multiplatform Opens a URLAs mobile developers moving into the Multiplatform space, we often take high-level APIs for granted. A perfect example is opening a hyperlink. In Jetpack Compose, we simply grab the LocalUriHandler and call openUri(). But what happens after that call...Dec 23, 2025·5 min read