--- id: wiki-2026-0508-마이크로-인터랙션-micro-interactions title: 마이크로 인터랙션(Micro-interactions) category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Micro-interactions, 마이크로 인터랙션, UI 마이크로 애니메이션] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [frontend, ux, animation, interaction-design] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: typescript framework: react --- # 마이크로 인터랙션(Micro-interactions) ## 매 한 줄 > **"매 작은 반응이 매 신뢰를 만든다"**. 매 single-purpose UI feedback (clicked button squish, toggle slide, validation tick) 의 사용자 의도 confirm + 시스템 상태 communicate. Dan Saffer (2013)이 명명, 매 modern design system (Material 3, Apple HIG 2026)의 backbone. ## 매 핵심 ### 매 4단계 구조 (Saffer) - **Trigger**: user action (click, hover, scroll) or system event. - **Rules**: what happens (state machine). - **Feedback**: visual/audio/haptic response. - **Loops & Modes**: long-term behavior (meta-rules). ### 매 4가지 기능 - **Status communication** — loading spinner, progress bar. - **Feedback** — button press depression, form 검증 shake. - **Demonstrate result** — like 의 heart fill animation. - **Visualize state changes** — toggle on/off, theme switch. ### 매 응용 1. **Form validation** — inline feedback (real-time check). 2. **Loading states** — skeleton, spinner, progress. 3. **Notifications** — toast slide-in/out. 4. **Gestures** — swipe to delete (iOS Mail). 5. **Empty states** — illustration + CTA. ## 💻 패턴 ### 1. Button press feedback (Framer Motion) ```tsx import { motion } from 'framer-motion'; export function PressableButton({ children, onClick }: { children: React.ReactNode; onClick: () => void }) { return ( {children} ); } ``` ### 2. Toggle switch (state visualization) ```tsx import { motion } from 'framer-motion'; import { useState } from 'react'; export function Toggle() { const [on, setOn] = useState(false); return ( ); } ``` ### 3. Like heart burst (demonstrate result) ```tsx import { motion, AnimatePresence } from 'framer-motion'; export function LikeButton({ liked, onToggle }: { liked: boolean; onToggle: () => void }) { return ( ); } ``` ### 4. Toast notification (status) ```tsx import { motion, AnimatePresence } from 'framer-motion'; export function Toast({ message, show }: { message: string; show: boolean }) { return ( {show && ( {message} )} ); } ``` ### 5. Form validation inline shake ```tsx import { motion } from 'framer-motion'; export function ShakeInput({ error, ...props }: { error: boolean } & React.InputHTMLAttributes) { return ( ); } ``` ### 6. Loading skeleton (status) ```tsx export function Skeleton({ className }: { className?: string }) { return (
); } // usage: ``` ### 7. Reduced-motion respect ```css @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } } ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | 단순 hover/press | CSS transition 충분. | | State change (toggle, modal) | Framer Motion `layout` + spring. | | Complex sequence (onboarding) | Lottie (After Effects export) 또는 Rive. | | Performance-critical (60fps mobile) | Web Animations API + GPU-only props (transform, opacity). | | Accessibility | `prefers-reduced-motion` 매 항상 respect. | **기본값**: Framer Motion + spring 매 React 매 default. Tailwind animate utilities 매 simple cases. ## 🔗 Graph - 변형: [[Framer Motion]] - Adjacent: [[디자인 시스템]] · [[Web Animations API]] ## 🤖 LLM 활용 **언제**: state change confirmation, status communication, delight moments, error recovery. **언제 X**: 매 사용자 critical path 막는 long animation, accessibility 무시 의 flashy effects, 매 30fps 떨어지는 micro interaction. ## ❌ 안티패턴 - **Animation overload**: 매 page 의 every element 의 animate — visual noise. - **Slow durations**: >400ms 의 micro interaction — feels sluggish (sweet spot 100-300ms). - **Ignoring reduced-motion**: 매 vestibular disorder 사용자 unusable. - **Layout-triggering animation**: `width`/`height` animate — paint thrash. Use `transform: scale`. - **Decorative-only**: feedback 없이 매 just for show — 매 noise. ## 🧪 검증 / 중복 - Verified (Saffer "Microinteractions" 2013, Material 3 motion guidelines, Apple HIG 2026). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — full content with 4-stage structure + 7 Framer Motion patterns |