Source: Vercel Web Interface Guidelines, curated to what matters most for daily-use work tools. Add their
AGENTS.mdversion to your product repo so agents apply these during generation, not as cleanup.
Interactions
- Keyboard works everywhere; follow WAI-ARIA patterns. Visible focus via
:focus-visible(A11Y-2). - Hit targets ≥ 24px desktop, 44px mobile; expand the hit area if the visual is smaller (A11Y-4).
- Input font size ≥ 16px on mobile (prevents iOS zoom). Never disable browser zoom or paste.
- URL as state: filters, tabs, pagination, expanded panels are deep-linkable; Back/Forward restores scroll.
- Optimistic updates where success is likely; on failure, explain and roll back or offer Undo.
- Links are links:
<a>/<Link>for navigation, never<button>or<div>, so Cmd-click works. - Buttons show loading state and keep their label; add show-delay (~200ms) and minimum visible time (~400ms) to avoid flicker.
Forms
- Every control has a label; activating the label focuses the control (A11Y-3).
- Enter submits. Don't block typing, don't block paste, don't pre-disable submit; let validation explain.
- Errors appear next to their fields; on submit, focus the first error (CNT-1 anatomy).
- Set
autocomplete, correcttype/inputmode; placeholders show example values and end with an ellipsis.
Performance
- Mutations complete in < 500ms perceived; show progress beyond that.
- No image-caused layout shift: explicit dimensions, reserved space. Preload critical fonts.
- Virtualise large lists; data tables and member lists get long.
- Tabular numbers (
font-variant-numeric: tabular-nums) wherever values are compared in columns.
Craft details
- Optical alignment over geometric when perception beats geometry; everything aligns with something.
- Nested radii: child ≤ parent, concentric. Interactions increase contrast (hover/active/focus above rest).
- Honour
prefers-reduced-motion(A11Y-5); animatetransform/opacityonly; nevertransition: all(MOT-1, SLP-8). - Curly quotes, real ellipsis character, non-breaking spaces in glued terms ("Q3 report").