Coroutines
Composite Recipes
Recipes that include further recipes, often including the individual recipes below.
- Find Flow operator antipatterns
- Find blocking calls inside coroutine contexts
- Find coroutine sequencing smells
- Find structured-concurrency leaks
- Modernize Kotlin coroutines code
Recipes
- Find
Flow.collectcalls inside a@Composable - Find
Flow.filter \{ \} .filter \{ \}chains - Find
Flow.flowOnplaced after a terminal operator - Find
Flow.map \{ \} .map \{ \}chains - Find
GlobalScope.actorcalls - Find
GlobalScope.asynccalls - Find
GlobalScope.launchcalls - Find
GlobalScope.producecalls - Find
MutableStateFlow<T?>(null)declarations - Find
Object.notify/notifyAllcalls insidesuspendfunctions - Find
Object.waitcalls insidesuspendfunctions - Find
Thread.sleepcalls insidesuspendfunctions - Find
async \{ ... \}.await()patterns - Find
callbackFlow \{ \}blocks without anawaitClose \{ \}terminator - Find
coroutineScope \{ launch \{ ... \} \}with a single child - Find
debounce(...).distinctUntilChanged()patterns - Find
flowOf(...)calls — verify size - Find
forEach \{ it.join() \}overList<Job> - Find
map \{ it.await() \}overList<Deferred<T>> - Find nested
withContextcalls - Find raw
CoroutineScope(...)constructions - Find raw
Job()allocations - Find
runBlockingcalls inside alaunch/asynclambda - Find
runBlockingcalls insidesuspendfunctions - Find
shareIncalls without a timeout-parameterized start - Find
stateInwithSharingStarted.Eagerlyor unparameterized start - Find
suspendCoroutinecalls