loading-states-and-perceived-performance

Featured

Manage user expectations during wait times with appropriate loading states — from simple spinners to complex skeleton screens and staggered animations. Perceived performance is often more important than actual load time. Use when designing data-heavy components, handling API calls, building hero sections, or improving the feel of a slow interface.

Web & Frontend 61 stars 10 forks Updated today MIT

Install

View on GitHub

Quality Score: 88/100

Stars 20%
60
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Loading States and Perceived Performance Users don't mind waiting as much if they understand *what* they are waiting for and *how much* progress is being made. Perceived performance is the design work of making a system feel faster than it actually is. --- ## Choosing the Right Loading State | Wait Duration | Best Pattern | Use for | |---|---|---| | **Short (< 1s)** | **Inline Spinner / Loader** | Button actions, small updates, quick data fetches | | **Medium (1s – 3s)** | **Skeleton Screen** | Cards, lists, dashboards, profile pages | | **Long (> 3s)** | **Determinate Progress Bar** | File uploads, complex exports, heavy processing | | **Full Page** | **Staggered Entry / Animated Sections** | Initial app load, hero sections, immersive transitions | --- ## Simple Cases: Spinners and Loaders Use spinners for small, contained actions where the layout doesn't change significantly. - **Button Spinners:** Replace button text or sit alongside it. The button should enter a `disabled` state to prevent double-submissions. - **Micro-Loaders:** A small 16–24px circle for inline updates (e.g., saving a single field). - **Animation Tip:** A "spring-loaded" rotation (easing in and out) feels more premium than a constant linear rotation. ```css @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .spinner { animation: spin 800ms cubic-bezier(0.4, 0, 0.2, 1) infinite; } ``` --- ## Skeleton Screens (Glimmer/Shimmer) Skeleton screens pro...

Details

Author
dembrandt
Repository
dembrandt/dembrandt-skills
Created
5 months ago
Last Updated
today
Language
JavaScript
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category

Web & Frontend Listed

perceived-latency-mask

Skeleton loading states that mirror the exact layout of incoming content — same grid, same column widths, heading and text bars at the real type sizes with varied widths — with a compositor-only shimmer, a 300ms appear delay so fast loads never flash, aria-busy handling, and a static fallback under reduced motion. Use this whenever UI waits on data or assets: fetch/async rendering, lazy- loaded sections, infinite scroll, image modules, dashboards, feeds, tables, or when the user says "loading state", "skeleton", "shimmer", "placeholder", "spinner", "the page flashes/jumps while loading", "FOUC", "layout shift", or "make it feel faster" — even if they'd otherwise reach for a spinner.

2 Updated 1 weeks ago
fernandokylas
Web & Frontend Listed

performance

Optimize UI performance against Core Web Vitals — LCP, INP, CLS — with loading/code-split strategy, layout-shift prevention, and animation performance rules. Use when the user wants to improve speed, fix jank or layout shift, hit Web Vitals budgets, or make a UI feel fast on low-end devices.

0 Updated 2 weeks ago
screamyx
Web & Frontend Featured

performance

Optimize UI performance against Core Web Vitals — LCP, INP, CLS — with loading/code-split strategy, layout-shift prevention, and animation performance rules. Use when the user wants to improve speed, fix jank or layout shift, hit Web Vitals budgets, or make a UI feel fast on low-end devices.

1,473 Updated 1 weeks ago
plugin87