Feedback

Feedback & States

Every state is a design opportunity

Key Insight

Every interface state—loading, empty, error, success—is a moment that either builds or breaks user trust; design each one intentionally.

Key Points

  • Loading thresholds: <100ms show nothing, 100ms–1s use a subtle spinner, 1–10s show progress with explanation, >10s allow users to do other tasks
  • Skeleton screens feel 15–20% faster than spinners because they set layout expectations and reduce perceived wait time
  • Empty states should explain what will appear, guide users toward their first action, and add personality to build engagement
  • Error states must appear inline near the problem, use color + icon + text (never color alone), and explain both what went wrong AND how to fix it
  • Success confirmation should acknowledge the completed action, suggest logical next steps, and avoid blocking the user with unnecessary modals
  • Every interactive component needs defined states: default, hover, focus, active, disabled—design all of them intentionally

Guidelines

  • Use optimistic UI for low-risk actions (likes, toggles) to provide instant feedback while the server catches up
  • Show a loading delay indicator only after 300ms—most actions complete before then and flashing a spinner feels janky
  • Write error messages in plain language: "That email is already registered. Try signing in instead." not "Error 409: Conflict"
  • Animate state transitions (200–300ms) so changes feel connected rather than jarring
  • Design empty states as onboarding opportunities: show what's possible and invite the first action
  • For destructive actions, confirm with a reversible undo rather than a blocking "Are you sure?" dialog

Want to learn this interactively?

Experience hands-on experiments and test your understanding.

Start Learning
🔥

Practice this topic

Active recall — strengthens long-term retention

Related Topics