Forms & Validation (React Hook Form + Zod) (Frontend Standard)
This document defines the standard approach to forms and validation.
Standard libraries
- React Hook Form for form state and submission
- Zod for runtime validation
Where schemas live
- Feature schemas live in:
src/features/<feature>/schemas.ts
Rules (required)
- Validate on submit at minimum; validate on change/blur when UX requires it.
- Never trust client validation as security. Backend validation is still required.
- Standardize error rendering in shared
src/components/fields/*components.
Accessibility (required)
Form fields must:
- have an associated
<label>(oraria-labelwhen necessary) - expose validation errors in an accessible way
- preserve keyboard navigation