High-Fidelity Prototyping
Detailed, interactive representations that closely mirror the final product in appearance, content, and behavior. Hi-fi prototypes validate visual design, interaction patterns, and edge cases before development.
When to Use
Use high-fidelity prototyping when:
- Core concepts are validated through lo-fi testing
- Stakeholder buy-in requires realistic visualization
- Testing complex micro-interactions or animations
- Preparing specifications for developer handoff
- Validating design-system component usage in context
- Conducting usability testing that requires realistic fidelity
Workflow Decision Tree
Ready to go hi-fi?
├── Lo-fi flow validated? → YES: Proceed to hi-fi
│ └── NO: Go back to lo-fi prototyping
├── Design system exists? → Apply existing components
│ └── NO: Define visual foundations first (color, type, spacing)
├── Testing interactions? → Build interactive prototype
├── Need stakeholder sign-off? → Create polished static mockups
└── Developer handoff? → Annotate specs + interactive reference
Hi-Fi Prototype Layers
1. Visual Foundation
Establish the design language before building screens:
- Color system: Primary, secondary, neutral, semantic (error, success, warning)
- Typography scale: Display, heading, body, caption with defined sizes and weights
- Spacing system: Consistent scale (4px base: 4, 8, 12, 16, 24, 32, 48, 64)
- Elevation: Shadow/border hierarchy for depth
- Border radius: Consistent rounding tokens
2. Component Library
Map wireframe elements to production components:
| Wireframe Element |
Hi-Fi Component |
States Required |
| Box with label |
Card |
default, hover, loading, empty |
| Rectangle button |
Button |
default, hover, active, disabled, loading |
| Text line |
Input |
empty, filled, focused, error, disabled |
| Dropdown indicator |
Select/Combobox |
closed, open, selected, error |
| X-box image |
Image with loading |
loading, loaded, error, placeholder |
3. Interaction States
Every interactive element needs these states documented:
Default → Hover → Active/Pressed → Focused
→ Disabled
→ Loading
→ Error
→ Success
4. Content Strategy
- Use real or realistic content (never Lorem Ipsum in hi-fi)
- Test with edge cases: very long names, empty states, single items, hundreds of items
- Include error messages, empty states, and loading states as screens
Building Hi-Fi Prototypes in Code
Design Token Setup
:root {
/* Color tokens */
--color-primary: #1a1a2e;
--color-accent: #e94560;
--color-surface: #ffffff;
--color-muted: #f8f9fa;
--color-border: #e2e8f0;
--color-text: #1a1a2e;
--color-text-muted: #64748b;
/* Typography */
--font-display: 'Playfair Display', serif;
--font-body: 'Inter', sans-serif;
/* Spacing */
--space-1: 0.25rem;
--space-2: 0.5rem;
--space-3: 0.75rem;
--space-4: 1rem;
--space-6: 1.5rem;
--space-8: 2rem;
--space-12: 3rem;
--space-16: 4rem;
/* Transitions */
--transition-fast: 150ms ease;
--transition-normal: 250ms ease;
--transition-slow: 400ms ease;
}
Component Pattern with States
interface ButtonProps {
variant: 'primary' | 'secondary' | 'ghost';
size: 'sm' | 'md' | 'lg';
loading?: boolean;
disabled?: boolean;
children: React.ReactNode;
onClick?: () => void;
}
function PrototypeButton({ variant, size, loading, disabled, children, onClick }: ButtonProps) {
return (
<button
className={cn(
'inline-flex items-center justify-center rounded-md font-medium transition-colors',
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',
variants[variant],
sizes[size],
(loading || disabled) && 'opacity-50 pointer-events-none'
)}
disabled={disabled || loading}
>
{loading && <Spinner className="mr-2 h-4 w-4 animate-spin" />}
{children}
</button>
);
}
Screen Documentation Pattern
/**
* Screen: Event Detail
* Flow: Dashboard > Events > Event Detail
* States: loading, populated, empty-sections, error
* Breakpoints: mobile (375), tablet (768), desktop (1280)
* Interactions:
* - Tab navigation between sections
* - Inline editing of event details
* - Image gallery with lightbox
* - Guest list filtering and search
*/
Testing with Hi-Fi Prototypes
What Hi-Fi Testing Reveals
- Visual design effectiveness and brand alignment
- Micro-interaction clarity and delight
- Content readability and scannability
- Component usability in realistic context
- Responsive behavior across breakpoints
- Accessibility issues (color contrast, focus states, screen reader flow)
Testing Checklist
- Task completion: Can users complete key tasks without help?
- Visual hierarchy: Do users notice the right things first?
- Error recovery: Can users recover from mistakes?
- Edge cases: How do screens handle empty, overflow, or error states?
- Consistency: Do similar patterns behave the same way?
- Performance perception: Do loading states feel appropriate?
Usability Metrics to Track
- Task success rate
- Time on task
- Error rate per task
- System Usability Scale (SUS) score
- First-click accuracy
Design Handoff Specifications
When the prototype is validated, document for developers:
Per-Screen Spec
- Layout grid and spacing measurements
- Component variants used and their props
- Responsive breakpoint behavior
- Animation/transition specifications (duration, easing, trigger)
- Data dependencies and API mapping
Per-Component Spec
- All visual states with screenshots
- Interaction behavior description
- Accessibility requirements (ARIA roles, keyboard nav)
- Content constraints (min/max length, required fields)
Fidelity Progression Summary
| Aspect |
Lo-Fi |
Hi-Fi |
| Visual detail |
Grayscale, rough |
Full color, polished |
| Content |
Labels, short text |
Real/realistic content |
| Interactions |
Click-through only |
Micro-interactions, animations |
| States |
Happy path |
All states (error, loading, empty) |
| Responsiveness |
Single breakpoint |
All target breakpoints |
| Testing focus |
Structure, flow |
Usability, visual, interaction |
| Iteration speed |
Minutes |
Hours |
| Best for |
Exploration |
Validation, handoff |
References
references/
interaction-states.md - Complete guide to documenting interaction states
handoff-checklist.md - Developer handoff specification checklist
testing-metrics.md - Usability metrics and measurement guide
Resources
- Remove placeholder files in
scripts/ and assets/ if not needed
1---2name: high-fidelity-prototyping3description: Guide high-fidelity prototyping workflows for production-ready UI/UX design. Use when the user needs to create detailed interactive prototypes, pixel-perfect mockups, design-system-integrated screens, or pre-development specifications. Covers visual design, interaction states, design handoff, and usability validation.4metadata:5 tags: prototyping, hifi, design, interaction, mockup, design-system6 source: Figma Resource Library7---89# High-Fidelity Prototyping1011Detailed, interactive representations that closely mirror the final product in appearance, content, and behavior. Hi-fi prototypes validate visual design, interaction patterns, and edge cases before development.1213## When to Use1415Use high-fidelity prototyping when:16- Core concepts are validated through lo-fi testing17- Stakeholder buy-in requires realistic visualization18- Testing complex micro-interactions or animations19- Preparing specifications for developer handoff20- Validating design-system component usage in context21- Conducting usability testing that requires realistic fidelity2223## Workflow Decision Tree2425```26Ready to go hi-fi?27├── Lo-fi flow validated? → YES: Proceed to hi-fi28│ └── NO: Go back to lo-fi prototyping29├── Design system exists? → Apply existing components30│ └── NO: Define visual foundations first (color, type, spacing)31├── Testing interactions? → Build interactive prototype32├── Need stakeholder sign-off? → Create polished static mockups33└── Developer handoff? → Annotate specs + interactive reference34```3536## Hi-Fi Prototype Layers3738### 1. Visual Foundation39Establish the design language before building screens:4041- **Color system**: Primary, secondary, neutral, semantic (error, success, warning)42- **Typography scale**: Display, heading, body, caption with defined sizes and weights43- **Spacing system**: Consistent scale (4px base: 4, 8, 12, 16, 24, 32, 48, 64)44- **Elevation**: Shadow/border hierarchy for depth45- **Border radius**: Consistent rounding tokens4647### 2. Component Library48Map wireframe elements to production components:4950| Wireframe Element | Hi-Fi Component | States Required |51|---|---|---|52| Box with label | Card | default, hover, loading, empty |53| Rectangle button | Button | default, hover, active, disabled, loading |54| Text line | Input | empty, filled, focused, error, disabled |55| Dropdown indicator | Select/Combobox | closed, open, selected, error |56| X-box image | Image with loading | loading, loaded, error, placeholder |5758### 3. Interaction States59Every interactive element needs these states documented:6061```62Default → Hover → Active/Pressed → Focused63 → Disabled64 → Loading65 → Error66 → Success67```6869### 4. Content Strategy70- Use real or realistic content (never Lorem Ipsum in hi-fi)71- Test with edge cases: very long names, empty states, single items, hundreds of items72- Include error messages, empty states, and loading states as screens7374## Building Hi-Fi Prototypes in Code7576### Design Token Setup77```css78:root {79 /* Color tokens */80 --color-primary: #1a1a2e;81 --color-accent: #e94560;82 --color-surface: #ffffff;83 --color-muted: #f8f9fa;84 --color-border: #e2e8f0;85 --color-text: #1a1a2e;86 --color-text-muted: #64748b;8788 /* Typography */89 --font-display: 'Playfair Display', serif;90 --font-body: 'Inter', sans-serif;9192 /* Spacing */93 --space-1: 0.25rem;94 --space-2: 0.5rem;95 --space-3: 0.75rem;96 --space-4: 1rem;97 --space-6: 1.5rem;98 --space-8: 2rem;99 --space-12: 3rem;100 --space-16: 4rem;101102 /* Transitions */103 --transition-fast: 150ms ease;104 --transition-normal: 250ms ease;105 --transition-slow: 400ms ease;106}107```108109### Component Pattern with States110```tsx111interface ButtonProps {112 variant: 'primary' | 'secondary' | 'ghost';113 size: 'sm' | 'md' | 'lg';114 loading?: boolean;115 disabled?: boolean;116 children: React.ReactNode;117 onClick?: () => void;118}119120function PrototypeButton({ variant, size, loading, disabled, children, onClick }: ButtonProps) {121 return (122 <button123 className={cn(124 'inline-flex items-center justify-center rounded-md font-medium transition-colors',125 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',126 variants[variant],127 sizes[size],128 (loading || disabled) && 'opacity-50 pointer-events-none'129 )}130 disabled={disabled || loading}131 onClick={onClick}132 >133 {loading && <Spinner className="mr-2 h-4 w-4 animate-spin" />}134 {children}135 </button>136 );137}138```139140### Screen Documentation Pattern141```tsx142/**143 * Screen: Event Detail144 * Flow: Dashboard > Events > Event Detail145 * States: loading, populated, empty-sections, error146 * Breakpoints: mobile (375), tablet (768), desktop (1280)147 * Interactions:148 * - Tab navigation between sections149 * - Inline editing of event details150 * - Image gallery with lightbox151 * - Guest list filtering and search152 */153```154155## Testing with Hi-Fi Prototypes156157### What Hi-Fi Testing Reveals158- Visual design effectiveness and brand alignment159- Micro-interaction clarity and delight160- Content readability and scannability161- Component usability in realistic context162- Responsive behavior across breakpoints163- Accessibility issues (color contrast, focus states, screen reader flow)164165### Testing Checklist1661. **Task completion**: Can users complete key tasks without help?1672. **Visual hierarchy**: Do users notice the right things first?1683. **Error recovery**: Can users recover from mistakes?1694. **Edge cases**: How do screens handle empty, overflow, or error states?1705. **Consistency**: Do similar patterns behave the same way?1716. **Performance perception**: Do loading states feel appropriate?172173### Usability Metrics to Track174- Task success rate175- Time on task176- Error rate per task177- System Usability Scale (SUS) score178- First-click accuracy179180## Design Handoff Specifications181182When the prototype is validated, document for developers:183184### Per-Screen Spec185- Layout grid and spacing measurements186- Component variants used and their props187- Responsive breakpoint behavior188- Animation/transition specifications (duration, easing, trigger)189- Data dependencies and API mapping190191### Per-Component Spec192- All visual states with screenshots193- Interaction behavior description194- Accessibility requirements (ARIA roles, keyboard nav)195- Content constraints (min/max length, required fields)196197## Fidelity Progression Summary198199| Aspect | Lo-Fi | Hi-Fi |200|---|---|---|201| Visual detail | Grayscale, rough | Full color, polished |202| Content | Labels, short text | Real/realistic content |203| Interactions | Click-through only | Micro-interactions, animations |204| States | Happy path | All states (error, loading, empty) |205| Responsiveness | Single breakpoint | All target breakpoints |206| Testing focus | Structure, flow | Usability, visual, interaction |207| Iteration speed | Minutes | Hours |208| Best for | Exploration | Validation, handoff |209210## References211212### references/213- `interaction-states.md` - Complete guide to documenting interaction states214- `handoff-checklist.md` - Developer handoff specification checklist215- `testing-metrics.md` - Usability metrics and measurement guide216217### Resources218- Remove placeholder files in `scripts/` and `assets/` if not needed