When to Use
Primary keywords: UX, feel, delight, polish, feedback, animation timing, microinteraction,
psychology, engagement, reward, streak, confetti, confetti burst, transition, splash, loading,
button feel, haptic, bounce, ease, flow state, retention
Common combos:
- "Make the correct-answer feel more satisfying" → this skill +
animation/SKILL.md
- "Why does the streak screen feel flat?" → this skill +
ui-design/SKILL.md
- "Add delight to the loading screen" → this skill +
animation/SKILL.md
Core Principle (memorize this)
Motion serves cognition, not decoration.
Every animation must do at least one of: communicate state, reinforce meaning,
reduce cognitive load, or build emotional connection. If it does none of these, cut it.
— NNGroup, Apple HIG, Laws of UX (combined consensus)
Psychology Laws Applied to QuizVerse
1 · Doherty Threshold — "Under 400ms or users disengage"
- Rule: Feedback must arrive within 400ms of user action.
- QuizVerse application:
- Button tap → visual response ≤ 100ms (scale punch or highlight)
- Answer submit → result reveal ≤ 300ms
- Screen transition → begin within 150ms of gesture/tap
- Pattern: If real processing takes >400ms, start a skeleton/shimmer immediately; never show a blank screen.
2 · Peak-End Rule — "Only the peak and ending are remembered"
- Rule: Users judge the entire experience by its most intense moment and how it ended.
- QuizVerse application:
- Peak: Correct streak milestone (3, 5, 7…) → must have a premium animation burst
- Peak: Wrong answer on a long streak → shake + audio cue, but recover fast
- End: Session recap screen is the most important screen for retention — invest here
- End: Never end on an error. Always end on an encouraging forward hook.
3 · Zeigarnik Effect — "Uncompleted tasks stay top-of-mind"
- Rule: Interrupted or incomplete tasks are remembered 2× better than completed ones.
- QuizVerse application:
- Show partial progress bars on the home screen (not 0%, not 100%)
- "You're on question 4 of 10" during quiz keeps users in the loop
- Daily streak badge showing "2 of 3 days complete" is more motivating than "Start"
4 · Goal-Gradient Effect — "Effort accelerates near the finish line"
- Rule: People speed up and engage more as they approach a goal.
- QuizVerse application:
- Progress bar should visually accelerate (ease-in-back) near 100%
- At 80% completion, increase positive reinforcement frequency
- Final question of a quiz: more dramatic reveal animation
5 · Aesthetic-Usability Effect — "Beautiful = perceived as easier"
- Rule: Aesthetically polished UI is perceived as more usable, even if function is identical.
- QuizVerse application:
- Polish the 3 highest-traffic screens first: Home, Quiz, Recap
- Consistent shadow depth, corner radius (16dp), and color palette builds trust
- Small details (smooth easing, micro-bounce) reduce perceived difficulty of hard questions
6 · Von Restorff Effect — "The different thing is remembered"
- Rule: The item that stands out from a group is most memorable.
- QuizVerse application:
- Correct answer highlight: different color + scale, not just color alone
- Streak milestone: unique animation that doesn't repeat for lower combos
- Wrong answer: distinct shake — never reuse the correct-answer style
7 · Miller's Law — "7 ± 2 items in working memory"
- Rule: Cognitive overload above ~7 simultaneous elements.
- QuizVerse application:
- Quiz screen: max 4 answer choices, never 6+
- Recap screen: max 3 primary stats visible without scroll
- Settings: chunk into max 5 groups
8 · Hick's Law — "More choices = longer decisions"
- Rule: Decision time grows logarithmically with number of options.
- QuizVerse application:
- Mode selection: default pre-selected, not equal options
- Category grid: 6 visible tiles max without scroll
- Paywall: single highlighted "Best Value" tier, not 5 equal tiers
Motion Principles (Apple HIG + NNGroup synthesis)
The 5 Legitimate Uses of Animation
| Use |
Description |
QuizVerse Example |
| 1. Feedback |
Confirm action was received |
Button scale-punch on tap |
| 2. State Change |
Show mode/status transition |
Timer turns red when < 5s |
| 3. Spatial Metaphor |
Orient user in hierarchy |
Slide right = go deeper |
| 4. Signifier |
Teach gesture affordance |
Swipe hint bounce on cards |
| 5. Emotional Peak |
Brand moment at peak/end |
Confetti on 5-streak |
Never animate just to fill time. Loading spinners without content skeleton = bad UX.
Timing Standards (from Apple HIG + 60fps.design patterns)
| Animation Type |
Duration |
Easing |
| Button tap response |
80–120ms |
OutQuad |
| Correct/wrong answer reveal |
200–300ms |
OutBack (correct) / OutQuad (wrong) |
| Screen slide transition |
300–400ms |
OutCubic |
| Modal sheet appear |
350–450ms |
OutBack |
| Confetti burst |
600–900ms |
OutQuint (particles) |
| Score count-up |
800–1200ms |
OutExpo |
| Streak milestone |
400–600ms |
OutElastic |
| Timer pulse (< 5s) |
500ms loop |
InOutSine |
| Loading skeleton shimmer |
1200ms loop |
InOutSine |
Easing Cheat Sheet (DOTween names)
Ease.OutBack → spring-into-place (rewards, confirmations)
Ease.OutElastic → rubber-band bounce (streak, milestones)
Ease.OutCubic → smooth, confident (screen transitions)
Ease.OutExpo → fast-start, graceful-stop (score counter)
Ease.InOutSine → breathing/looping motion (timers, shimmers)
Ease.OutQuad → neutral utility (errors, dismissals)
Anti-Patterns (never do these)
- Looping ambient animations on main screens — peripheral motion = distraction (NNGroup)
- Animation blocking user input — never lock UI waiting for an animation to complete
- Same animation for correct AND wrong — violates Von Restorff, trains users to ignore both
- Duration > 600ms for feedback animations — crosses from response into wait (Apple HIG)
- Animating >3 elements simultaneously — attentional competition (NNGroup: Hipmunk example)
- Identical milestone animations — kills anticipation (Goal-Gradient effect)
Microinteraction Patterns (NNGroup framework)
Every microinteraction = Trigger → Feedback pair.
If there is no trigger, it is not a microinteraction (e.g. a static GIF is decoration, not UX).
Must-Have Microinteractions for QuizVerse
| Trigger |
Feedback |
Priority |
| Answer button tap |
Scale-punch 0.92→1.05 + highlight ring |
P0 |
| Correct answer |
Green flash + checkmark scale-in + sound |
P0 |
| Wrong answer |
Red flash + horizontal shake (6px, 3 cycles) + sound |
P0 |
| Timer reaching 5s |
Color change (amber→red) + subtle pulse animation |
P0 |
| Streak increment |
Badge scale bounce + number morph tween |
P0 |
| Session complete |
Full-screen burst + score count-up |
P1 |
| Daily goal met |
Confetti + streak fire animation |
P1 |
| Loading state |
Skeleton shimmer (not spinner) |
P1 |
| Achievement unlock |
Slide-up toast + icon scale-in |
P1 |
| Paywall close |
Gentle slide-down (not abrupt pop) |
P2 |
Microinteraction Quality Checklist
QuizVerse Screen-by-Screen UX Notes
Splash / Loading
- Show app icon scale-in (300ms,
OutBack) immediately — never blank screen
- Skeleton shimmer behind real content (not spinner)
- If load takes >1.5s: show progress bar (Doherty: "progress bars make waits tolerable")
Home Screen
- Streak counter must be visible above fold → Zeigarnik hook
- Progress ring partially filled, not 0% → Goal-Gradient pull
- No looping ambient animations → peripheral distraction (Apple HIG)
Quiz Screen
- 4 answer choices max (Miller's Law)
- Answer tap → immediate scale-punch before server response (optimistic UI)
- Correct: OutBack scale + green overlay (200ms)
- Wrong: shake + red overlay + correct answer revealed with fade-in (300ms)
- Timer: color-gradient transition from green → amber → red (not discrete steps)
Recap / Results
- This is the Peak-End screen — highest UX investment priority
- Score count-up animation (800ms,
OutExpo)
- Confetti burst for >70% correct (600ms, then dissipates — not looping)
- 3 stats visible (score, time, streak) — not 8 stats
- CTA must be prominent and single ("Play Again" / "Share") — Hick's Law
Streak Screen
- Use escalating animation intensity at 3→5→7→10 (Goal-Gradient)
- Fire icon scale-bounce with
OutElastic for milestone
- Show "2 away from a new record" — Zeigarnik incomplete-task pull
Reference Files (load only if needed)
- Psychology laws deep-dive:
references/psychology-laws.md
- Motion principles full spec:
references/motion-principles.md
- Microinteraction catalog:
references/microinteractions.md
- QuizVerse screen patterns:
references/quiz-patterns.md
1---2name: ivx-qv-ux-psychology3description: Expert in UX psychology, motion design, and microinteraction patterns for QuizVerse. Grounds every design decision in peer-reviewed research: Laws of UX, Apple HIG, NNGroup, and 60fps best-in-class mobile patterns. Use when "UX, feel, delight, polish, feedback, animation timing, microinteraction, psychology, engagement, reward, streak, confetti, transition, splash, loading, button feel" is mentioned.4---56## When to Use78**Primary keywords:** UX, feel, delight, polish, feedback, animation timing, microinteraction,9psychology, engagement, reward, streak, confetti, confetti burst, transition, splash, loading,10button feel, haptic, bounce, ease, flow state, retention1112**Common combos:**13- "Make the correct-answer feel more satisfying" → this skill + `animation/SKILL.md`14- "Why does the streak screen feel flat?" → this skill + `ui-design/SKILL.md`15- "Add delight to the loading screen" → this skill + `animation/SKILL.md`1617---1819## Core Principle (memorize this)2021> **Motion serves cognition, not decoration.**22> Every animation must do at least one of: communicate state, reinforce meaning,23> reduce cognitive load, or build emotional connection. If it does none of these, cut it.24> — NNGroup, Apple HIG, Laws of UX (combined consensus)2526---2728## Psychology Laws Applied to QuizVerse2930### 1 · Doherty Threshold — "Under 400ms or users disengage"31- **Rule:** Feedback must arrive within **400ms** of user action.32- **QuizVerse application:**33 - Button tap → visual response ≤ 100ms (scale punch or highlight)34 - Answer submit → result reveal ≤ 300ms35 - Screen transition → begin within 150ms of gesture/tap36- **Pattern:** If real processing takes >400ms, start a skeleton/shimmer immediately; never show a blank screen.3738### 2 · Peak-End Rule — "Only the peak and ending are remembered"39- **Rule:** Users judge the entire experience by its most intense moment and how it ended.40- **QuizVerse application:**41 - **Peak:** Correct streak milestone (3, 5, 7…) → must have a premium animation burst42 - **Peak:** Wrong answer on a long streak → shake + audio cue, but recover fast43 - **End:** Session recap screen is the most important screen for retention — invest here44 - **End:** Never end on an error. Always end on an encouraging forward hook.4546### 3 · Zeigarnik Effect — "Uncompleted tasks stay top-of-mind"47- **Rule:** Interrupted or incomplete tasks are remembered 2× better than completed ones.48- **QuizVerse application:**49 - Show partial progress bars on the home screen (not 0%, not 100%)50 - "You're on question 4 of 10" during quiz keeps users in the loop51 - Daily streak badge showing "2 of 3 days complete" is more motivating than "Start"5253### 4 · Goal-Gradient Effect — "Effort accelerates near the finish line"54- **Rule:** People speed up and engage more as they approach a goal.55- **QuizVerse application:**56 - Progress bar should visually accelerate (ease-in-back) near 100%57 - At 80% completion, increase positive reinforcement frequency58 - Final question of a quiz: more dramatic reveal animation5960### 5 · Aesthetic-Usability Effect — "Beautiful = perceived as easier"61- **Rule:** Aesthetically polished UI is perceived as more usable, even if function is identical.62- **QuizVerse application:**63 - Polish the 3 highest-traffic screens first: Home, Quiz, Recap64 - Consistent shadow depth, corner radius (16dp), and color palette builds trust65 - Small details (smooth easing, micro-bounce) reduce perceived difficulty of hard questions6667### 6 · Von Restorff Effect — "The different thing is remembered"68- **Rule:** The item that stands out from a group is most memorable.69- **QuizVerse application:**70 - Correct answer highlight: different color + scale, not just color alone71 - Streak milestone: unique animation that doesn't repeat for lower combos72 - Wrong answer: distinct shake — never reuse the correct-answer style7374### 7 · Miller's Law — "7 ± 2 items in working memory"75- **Rule:** Cognitive overload above ~7 simultaneous elements.76- **QuizVerse application:**77 - Quiz screen: max 4 answer choices, never 6+78 - Recap screen: max 3 primary stats visible without scroll79 - Settings: chunk into max 5 groups8081### 8 · Hick's Law — "More choices = longer decisions"82- **Rule:** Decision time grows logarithmically with number of options.83- **QuizVerse application:**84 - Mode selection: default pre-selected, not equal options85 - Category grid: 6 visible tiles max without scroll86 - Paywall: single highlighted "Best Value" tier, not 5 equal tiers8788---8990## Motion Principles (Apple HIG + NNGroup synthesis)9192### The 5 Legitimate Uses of Animation9394| Use | Description | QuizVerse Example |95|-----|-------------|-------------------|96| **1. Feedback** | Confirm action was received | Button scale-punch on tap |97| **2. State Change** | Show mode/status transition | Timer turns red when < 5s |98| **3. Spatial Metaphor** | Orient user in hierarchy | Slide right = go deeper |99| **4. Signifier** | Teach gesture affordance | Swipe hint bounce on cards |100| **5. Emotional Peak** | Brand moment at peak/end | Confetti on 5-streak |101102> **Never animate just to fill time.** Loading spinners without content skeleton = bad UX.103104### Timing Standards (from Apple HIG + 60fps.design patterns)105106| Animation Type | Duration | Easing |107|----------------|----------|--------|108| Button tap response | 80–120ms | `OutQuad` |109| Correct/wrong answer reveal | 200–300ms | `OutBack` (correct) / `OutQuad` (wrong) |110| Screen slide transition | 300–400ms | `OutCubic` |111| Modal sheet appear | 350–450ms | `OutBack` |112| Confetti burst | 600–900ms | `OutQuint` (particles) |113| Score count-up | 800–1200ms | `OutExpo` |114| Streak milestone | 400–600ms | `OutElastic` |115| Timer pulse (< 5s) | 500ms loop | `InOutSine` |116| Loading skeleton shimmer | 1200ms loop | `InOutSine` |117118### Easing Cheat Sheet (DOTween names)119120```121Ease.OutBack → spring-into-place (rewards, confirmations)122Ease.OutElastic → rubber-band bounce (streak, milestones)123Ease.OutCubic → smooth, confident (screen transitions)124Ease.OutExpo → fast-start, graceful-stop (score counter)125Ease.InOutSine → breathing/looping motion (timers, shimmers)126Ease.OutQuad → neutral utility (errors, dismissals)127```128129### Anti-Patterns (never do these)130131- **Looping ambient animations on main screens** — peripheral motion = distraction (NNGroup)132- **Animation blocking user input** — never lock UI waiting for an animation to complete133- **Same animation for correct AND wrong** — violates Von Restorff, trains users to ignore both134- **Duration > 600ms for feedback animations** — crosses from response into wait (Apple HIG)135- **Animating >3 elements simultaneously** — attentional competition (NNGroup: Hipmunk example)136- **Identical milestone animations** — kills anticipation (Goal-Gradient effect)137138---139140## Microinteraction Patterns (NNGroup framework)141142> Every microinteraction = **Trigger → Feedback** pair.143> If there is no trigger, it is not a microinteraction (e.g. a static GIF is decoration, not UX).144145### Must-Have Microinteractions for QuizVerse146147| Trigger | Feedback | Priority |148|---------|----------|----------|149| Answer button tap | Scale-punch 0.92→1.05 + highlight ring | P0 |150| Correct answer | Green flash + checkmark scale-in + sound | P0 |151| Wrong answer | Red flash + horizontal shake (6px, 3 cycles) + sound | P0 |152| Timer reaching 5s | Color change (amber→red) + subtle pulse animation | P0 |153| Streak increment | Badge scale bounce + number morph tween | P0 |154| Session complete | Full-screen burst + score count-up | P1 |155| Daily goal met | Confetti + streak fire animation | P1 |156| Loading state | Skeleton shimmer (not spinner) | P1 |157| Achievement unlock | Slide-up toast + icon scale-in | P1 |158| Paywall close | Gentle slide-down (not abrupt pop) | P2 |159160### Microinteraction Quality Checklist161162- [ ] Feedback starts within 100ms of trigger163- [ ] Duration ≤ 400ms (unless it is a deliberate peak-moment reward)164- [ ] Sound paired with animation (not animation alone)165- [ ] Error states use distinct animation from success states166- [ ] Animation interruptible — user can tap through without waiting167168---169170## QuizVerse Screen-by-Screen UX Notes171172### Splash / Loading173- Show app icon scale-in (300ms, `OutBack`) immediately — never blank screen174- Skeleton shimmer behind real content (not spinner)175- If load takes >1.5s: show progress bar (Doherty: "progress bars make waits tolerable")176177### Home Screen178- Streak counter must be visible above fold → Zeigarnik hook179- Progress ring partially filled, not 0% → Goal-Gradient pull180- No looping ambient animations → peripheral distraction (Apple HIG)181182### Quiz Screen183- 4 answer choices max (Miller's Law)184- Answer tap → immediate scale-punch before server response (optimistic UI)185- Correct: OutBack scale + green overlay (200ms)186- Wrong: shake + red overlay + correct answer revealed with fade-in (300ms)187- Timer: color-gradient transition from green → amber → red (not discrete steps)188189### Recap / Results190- **This is the Peak-End screen** — highest UX investment priority191- Score count-up animation (800ms, `OutExpo`)192- Confetti burst for >70% correct (600ms, then dissipates — not looping)193- 3 stats visible (score, time, streak) — not 8 stats194- CTA must be prominent and single ("Play Again" / "Share") — Hick's Law195196### Streak Screen197- Use escalating animation intensity at 3→5→7→10 (Goal-Gradient)198- Fire icon scale-bounce with `OutElastic` for milestone199- Show "2 away from a new record" — Zeigarnik incomplete-task pull200201---202203## Reference Files (load only if needed)204205- Psychology laws deep-dive: `references/psychology-laws.md`206- Motion principles full spec: `references/motion-principles.md`207- Microinteraction catalog: `references/microinteractions.md`208- QuizVerse screen patterns: `references/quiz-patterns.md`