Interfaces are usually designed at their fullest: the dashboard with twelve widgets, the inbox with forty messages, the profile with a complete history. That state is the exception. The states people meet first are empty ones.

Start from nothing

Design the empty screen before the full one. It forces an honest answer to a hard question: what is this for, and what should someone do first? An empty state that only says "No items yet" is a missed introduction.

Then design waiting

Loading is not a gap to be filled with a spinner. It is a promise about what is coming. Showing the shape of the content that is about to arrive makes a slow connection feel considered instead of broken.

Errors follow the same rule. Say what happened, in plain words, and give one clear way forward.