Guides

Practical write-ups from members — fundamentals through shipping.

FrontendIntermediate16 min

Accessible forms in Next.js

Labels, errors, and focus that work with keyboards and screen readers — no design debt.

By Jordan Lee · 2026-04-02

Start with semantics

Every input needs a visible <label> tied with htmlFor. Placeholder text is not a label.

Errors people can use

  • Associate error text with aria-describedby
  • Move focus to the first invalid field on submit
  • Keep error copy specific: what failed and how to fix it

Don't fight the browser

Native validation is a baseline. Layer custom messages on top — don't replace focus rings.