Skip to content

Form

Building forms with React Hook Form and Zod.

This is your public display name.

Forms are tricky. They are one of the most common things you’ll build in a web application, but also one of the most complex.

Well-designed HTML forms are:

  • Well-structured and semantically correct.
  • Easy to use and navigate (keyboard).
  • Accessible with ARIA attributes and proper labels.
  • Has support for client and server side validation.
  • Well-styled and consistent with the rest of the application.

In this guide, we will take a look at building forms with react-hook-form and zod. We’re going to use a <Form> component to compose accessible forms using Radix UI components.

Features

The <Form /> component is a wrapper around the react-hook-form library. It provides a few things:

  • Composable components for building forms.
  • A <Form.Field /> component for building controlled form fields.
  • Form validation using zod.
  • Handles accessibility and error messages.
  • Uses useId() for generating unique IDs.
  • Applies the correct aria attributes to form fields based on states.
  • Built to work with all Radix UI components.
  • Bring your own schema library. We use zod but you can use anything you want.
  • You have full control over the markup and styling.

Examples

See the following links for more examples on how to use the <Form /> component with other components:

Installation

  1. Follow Installation Guide

    To enable DinUI functionality in your project, you will need to properly set up Tailwind and install the necessary dependencies.
  2. All done

    You now can start using this component in your project.