Progress Indicator Patterns
Choosing a Pattern
| Know the percentage? |
Duration |
Pattern |
| Yes |
Any |
Determinate progress bar |
| No |
< 3 sec |
Spinner |
| No |
3-10 sec |
Spinner + message |
| No |
> 10 sec |
Skeleton or progress with steps |
Progress Bar Rules
- Never go backwards. If progress recalculates, pause at current position.
- Show percentage OR "X of Y" alongside the bar.
- Stripe/pulse animation for indeterminate progress.
- Color change at completion (brand color → green).
Spinner Rules
- Only show if operation takes > 300ms.
- Don't use spinners for content loading (use skeletons).
- Center in the container they're loading.
- Include text for operations > 3 seconds: "Loading your dashboard..."
Anti-Patterns
- Spinners that spin forever with no timeout or error state.
- Progress bars that jump from 10% to 90% then sit at 99%.
- Multiple spinners visible at once.