Feedback patterns for microinteractions skill

Feedback is how a microinteraction communicates its rules to the user.

by wondelai·MIT license·★ 2,235 Stars on the repo·GitHub ↗

Use now

Files of Feedback patterns for microinteractions

wondelai/main1 file
feedback-patterns.md
Show the full text288 lines

Feedback Patterns for Microinteractions

Feedback is how a microinteraction communicates its rules to the user. It answers the most fundamental question in any interaction: "What just happened?" Without feedback, users operate in the dark -- unsure if their action registered, if the system is working, or if the result was what they intended. Feedback bridges the Gulf of Evaluation by making the invisible visible.

The Feedback Hierarchy

Not all feedback is equal. The type, intensity, and duration of feedback should match the significance of the event.

Event Significance Feedback Level Duration Example
Micro (hover, focus) Subtle visual change Instant, continuous Background lightens on hover
Minor (tap, toggle) Clear visual change 100-300ms Toggle slides, color shifts
Medium (save, send) Visual change + state label 1-3 seconds "Saved" text appears briefly
Major (purchase, delete) Multi-signal confirmation 3-5 seconds, user-dismissable Confirmation banner with undo option
Critical (error, failure) Prominent, persistent Until acknowledged Red banner with error message and action
The Minimum Feedback Rule

Use the least amount of feedback that still communicates the message. A hover state does not need a sound effect. A successful save does not need a modal dialog. A button press does not need a full-screen animation. Escalate feedback only when the event demands it.


Visual Feedback

Visual feedback is the primary feedback channel for nearly every microinteraction. It is silent, non-intrusive, and universally accessible (when designed with sufficient contrast).

Color Changes
Pattern When to Use Implementation Example
State color shift Show current state Background or border color changes Toggle track: gray (off) to green (on)
Validation color Indicate input validity Border or icon color changes Green border = valid, red border = invalid
Progress color Show completion level Fill color changes as progress increases Upload bar shifts from blue to green at 100%
Attention color Draw focus to a change Brief highlight animation Row flashes yellow after being updated
Semantic color Communicate meaning Consistent color system Red = error, green = success, yellow = warning, blue = info
Animations
Animation Type Duration Easing When to Use Example
Button press 50-100ms ease-out Every button interaction Scale down to 0.97, then back
Toggle slide 150-250ms ease-in-out Binary state change Thumb slides from left to right
Expand/collapse 200-300ms ease-in-out Revealing or hiding content Accordion section opens smoothly
Fade in/out 150-300ms ease-in (in), ease-out (out) Elements appearing/disappearing Toast notification fades in
Slide in/out 200-400ms ease-out (in), ease-in (out) Panels, drawers, sheets Side panel slides from right edge
Skeleton to content 200-400ms ease-in-out Content loading Gray placeholders crossfade to real content
Checkmark draw 300-500ms ease-out Success confirmation SVG checkmark animates stroke from left to right
Shake 300-500ms ease-in-out (oscillate) Invalid input Field shakes horizontally 2-3 times
Bounce 200-400ms spring Attention, arrival New item bounces into list
Animation Principles for Microinteractions

1. Purpose over decoration. Every animation should communicate something: state change, direction, connection, or confirmation. If you cannot articulate what the animation communicates, remove it.

2. Interruptible. If the user acts before an animation completes, the animation should yield to the new action. Never make users wait for an animation to finish.

3. Consistent timing. Use a small set of durations (100ms, 200ms, 300ms, 500ms) and apply them consistently by category. Do not use random durations.

4. Physics-based easing. Use ease-out for elements entering (decelerating arrival), ease-in for elements leaving (accelerating departure), and ease-in-out for elements that stay but change state.

Progress Indicators
Indicator Type When to Use Design Details
Determinate progress bar Duration is known or estimable Shows percentage; bar fills left to right; show time remaining if > 10s
Indeterminate spinner Duration is unknown, expected < 10s Rotating circle or dots; use brand-consistent style
Skeleton screen Content layout is known, data loading Gray rectangles matching final layout shape and size
Percentage text Long operations where users want precision "47% complete" text; pair with progress bar
Step indicator Multi-step process "Step 2 of 4" with visual step markers
Inline spinner Loading within a specific component Small spinner inside the button or field that triggered loading
Progress Indicator Selection Guide
Load Time Best Indicator Why
< 0.3s None (instant) Any indicator would flash and distract
0.3-1s Subtle inline spinner Acknowledges loading without overdoing it
1-5s Skeleton screen or spinner Shows the system is working
5-30s Determinate progress bar Users need to see progress
30s+ Progress bar + percentage + estimated time Users need reassurance and ability to leave

Audio Feedback

Audio feedback provides confirmation through sound. It is powerful when visual attention is elsewhere, but it is easily annoying and must be used sparingly.

When Audio Feedback Is Appropriate
Appropriate Inappropriate
Confirmation of important action (payment, send) Every button click
Error that needs immediate attention Form validation errors
Background task completion (download, print) Hover or focus changes
Accessibility (screen reader announcements) Decorative or branding sounds
Physical product interaction (keyboard typing) Any action that occurs frequently (> 10x/min)
Audio Feedback Design Rules

1. Short. Sounds should be 50-200ms for confirmations, up to 1 second for completions. Never longer.

2. Quiet. Default volume should be unobtrusive. Users should be able to disable all sounds.

3. Distinct. Success and error sounds must be obviously different -- do not rely on subtle pitch changes.

4. Non-verbal. Avoid spoken words in feedback sounds (they do not scale across languages and are slow). Pure tones or abstract sounds work best.

5. Consistent. Use the same sound for the same type of event across the entire product. Success always sounds the same.

Audio Feedback Patterns
Event Sound Character Duration Example Reference
Success Rising pitch, major chord 100-300ms iOS payment success chime
Error Low buzz or discordant tone 100-200ms macOS alert sound
Notification Gentle chime, mid-range 200-500ms Slack notification ding
Completion Satisfying click or chime 100-200ms Camera shutter sound
Typing Soft click per keystroke 20-50ms iPhone keyboard clicks
Delete/Trash Crumple or whoosh 200-400ms macOS trash sound

Haptic Feedback

Haptic feedback uses vibration or force feedback to communicate through touch. It is available on mobile devices and some game controllers, laptops, and wearables.

Haptic Feedback Patterns
Pattern iOS API Android API When to Use
Light tap .light impact HapticFeedbackConstants.CLOCK_TICK Toggle, checkbox, minor selection
Medium tap .medium impact HapticFeedbackConstants.CONTEXT_CLICK Button press, drag snap
Heavy tap .heavy impact HapticFeedbackConstants.LONG_PRESS Confirmation of significant action
Success .success notification Custom pattern: short-pause-long Action completed successfully
Warning .warning notification Custom pattern: two short bursts Approaching limit, caution needed
Error .error notification Custom pattern: three rapid bursts Action failed, attention needed
Selection tick .selection changed HapticFeedbackConstants.KEYBOARD_TAP Scrolling through picker values
Haptic Design Rules

1. Pair with visual. Haptic feedback should always accompany visual feedback, never replace it. Some devices have haptics disabled, and users with motor impairments may not feel vibrations.

2. Match intensity to significance. Light tap for toggles. Medium for confirmations. Heavy for warnings. Never heavy for routine actions.

3. Use sparingly. Constant vibration is annoying and drains battery. Reserve haptics for moments where tactile confirmation adds genuine value.

4. Respect system settings. Always check if the user has disabled haptic feedback at the system level. Never override this preference.


Feedback Timing

When feedback occurs is as important as what feedback occurs. The human perception system has specific thresholds that determine whether feedback feels instant, delayed, or broken.

Perception Thresholds
Delay User Perception Required Feedback
0-100ms Instantaneous -- feels like direct manipulation Visual state change (color, position)
100-300ms Slight lag but still responsive Transition animation, inline spinner
300ms-1s Noticeable delay Loading indicator, cursor change
1-5s Waiting Spinner, skeleton screen, "Loading..."
5-10s Attention wanders Progress bar with estimate
10-30s Impatient Progress bar + percentage + "X seconds remaining"
30s+ Will leave or switch tasks Progress bar + allow backgrounding + notification on completion
Optimistic UI Pattern

Show the result immediately and correct later if the action fails. This makes the interface feel instant even when the server takes time.

Step What Happens Example
1. User triggers Show success state immediately Heart fills red instantly on like
2. Send request API call fires in background POST /like runs asynchronously
3a. Server confirms Nothing changes (already showing success) Response 200: no visual change
3b. Server fails Revert to previous state with error Heart unfills; toast: "Could not save like"

When to use optimistic UI:

  • Action is very likely to succeed (> 99%)
  • Reverting is possible and not confusing
  • The action is low-stakes (not a payment or deletion)

When NOT to use optimistic UI:

  • Action has a significant failure rate
  • Action is irreversible
  • Reverting would be confusing (e.g., message appears then disappears)

Progressive Disclosure in Feedback

Not all feedback needs to appear at once. Progressive disclosure reveals information in layers, starting with the most important.

Feedback Layering
Layer What It Shows When Example
Immediate "Your action was received" 0-100ms Button changes state
Status "Here's what's happening" 100ms-3s Spinner, progress bar
Result "Here's the outcome" On completion Success message, error details
Detail "Here's the specifics" On demand (hover, click) Tooltip with timestamp, expandable error log
Progressive Error Disclosure
Level What to Show Example
Summary One-line human-readable error "Upload failed"
Explanation Why it happened "The file is too large (12MB). Maximum size is 10MB."
Resolution How to fix it "Try compressing the image or choosing a smaller file."
Technical detail For developers or support Expandable: "Error 413: Request Entity Too Large. Request ID: abc123"

Preventing Feedback Overload

Too much feedback is as bad as too little. When every action triggers a toast notification, animation, and sound, users become desensitized and miss the feedback that actually matters.

Signs of Feedback Overload
Symptom Cause Fix
Users ignore toast notifications Too many toasts for minor events Reserve toasts for actions user may want to undo
Interface feels "jittery" Too many animations on trivial events Remove animation from hover/focus; keep for state changes
Users disable notifications Every event sends a push notification Tier notifications; only push for high-priority events
Sound becomes annoying Every click has an audio cue Remove audio from routine actions; keep for confirmations
Screen reader users overwhelmed Too many aria-live announcements Announce only meaningful state changes
Feedback Reduction Strategies

1. Consolidate. Instead of four separate toast messages for four file uploads, show one: "4 files uploaded successfully."

2. Delay and batch. Accumulate minor events and present them as a summary: "While you were away: 3 likes, 2 comments, 1 share."

3. Tier by priority. Define three tiers of feedback intensity and assign every event type to a tier:

Tier Intensity Feedback Type Events
1 (High) Multi-signal, persistent Banner + sound + haptic Errors, destructive confirmations, payment success
2 (Medium) Single signal, temporary Toast or inline text Save success, status change, minor warning
3 (Low) Minimal, passive Visual state change only Hover, focus, toggle, minor selection

4. Respect context. Reduce feedback when:

  • User is performing rapid sequential actions (bulk editing)
  • System is in background/minimized
  • User has indicated preference for fewer notifications

Feedback Accessibility

Feedback must work for all users, including those who cannot see animations, hear sounds, or feel vibrations.

Accessibility Requirements
User Group Feedback Adaptation
Screen reader users Use aria-live regions (polite for status, assertive for errors) to announce state changes
Low vision users Ensure color changes have sufficient contrast (3:1 minimum for state changes); do not rely on color alone
Motion-sensitive users Respect prefers-reduced-motion; replace animations with instant state changes
Deaf/hard of hearing users Never rely on audio as sole feedback channel; always pair with visual
Keyboard-only users Focus indicators must be visible on all interactive elements; state changes near focus
Accessibility Feedback Checklist
  • Can every state change be perceived without color alone (shape, text, or icon accompanies color)?
  • Are error messages announced to screen readers via aria-live="assertive"?
  • Are success messages announced via aria-live="polite"?
  • Do animations respect prefers-reduced-motion media query?
  • Is all audio feedback accompanied by a visual equivalent?
  • Can keyboard users perceive which element has focus?
  • Do loading states have an accessible label ("Loading...", role="status")?
  • Are progress bars accessible (role="progressbar", aria-valuenow, aria-valuemin, aria-valuemax)?

Feedback Design Checklist

  • Does every interactive element provide immediate visual feedback on activation?
  • Is feedback proportional to event significance (small action = small feedback)?
  • For operations > 300ms, is there a loading indicator?
  • For operations > 10 seconds, is there a progress bar?
  • Do error messages explain what happened and how to fix it?
  • Is success feedback brief and non-blocking (does not require dismissal)?
  • Are animations under 500ms and interruptible?
  • Is audio feedback optional and disabled by default (except essential alerts)?
  • Does haptic feedback match system settings?
  • Are all feedback channels accessible (visual + ARIA + reduced-motion support)?
1# Feedback Patterns for Microinteractions
2 
3Feedback is how a microinteraction communicates its rules to the user. It answers the most fundamental question in any interaction: "What just happened?" Without feedback, users operate in the dark -- unsure if their action registered, if the system is working, or if the result was what they intended. Feedback bridges the Gulf of Evaluation by making the invisible visible.
4 
5## The Feedback Hierarchy
6 
7Not all feedback is equal. The type, intensity, and duration of feedback should match the significance of the event.
8 
9| Event Significance | Feedback Level | Duration | Example |
10|-------------------|---------------|----------|---------|
11| **Micro** (hover, focus) | Subtle visual change | Instant, continuous | Background lightens on hover |
12| **Minor** (tap, toggle) | Clear visual change | 100-300ms | Toggle slides, color shifts |
13| **Medium** (save, send) | Visual change + state label | 1-3 seconds | "Saved" text appears briefly |
14| **Major** (purchase, delete) | Multi-signal confirmation | 3-5 seconds, user-dismissable | Confirmation banner with undo option |
15| **Critical** (error, failure) | Prominent, persistent | Until acknowledged | Red banner with error message and action |
16 
17### The Minimum Feedback Rule
18 
19**Use the least amount of feedback that still communicates the message.** A hover state does not need a sound effect. A successful save does not need a modal dialog. A button press does not need a full-screen animation. Escalate feedback only when the event demands it.
20 
21---
22 
23## Visual Feedback
24 
25Visual feedback is the primary feedback channel for nearly every microinteraction. It is silent, non-intrusive, and universally accessible (when designed with sufficient contrast).
26 
27### Color Changes
28 
29| Pattern | When to Use | Implementation | Example |
30|---------|-------------|---------------|---------|
31| **State color shift** | Show current state | Background or border color changes | Toggle track: gray (off) to green (on) |
32| **Validation color** | Indicate input validity | Border or icon color changes | Green border = valid, red border = invalid |
33| **Progress color** | Show completion level | Fill color changes as progress increases | Upload bar shifts from blue to green at 100% |
34| **Attention color** | Draw focus to a change | Brief highlight animation | Row flashes yellow after being updated |
35| **Semantic color** | Communicate meaning | Consistent color system | Red = error, green = success, yellow = warning, blue = info |
36 
37### Animations
38 
39| Animation Type | Duration | Easing | When to Use | Example |
40|---------------|----------|--------|-------------|---------|
41| **Button press** | 50-100ms | ease-out | Every button interaction | Scale down to 0.97, then back |
42| **Toggle slide** | 150-250ms | ease-in-out | Binary state change | Thumb slides from left to right |
43| **Expand/collapse** | 200-300ms | ease-in-out | Revealing or hiding content | Accordion section opens smoothly |
44| **Fade in/out** | 150-300ms | ease-in (in), ease-out (out) | Elements appearing/disappearing | Toast notification fades in |
45| **Slide in/out** | 200-400ms | ease-out (in), ease-in (out) | Panels, drawers, sheets | Side panel slides from right edge |
46| **Skeleton to content** | 200-400ms | ease-in-out | Content loading | Gray placeholders crossfade to real content |
47| **Checkmark draw** | 300-500ms | ease-out | Success confirmation | SVG checkmark animates stroke from left to right |
48| **Shake** | 300-500ms | ease-in-out (oscillate) | Invalid input | Field shakes horizontally 2-3 times |
49| **Bounce** | 200-400ms | spring | Attention, arrival | New item bounces into list |
50 
51### Animation Principles for Microinteractions
52 
53**1. Purpose over decoration.** Every animation should communicate something: state change, direction, connection, or confirmation. If you cannot articulate what the animation communicates, remove it.
54 
55**2. Interruptible.** If the user acts before an animation completes, the animation should yield to the new action. Never make users wait for an animation to finish.
56 
57**3. Consistent timing.** Use a small set of durations (100ms, 200ms, 300ms, 500ms) and apply them consistently by category. Do not use random durations.
58 
59**4. Physics-based easing.** Use ease-out for elements entering (decelerating arrival), ease-in for elements leaving (accelerating departure), and ease-in-out for elements that stay but change state.
60 
61### Progress Indicators
62 
63| Indicator Type | When to Use | Design Details |
64|---------------|-------------|----------------|
65| **Determinate progress bar** | Duration is known or estimable | Shows percentage; bar fills left to right; show time remaining if > 10s |
66| **Indeterminate spinner** | Duration is unknown, expected < 10s | Rotating circle or dots; use brand-consistent style |
67| **Skeleton screen** | Content layout is known, data loading | Gray rectangles matching final layout shape and size |
68| **Percentage text** | Long operations where users want precision | "47% complete" text; pair with progress bar |
69| **Step indicator** | Multi-step process | "Step 2 of 4" with visual step markers |
70| **Inline spinner** | Loading within a specific component | Small spinner inside the button or field that triggered loading |
71 
72### Progress Indicator Selection Guide
73 
74| Load Time | Best Indicator | Why |
75|-----------|---------------|-----|
76| < 0.3s | None (instant) | Any indicator would flash and distract |
77| 0.3-1s | Subtle inline spinner | Acknowledges loading without overdoing it |
78| 1-5s | Skeleton screen or spinner | Shows the system is working |
79| 5-30s | Determinate progress bar | Users need to see progress |
80| 30s+ | Progress bar + percentage + estimated time | Users need reassurance and ability to leave |
81 
82---
83 
84## Audio Feedback
85 
86Audio feedback provides confirmation through sound. It is powerful when visual attention is elsewhere, but it is easily annoying and must be used sparingly.
87 
88### When Audio Feedback Is Appropriate
89 
90| Appropriate | Inappropriate |
91|-------------|---------------|
92| Confirmation of important action (payment, send) | Every button click |
93| Error that needs immediate attention | Form validation errors |
94| Background task completion (download, print) | Hover or focus changes |
95| Accessibility (screen reader announcements) | Decorative or branding sounds |
96| Physical product interaction (keyboard typing) | Any action that occurs frequently (> 10x/min) |
97 
98### Audio Feedback Design Rules
99 
100**1. Short.** Sounds should be 50-200ms for confirmations, up to 1 second for completions. Never longer.
101 
102**2. Quiet.** Default volume should be unobtrusive. Users should be able to disable all sounds.
103 
104**3. Distinct.** Success and error sounds must be obviously different -- do not rely on subtle pitch changes.
105 
106**4. Non-verbal.** Avoid spoken words in feedback sounds (they do not scale across languages and are slow). Pure tones or abstract sounds work best.
107 
108**5. Consistent.** Use the same sound for the same type of event across the entire product. Success always sounds the same.
109 
110### Audio Feedback Patterns
111 
112| Event | Sound Character | Duration | Example Reference |
113|-------|----------------|----------|-------------------|
114| **Success** | Rising pitch, major chord | 100-300ms | iOS payment success chime |
115| **Error** | Low buzz or discordant tone | 100-200ms | macOS alert sound |
116| **Notification** | Gentle chime, mid-range | 200-500ms | Slack notification ding |
117| **Completion** | Satisfying click or chime | 100-200ms | Camera shutter sound |
118| **Typing** | Soft click per keystroke | 20-50ms | iPhone keyboard clicks |
119| **Delete/Trash** | Crumple or whoosh | 200-400ms | macOS trash sound |
120 
121---
122 
123## Haptic Feedback
124 
125Haptic feedback uses vibration or force feedback to communicate through touch. It is available on mobile devices and some game controllers, laptops, and wearables.
126 
127### Haptic Feedback Patterns
128 
129| Pattern | iOS API | Android API | When to Use |
130|---------|---------|-------------|-------------|
131| **Light tap** | .light impact | HapticFeedbackConstants.CLOCK_TICK | Toggle, checkbox, minor selection |
132| **Medium tap** | .medium impact | HapticFeedbackConstants.CONTEXT_CLICK | Button press, drag snap |
133| **Heavy tap** | .heavy impact | HapticFeedbackConstants.LONG_PRESS | Confirmation of significant action |
134| **Success** | .success notification | Custom pattern: short-pause-long | Action completed successfully |
135| **Warning** | .warning notification | Custom pattern: two short bursts | Approaching limit, caution needed |
136| **Error** | .error notification | Custom pattern: three rapid bursts | Action failed, attention needed |
137| **Selection tick** | .selection changed | HapticFeedbackConstants.KEYBOARD_TAP | Scrolling through picker values |
138 
139### Haptic Design Rules
140 
141**1. Pair with visual.** Haptic feedback should always accompany visual feedback, never replace it. Some devices have haptics disabled, and users with motor impairments may not feel vibrations.
142 
143**2. Match intensity to significance.** Light tap for toggles. Medium for confirmations. Heavy for warnings. Never heavy for routine actions.
144 
145**3. Use sparingly.** Constant vibration is annoying and drains battery. Reserve haptics for moments where tactile confirmation adds genuine value.
146 
147**4. Respect system settings.** Always check if the user has disabled haptic feedback at the system level. Never override this preference.
148 
149---
150 
151## Feedback Timing
152 
153When feedback occurs is as important as what feedback occurs. The human perception system has specific thresholds that determine whether feedback feels instant, delayed, or broken.
154 
155### Perception Thresholds
156 
157| Delay | User Perception | Required Feedback |
158|-------|----------------|-------------------|
159| **0-100ms** | Instantaneous -- feels like direct manipulation | Visual state change (color, position) |
160| **100-300ms** | Slight lag but still responsive | Transition animation, inline spinner |
161| **300ms-1s** | Noticeable delay | Loading indicator, cursor change |
162| **1-5s** | Waiting | Spinner, skeleton screen, "Loading..." |
163| **5-10s** | Attention wanders | Progress bar with estimate |
164| **10-30s** | Impatient | Progress bar + percentage + "X seconds remaining" |
165| **30s+** | Will leave or switch tasks | Progress bar + allow backgrounding + notification on completion |
166 
167### Optimistic UI Pattern
168 
169Show the result immediately and correct later if the action fails. This makes the interface feel instant even when the server takes time.
170 
171| Step | What Happens | Example |
172|------|-------------|---------|
173| 1. User triggers | Show success state immediately | Heart fills red instantly on like |
174| 2. Send request | API call fires in background | POST /like runs asynchronously |
175| 3a. Server confirms | Nothing changes (already showing success) | Response 200: no visual change |
176| 3b. Server fails | Revert to previous state with error | Heart unfills; toast: "Could not save like" |
177 
178**When to use optimistic UI:**
179- Action is very likely to succeed (> 99%)
180- Reverting is possible and not confusing
181- The action is low-stakes (not a payment or deletion)
182 
183**When NOT to use optimistic UI:**
184- Action has a significant failure rate
185- Action is irreversible
186- Reverting would be confusing (e.g., message appears then disappears)
187 
188---
189 
190## Progressive Disclosure in Feedback
191 
192Not all feedback needs to appear at once. Progressive disclosure reveals information in layers, starting with the most important.
193 
194### Feedback Layering
195 
196| Layer | What It Shows | When | Example |
197|-------|-------------|------|---------|
198| **Immediate** | "Your action was received" | 0-100ms | Button changes state |
199| **Status** | "Here's what's happening" | 100ms-3s | Spinner, progress bar |
200| **Result** | "Here's the outcome" | On completion | Success message, error details |
201| **Detail** | "Here's the specifics" | On demand (hover, click) | Tooltip with timestamp, expandable error log |
202 
203### Progressive Error Disclosure
204 
205| Level | What to Show | Example |
206|-------|-------------|---------|
207| **Summary** | One-line human-readable error | "Upload failed" |
208| **Explanation** | Why it happened | "The file is too large (12MB). Maximum size is 10MB." |
209| **Resolution** | How to fix it | "Try compressing the image or choosing a smaller file." |
210| **Technical detail** | For developers or support | Expandable: "Error 413: Request Entity Too Large. Request ID: abc123" |
211 
212---
213 
214## Preventing Feedback Overload
215 
216Too much feedback is as bad as too little. When every action triggers a toast notification, animation, and sound, users become desensitized and miss the feedback that actually matters.
217 
218### Signs of Feedback Overload
219 
220| Symptom | Cause | Fix |
221|---------|-------|-----|
222| Users ignore toast notifications | Too many toasts for minor events | Reserve toasts for actions user may want to undo |
223| Interface feels "jittery" | Too many animations on trivial events | Remove animation from hover/focus; keep for state changes |
224| Users disable notifications | Every event sends a push notification | Tier notifications; only push for high-priority events |
225| Sound becomes annoying | Every click has an audio cue | Remove audio from routine actions; keep for confirmations |
226| Screen reader users overwhelmed | Too many aria-live announcements | Announce only meaningful state changes |
227 
228### Feedback Reduction Strategies
229 
230**1. Consolidate.** Instead of four separate toast messages for four file uploads, show one: "4 files uploaded successfully."
231 
232**2. Delay and batch.** Accumulate minor events and present them as a summary: "While you were away: 3 likes, 2 comments, 1 share."
233 
234**3. Tier by priority.** Define three tiers of feedback intensity and assign every event type to a tier:
235 
236| Tier | Intensity | Feedback Type | Events |
237|------|-----------|--------------|--------|
238| **1 (High)** | Multi-signal, persistent | Banner + sound + haptic | Errors, destructive confirmations, payment success |
239| **2 (Medium)** | Single signal, temporary | Toast or inline text | Save success, status change, minor warning |
240| **3 (Low)** | Minimal, passive | Visual state change only | Hover, focus, toggle, minor selection |
241 
242**4. Respect context.** Reduce feedback when:
243- User is performing rapid sequential actions (bulk editing)
244- System is in background/minimized
245- User has indicated preference for fewer notifications
246 
247---
248 
249## Feedback Accessibility
250 
251Feedback must work for all users, including those who cannot see animations, hear sounds, or feel vibrations.
252 
253### Accessibility Requirements
254 
255| User Group | Feedback Adaptation |
256|-----------|---------------------|
257| **Screen reader users** | Use aria-live regions (polite for status, assertive for errors) to announce state changes |
258| **Low vision users** | Ensure color changes have sufficient contrast (3:1 minimum for state changes); do not rely on color alone |
259| **Motion-sensitive users** | Respect prefers-reduced-motion; replace animations with instant state changes |
260| **Deaf/hard of hearing users** | Never rely on audio as sole feedback channel; always pair with visual |
261| **Keyboard-only users** | Focus indicators must be visible on all interactive elements; state changes near focus |
262 
263### Accessibility Feedback Checklist
264 
265- [ ] Can every state change be perceived without color alone (shape, text, or icon accompanies color)?
266- [ ] Are error messages announced to screen readers via aria-live="assertive"?
267- [ ] Are success messages announced via aria-live="polite"?
268- [ ] Do animations respect prefers-reduced-motion media query?
269- [ ] Is all audio feedback accompanied by a visual equivalent?
270- [ ] Can keyboard users perceive which element has focus?
271- [ ] Do loading states have an accessible label ("Loading...", role="status")?
272- [ ] Are progress bars accessible (role="progressbar", aria-valuenow, aria-valuemin, aria-valuemax)?
273 
274---
275 
276## Feedback Design Checklist
277 
278- [ ] Does every interactive element provide immediate visual feedback on activation?
279- [ ] Is feedback proportional to event significance (small action = small feedback)?
280- [ ] For operations > 300ms, is there a loading indicator?
281- [ ] For operations > 10 seconds, is there a progress bar?
282- [ ] Do error messages explain what happened and how to fix it?
283- [ ] Is success feedback brief and non-blocking (does not require dismissal)?
284- [ ] Are animations under 500ms and interruptible?
285- [ ] Is audio feedback optional and disabled by default (except essential alerts)?
286- [ ] Does haptic feedback match system settings?
287- [ ] Are all feedback channels accessible (visual + ARIA + reduced-motion support)?
288 

Discussion

Alternatives

ImpeccableUse when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.Design & UI · Apache-2.0Apple designApple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading), reduced-motion, or the design foundations (feedback, spatial consistency, restraint) behind Apple-style interfaces.Design & UI · MITBuilding AnimationsBuild an animation from scratch, making the decisions in the order that determines whether it feels right — should it animate at all, what purpose, which tool, which properties, which curve and duration, how it interrupts, how it exits. Writes the implementation. Use when asked to animate something, add motion, make a component feel alive, or build a transition. For critiquing existing motion use review-animations; for auditing a whole codebase use improve-animations.Design & UI · MITBreakRenders a component you choose in every state and scenario on a temporary page and stress tests it.Design & UI · MIT