You have probably written code that waits for a network response, loads a file, or runs a database query. Without care, those long operations freeze your app’s screen. The usual fix is callbacks, but callbacks can quickly become a tangled mess. In this chapter we learn a cleaner way: coroutines. They let you write code that looks like a normal sequence of steps, but it runs in the background without blocking the screen.