React Hook Form

Performant, flexible forms with easy-to-use validation

form

Reduces re-renders and boilerplate. Works with any UI library.

ReactFormsValidationPerformance

๐ŸŽฎ Playground

import { useForm } from "react-hook-form"

export default function Demo() {
  const { register, handleSubmit } = useForm()
  
  return (
    <form onSubmit={handleSubmit(data => console.log(data))}>
      <input {...register("email")} placeholder="Email" />
      <button type="submit">Submit</button>
    </form>
  )
}
Use cases
  • โ€ขLogin forms
  • โ€ขMulti-step forms
  • โ€ขDynamic forms
Good for
  • โœ“Complex form logic
  • โœ“Performance optimization
  • โœ“TypeScript projects
Not good for
  • โœ—Very simple single-field forms
  • โœ—Non-React projects
Installation
$ npm install react-hook-form
Example
import { useForm } from "react-hook-form"

export default function Demo() {
  const { register, handleSubmit } = useForm()
  
  return (
    <form onSubmit={handleSubmit(data => console.log(data))}>
      <input {...register("email")} placeholder="Email" />
      <button type="submit">Submit</button>
    </form>
  )
}
Comparison

"Faster than Formik with less boilerplate, more flexible than React Final Form."

Trust Metrics

42K

GitHub Stars

6.5M

Weekly Downloads

Last Commit:last year
Used by
MicrosoftAmazonTwitch