The Good, The Bad and The UX

A collection of UX patterns with comparative examples

Back to all examples
Feedback

Progressive Loading Messages

Show evolving status messages during long operations to keep users informed

loadingfeedbackprogressstatusux

Bad example

Generate Monthly Report

This may take a few seconds

Good example

Generate Monthly Report

This may take a few seconds

Progressive Loading Messages

Description

When performing long operations (AI generation, complex calculations, report building), show a sequence of evolving status messages instead of a static "Loading..." text. This gives users insight into what's happening behind the scenes.

Why it matters

  • Perceived progress: Changing messages create a sense of movement and progress, even when you can't show a real percentage
  • Reduced anxiety: Users understand that work is being done, not that the app is stuck
  • Transparency: Revealing the "steps" builds trust by showing the complexity of the operation
  • Engagement: Dynamic content keeps attention and reduces abandonment during long waits

The psychology behind it

A static "Loading..." feels like a black box - users have no idea what's happening or how long it will take. Progressive messages create a narrative: "First we do X, then Y, then Z" - this storytelling approach makes waiting feel purposeful.

Even if the messages are approximate or decorative (not tied to actual backend steps), they dramatically improve the perceived experience.

When to apply

  • AI content generation (ChatGPT, image generation, etc.)
  • Report or export generation
  • Complex data processing
  • File uploads with server-side processing
  • Any operation taking more than 2-3 seconds

When not to apply

  • Short operations (< 2 seconds) - just use a spinner
  • Operations with real progress data - use a progress bar instead
  • Background tasks where user attention isn't needed

Implementation tips

  1. Keep messages relevant: Messages should relate to the actual task being performed
  2. Timing matters: Change messages every 1-2 seconds for optimal pacing
  3. End gracefully: The last message should hint that completion is near ("Almost there...", "Finalizing...")
  4. Don't loop: If the operation takes longer than expected, stay on the last message rather than restarting
  5. Animate transitions: Smooth fade or slide transitions between messages feel polished
  6. Consider humor: For the right audience, playful messages can reduce frustration ("Teaching hamsters to run faster...")

Explore more examples