You write React every day. You wrap a lazy-loaded route in a skeleton card, and when its code is still downloading, the skeleton sits there until the real component lands — then swaps in. It works. You've probably never had to explain WHAT catches the waiting and WHAT swaps what.
So let's take it away. Over the next seven screens you'll rebuild the waiting pipeline from nothing. Each screen hands you a tool you don't have yet and a job that tool can't do. What you invent to get past the wall is a piece of React's waiting runtime — we won't name it until the end.
Start with what you already feel in your bones: a synchronous error mid-render. A component throws; the exception travels UP through the tree until something catches it. If nothing does, the whole app unmounts. Tap *Throw error* and watch it happen.