runTest skips your delays, which is why the flaky test passed
Virtual time makes a 30-second timeout instant — and makes a real-dispatcher leak invisible.
We use Google Analytics to see which pages help people. No ads, no profiles. Privacy Policy
Compose, Kotlin, and multiplatform work — the mechanism under the symptom.
296 posts
Virtual time makes a 30-second timeout instant — and makes a real-dispatcher leak invisible.
replay = 1 re-delivers the last value to every new collector.
The default hierarchy creates intermediate source sets you never declared.
Migrations run forward from whatever version the device holds.
Conflation turns two identical emissions into one, so a repeated event vanishes.
Structured concurrency propagates failure upward by design. SupervisorJob is how you declare independence.
Both mean the main thread and neither knows about the other.
The dSYM for the shared framework is produced by Gradle and uploaded by nobody.
IME composition, autocorrect and hardware keyboards reach Compose differently per platform, so state hoisted too far loses keystrokes on exactly one of them.
A hardware button, an edge swipe, a window close and a browser history entry are not the same event. One shared handler gets at least two of them wrong.
Android cancels viewModelScope for you and SwiftUI does not. One scope, two lifetimes, and only one of them has a callback that fires when the screen ends.
Application.onCreate, a Swift app init, a main function and a page load each start the graph. Two inits on one platform is a duplicate-definition crash at the worst moment.