← Back to all articles
Sofia Karim

Slow Interfaces Feel Broken

A collection of small frontend decisions that make waiting understandable and useful.

frontenduxperformance

People do not experience milliseconds directly. They experience uncertainty: did the click work, is the page stuck, and should they try again?

Show progress early

A blank page gives no information. Even a simple sequence helps:

  1. reserve the layout;
  2. show the most important heading;
  3. load primary content;
  4. fill secondary details;
  5. confirm completion.

The shape of the final page should be visible before every detail is ready.

Empty, loading, and error are different

State Meaning Good message
Empty There is no content Create your first article
Loading Content is being fetched Loading recent articles
Error The operation failed Try again or read saved content

These states should not share one generic placeholder. A reader needs to know whether patience, action, or a different route is appropriate.

Prevent duplicate actions

Disable or change the label of an action while it is running:

Ready       -> Publish article
Submitting  -> Publishing…
Success     -> Article published
Failure     -> Try again

Small feedback loops protect both the user and the backend from accidental repeated requests.

Performance is partly speed and partly communication about speed.