In the context of android and compose I found out that when using runBlocking() if I use a dispatcher parameter on it (any of them), if the code inside runBlocking or in any of the called functions does contain a delay() of any size the main tread will be blocked for ever . It took me two days to sort it out!!!