feedback-loop-states-and-latency

Designs interactive element states and matches feedback patterns to response latency thresholds.

8|3|Updated May 3, 2026
One-click install
npx skills add https://github.com/Deibler/universal-design-principles --skill feedback-loop-states-and-latency-deibler
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: feedback-loop-states-and-latency
Source: https://github.com/Deibler/universal-design-principles/tree/main/plugins/interaction-and-control-principles/skills/feedback-loop-states-and-latency
Command: npx skills add https://github.com/Deibler/universal-design-principles --skill feedback-loop-states-and-latency-deibler

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Interactive elements often leave users guessing whether an action registered, is processing, succeeded, or failed, especially when response times vary. This Skill provides concrete patterns for the four visible states (idle, pending, success, error) and maps feedback types to empirically grounded latency thresholds so users always know what the system is doing. ## Core Features & Use Cases - Four-state model: Defines idle, pending, success, and error states with HTML/CSS implementation patterns for buttons, forms, and async operations. - Latency-threshold mapping: Matches feedback to response time using the Miller/Card/Doherty thresholds, from no indicator under 100ms to progress bars with time estimates beyond 10 seconds. - Optimistic UI and skeleton screens: Covers optimistic updates with rollback for high-success reversible actions, and skeleton placeholders instead of spinners for content loading. - Use Case: When building a file-upload flow, apply the >10s pattern: a determinate progress bar, percentage and time-remaining text, and a cancel button, rather than a bare spinner. ## Quick Start Ask the agent to design the idle, pending, success, and error states for a form-submit button with feedback matched to its expected response time.

Frequently Asked Questions about feedback-loop-states-and-latency

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I design button states for async actions?▼

Define four states: idle (normal styling), pending (disabled with spinner if wait exceeds ~500ms), success (brief check or color flash), and error (error styling near the button). Use a data-state attribute to drive CSS transitions between them.

What loading indicator should I use for different response times?▼

Match the indicator to latency: under 100ms needs none, 100-400ms needs a light state change, 400ms-1s needs a spinner, 1-10s needs a spinner with status text, and over 10s needs a progress bar with time remaining and a cancel option.

When should I use skeleton screens instead of spinners?▼

Use skeleton screens when loading structured content like feeds or article pages, since they show page layout immediately and reduce perceived load time. Spinners fit single-action pending states or when the result location is unpredictable.

What is optimistic UI and when is it safe to use?▼

Optimistic UI updates the interface as if an action succeeded, then commits in the background and rolls back with an error message on failure. It suits actions with high success rates that are reversible, such as starring or archiving items.

How do I make form error messages accessible?▼

Place errors in context next to the field that caused them, not in a generic banner. Set aria-invalid="true" on the input and link the message with aria-describedby so screen readers announce the error with the field.