Review UI code for compliance with Vercel's web interface standards.
IssueRuleImages without dimensions<img> needs explicit width and height (prevents CLS)Font loading flashCritical fonts: <link rel="preload" as="font"> with font-display: swapLarge listsVirtualize lists >50 items ( content-visibility: auto)Layout reads in renderNo getBoundingClientRect, offsetHeight in render path
<img> needs explicit width and height (prevents CLS)loading="lazy"priority or fetchpriority="high"virtua, content-visibility: auto)getBoundingClientRect, offsetHeight, offsetWidth, scrollTop)<link rel="preconnect"> for CDN/asset domains<link rel="preload" as="font"> with font-display: swaparia-label<label> or aria-labelonKeyDown/ onKeyUp)<button> for actions, <a>/ <Link> for navigation (not <div onClick>)alt (or alt="" if decorative)focus-visible:ring-* or equivalentoutline-none / outline: none without focus replacement:focus-visible over :focus (avoid focus ring on click)prefers-reduced-motion (provide reduced variant or disable)transform/ opacity only (compositor-friendly)transition: all—list properties explicitlyautocomplete and meaningful nametype ( email, tel, url, number) and inputmodeonPaste + preventDefault)htmlFor or wrapping control)truncate, line-clamp-*, or break-wordsmin-w-0 to allow text truncationuser-scalable=no or maximum-scale=1 disabling zoomtransition: alloutline-none without focus-visible replacement.map() without virtualizationaria-label