Showing input error
Forms & Interaction Flows · 11 checks · 38 resources
The validation timing model for a single field, so the user is corrected but never interrupted.
Before you ship
- 01Keep the input in default state — check for errors only after the information has been entered
- 02Allow user to enter information — let the user type without interruption; do not assess as changes are made
- 03Signal error after loss of focus — assess the field once the user has clicked or tabbed to another element
- 04Return to default state upon reattempt — once the user focuses the field again, the error message disappears
- 05Tie the message to the field programmatically — aria-describedby and aria-invalid, so it is identified for everyone, not only sighted users (WCAG 3.3.1 Error Identification)
- 06Say how to fix it, not only what is wrong — "use at least 8 characters" beats "invalid password" (WCAG 3.3.3 Error Suggestion)
- 07Never signal by colour alone — pair colour with text and an icon
- 08Move focus to the first error on submit, and summarise the errors above long forms so the user is not hunting
- 09Announce errors that arrive asynchronously in a live region (WCAG 4.1.3 Status Messages)
- 10Preserve what the user typed — never clear a field because it failed validation
- 11Do not re-ask for information already given in the same flow (WCAG 3.3.7 Redundant Entry)
Resources that help you build this
- Apple Human Interface Guidelines · Apple’s official design guidance for iOS, iPadOS, macOS, watchOS, tvOS and visionOSDesign Systems & Brand GuidelinesS
- ARIA Authoring Practices Guide · W3C's 30 canonical widget patterns with keyboard maps and working HTML examplesDesign Systems & Brand GuidelinesS
- Ark UI · 49 headless components with one API across React, Vue, Solid and SvelteComponent LibrariesS
- Chakra UI · 114 accessible React components with a token-driven styling systemComponent LibrariesS
- Coss UI · Cal.com's design system: 60 Base UI primitives shipped as a shadcn registryComponent LibrariesS
- Headless UI · 16 unstyled, fully accessible React and Vue primitives from Tailwind LabsComponent LibrariesS
- HeroUI (formerly NextUI) · 71 React components on React Aria + Tailwind v4, with an MCP serverComponent LibrariesS
- Impeccable · Design vocabulary and anti-slop detector for AI coding agentsAgent Design ToolingS
- Intent UI · 80+ React Aria components with real ARIA semantics, MIT and copy-pasteComponent LibrariesS
- Mantine · 150+ styled React components, 70+ hooks, CSS modules, no runtime CSS-in-JSComponent LibrariesS
- Material Design 3 · Google's open design system: 39 components, tokens, and Compose/Web codeDesign Systems & Brand GuidelinesS
- MUI · React component suite: Material UI, MUI X data grid, charts and date pickersComponent LibrariesS
- Radix UI · Unstyled accessible React primitives, plus Themes, Colors and IconsComponent LibrariesS
- React Aria · Adobe's unstyled React primitives with ARIA, keyboard, i18n and touch behavior built inComponent LibrariesS
- shadcn/ui · 64 copy-in React components on Radix + Tailwind, installed by CLIComponent LibrariesS
- shadcn/ui (GitHub) · Source monorepo for shadcn/ui: components, CLI, registry schema, skillsComponent LibrariesS
- Untitled UI · Figma UI kit plus React Aria + Tailwind v4 component library with an MCP serverComponent LibrariesS
- UX Patterns for Devs · 92 UX patterns with accessibility rules, an MCP server and llms.txtDesign Systems & Brand GuidelinesS
- Ant Design · 73-component React library and design language for enterprise back-office appsComponent LibrariesA
- Base UI · 37 unstyled React components from the Radix, Floating UI and MUI teamsComponent LibrariesA
- Carbon Design System · IBM's open-source design system: 44 documented components across five frameworksDesign Systems & Brand GuidelinesA
- coss ui · Cal.com's Base UI + Tailwind v4 registry: 56 primitives and 500 particle variantsComponent LibrariesA
- Fluent 2 · Microsoft's design system: 47 web components plus Windows, iOS and Android kitsDesign Systems & Brand GuidelinesA
- Fluid Functionalism · shadcn registry of 23 components where motion carries state, not decorationComponent LibrariesA
- gluestack-ui · CLI-installed React Native component library built on NativeWind and Tailwind v4Component LibrariesA
- interior.dev · 54 MIT micro-interaction components for React, installable as a shadcn registryMotion & InteractionA
- Opensource UI · 154 free MIT React and Next.js components across 26 categories, copy-pasted from pages that serve the full TypeScript source in the HTMLComponent LibrariesA
- Osmo · Paid vault of 231 GSAP/Webflow interaction recipes plus a 100-button packMotion & InteractionA
- Shadcn Form Builder · Drag fields into a form, export shadcn + Zod code for four form librariesComponent LibrariesA
- Shark UI · 86 shadcn-style components built on Ark UI, installed through the shadcn CLIComponent LibrariesA
- Shopify Polaris · Shopify's admin design system, now shipped as framework-agnostic web componentsComponent LibrariesA
- Transitions.dev · 35 essential web-app transitions, packaged as an agent skillMotion & InteractionA
- Cuelume · 17 synthesized UI sounds via Web Audio, zero runtime depsMotion & InteractionB
- Park UI · 59 styled Ark UI components delivered by CLI, themed with Panda CSSComponent LibrariesB
- Sileo · React toast with gooey SVG morphing and spring physics, one-line APIComponent LibrariesB
- Tark UI · One-page showcase of 41 Ark UI components with 333 Tailwind-styled examplesComponent LibrariesB
- WDS Shadcn Registry · Five shadcn components for async actions, loading states and hard form inputsComponent LibrariesB
- Pando (Pluralsight Design System) · Pluralsight's design system documented in zeroheight; public code frozen at v0.7.1Design Systems & Brand GuidelinesC