Web Interface Guidelines

Interfaces succeed because of hundreds of choices. This is a living, non-exhaustive list of those decisions. Most guidelines are framework-agnostic, some specific to React/Next.js. Feedback is welcome.

Interactions

Animations

  • Honor prefers-reduced-motion. Provide a reduced-motion variant.
  • Implementation preference. Prefer CSS, avoid main-thread JS-driven animations when possible.
    • Preference: CSS > Web Animations API > JavaScript libraries e.g., motion.
  • Compositor-friendly. Prioritize GPU-accelerated properties (transform, opacity) & avoid properties that trigger reflows/repaints (width, height, top, left).
  • Necessity check. Only animate when it clarifies cause & effect or when it adds deliberate delight e.g., the northern lights.
  • Easing fits the subject. Choose easing based on what changes (size, distance, trigger).
  • Interruptible. Animations are cancelable by user input.
  • Input-driven. Avoid autoplay; animate in response to actions.
  • Correct transform origin. Anchor motion to where it “physically” starts.
  • Never transition: all. Explicitly list only the properties you intend to animate (typically opacity, transform). all can unintentionally animate layout-affecting properties causing jank.
  • Cross-browser SVG transforms. Apply CSS transforms/animations to <g> wrappers & set transform-box: fill-box; transform-origin: center;. Safari historically had bugs with transform-origin on SVG & grouping avoids origin miscalculation.

Layout

Content

Forms

Performance

Design

Vercel-specific

These preferences reflect Vercel’s brand & product choices. They aren’t universal guidelines.

Copywriting

Integrate with Agents

An AGENTS.md file provides guidance for agents. Use this AGENTS.md with your agents to ensure your interfaces follow these guidelines. We recommend auditing all generated interfaces.

Join Vercel

We’re hiring people who live for these details. Check out the job postings.


Thanks to Adam, Jimmy, Jonnie, Lochie, Paco, Joe, & Austin for feedback.