Routes That Load Honestly

Decide what you would build from the brief alone. Everything below it is available, but the exercise stops working if you open it first.

The brief you were given

A SPA navigates instantly to an empty shell, then shows three spinners that resolve at different times, and the layout jumps twice as content arrives. Design the loading behaviour properly.

The trap — the wrong fix that looks right

Replacing the three spinners with a skeleton screen that matches the layout, because the jumping stops and it looks far more polished. The layout shift is genuinely fixed. What is not fixed is that a failed request now renders a skeleton forever — a shimmering placeholder is indistinguishable from a slow load, so the user waits instead of retrying, and nothing announces anything to a screen reader because the skeleton is decorative markup with no busy state. A skeleton is a visual-stability fix that people adopt as a loading-state design, and it silently deletes the error state.