loading-states
owl-listener/designer-skills
Design waiting experiences with spinners, skeletons, optimistic updates, and progressive reveal.
What is loading-states?
Expert guidance on loading patterns that maintain user confidence and reduce perceived wait time. Use when content takes time to arrive, paired with doherty-threshold for latency budgets and feedback-patterns for success confirmation.
- Design skeleton screens that show layout shape before content loads with subtle shimmer animation
- Implement spinner and progress indicators—indeterminate for unknown duration, determinate when measurable
- Build progressive loading strategies: load critical content first, lazy-load below-fold, blur-up images
- Create optimistic UI that shows expected results immediately and reconciles with server responses
- Design placeholder content with realistic proportions that transition smoothly to real content
- Apply duration guidelines (under 100ms needs no indicator; 100ms–1s subtle; 1–10s clear; over 10s detailed progress)
How to install loading-states
npx skills add https://github.com/owl-listener/designer-skills --skill loading-statesHow to use loading-states
- 1.Choose your loading pattern based on content structure: skeleton for known layouts, spinner for unknown duration
- 2.Apply duration guidelines to decide indicator visibility (under 100ms: none; 100ms–1s: subtle; 1–10s: clear; over 10s: detailed)
- 3.Implement transition behavior: fade content in, stagger list items 30–50ms apart, avoid layout shifts, maintain scroll position
- 4.For optimistic UI, show expected result immediately and reconcile with server response, rolling back on failure
- 5.Test on slow connections and respect reduced-motion preferences for shimmer animations
Use cases
- Designing a product listing page that loads images progressively with blur-up placeholders
- Building an e-commerce checkout that optimistically updates cart state before server confirmation
- Creating a social feed that skeleton-loads post layouts while content fetches
- Implementing a search results page with staggered list item reveals to reduce perceived load time
- Designing a file upload interface with determinate progress bar and cancel option for long uploads
- Product designers building user-facing interfaces
- Frontend engineers implementing loading experiences
- UX researchers evaluating perceived performance
- Design systems teams standardizing loading patterns
- Teams optimizing for slow network conditions
loading-states FAQ
Use skeleton screens for known content structure (e.g., article layouts, product cards) to show the shape immediately. Use spinners for unknown duration or when structure varies. Skeleton screens feel faster because they show what's coming.
Reserve space for content before it arrives using skeleton screens or fixed-height containers. Stagger item reveals in lists (30–50ms intervals) to smooth the visual transition. Fade content in rather than popping it in place.
Skeleton screens show the layout shape while waiting for data. Optimistic UI shows the expected result of a user action (e.g., 'liked' button changes immediately) before server confirmation. Use both together: skeleton while loading, optimistic for user actions.
Use a determinate progress bar when you can measure progress (uploads, downloads, multi-step processes). Use an indeterminate spinner only when progress is unmeasurable. Always provide a cancel option for loads over 10 seconds.
Disable shimmer animations and staggered reveals for users with reduced-motion enabled. Use opacity changes or static skeletons instead. Test with prefers-reduced-motion media query.
Full instructions (SKILL.md)
Source of truth, from owl-listener/designer-skills.
name: loading-states
description: Design waiting experiences — spinners, skeletons, optimistic updates, and progressive reveal. Use when content takes time to arrive. For the latency budget itself use doherty-threshold; for success confirmation use feedback-patterns.
Loading States
You are an expert in designing loading experiences that maintain user confidence and perceived performance.
What You Do
You design loading patterns that keep users informed and reduce perceived wait time.
Loading Patterns
Skeleton Screens
Show the layout shape before content loads. Use for known content structure. Animate with subtle shimmer.
Spinner/Progress
Indeterminate spinner for unknown duration. Determinate progress bar when progress is measurable. Keep spinners small and unobtrusive.
Progressive Loading
Load critical content first, enhance progressively. Lazy-load below-fold content. Blur-up images (low-res placeholder to full).
Optimistic UI
Show the expected result immediately. Reconcile with server response. Roll back if the action fails.
Placeholder Content
Show placeholder text/images while loading. Use realistic proportions. Transition smoothly to real content.
Duration Guidelines
- Under 100ms: no loading indicator needed
- 100ms-1s: subtle indicator (opacity change, skeleton)
- 1-10s: clear loading state with progress if possible
- Over 10s: detailed progress, time estimate, background option
Transition Behavior
- Fade content in (don't pop)
- Stagger items for lists (30-50ms intervals)
- Avoid layout shifts when content loads
- Maintain scroll position on content refresh
Best Practices
- Show something immediately (never a blank screen)
- Match skeleton shapes to actual content
- Avoid multiple competing loading indicators
- Provide cancel/back options for long loads
- Test on slow connections
- Respect reduced-motion for shimmer animations
Related skills
More from owl-listener/designer-skills and the wider catalog.

localization-design
Design UI that adapts to any language, script, and cultural context without breaking.

metrics-definition
Define UX metrics and KPIs that connect design decisions to measurable outcomes.

micro-interaction-spec
Specify single micro-interactions with trigger, rules, feedback, and loops for engineering handoff.

millers-law
Chunk information into groups of ~4 to reduce cognitive load and improve interface scannability.

motion-system
Define motion tokens and choreography rules for consistent, accessible animation across your product.

naming-convention
Establish predictable naming conventions for design components, tokens, and layers.