Real form examples with schema validation, inline animated errors, and asynchronous submit state.
pnpm install react-hook-form zod @hookform/resolversconst schema = z.object({
email: z.email("Enter a valid work email."),
teamSize: z.string().min(1, "Choose a team size."),
})
const form = useForm({
resolver: zodResolver(schema),
defaultValues: { email: "", teamSize: "" },
})Native-shaped controls accept register(...) directly. Use Controller for Select, PasswordInput, or Checkbox when their controlled value API is the clearest fit.
Install Matos UI
Choose a package manager and copy one command for every component.