- Android screens:
collectAsStateWithLifecycle()(COMPOSE_001) — requireslifecycle-runtime-compose. - Desktop / shared UI:
collectAsState()may be intentional when lifecycle APIs are unavailable.
- Initialization / keyed work:
LaunchedEffect(key) { }(COMPOSE_002). - User actions:
rememberCoroutineScope().launch { }inside handlers. - Side effects (analytics, logging):
SideEffect/LaunchedEffect— not in composable body (COMPOSE_003).
structuredCoroutines {
useAndroidComposeProfile()
}See BEST_PRACTICES §8.