Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
React Hook Form | 33,983 | 127 | 1,337 | a day ago | 951 | September 23, 2022 | 11 | mit | TypeScript | |
📋 React Hooks for form state management and validation (Web + React Native) | ||||||||||
Redux Form | 12,613 | 11,781 | 1,243 | 22 days ago | 235 | November 17, 2021 | 492 | mit | JavaScript | |
A Higher Order Component using react-redux to keep form state in a Redux store | ||||||||||
Eureka | 11,588 | 490 | 8 days ago | 27 | September 15, 2020 | 170 | mit | Swift | ||
Elegant iOS form builder in Swift | ||||||||||
Vee Validate | 9,626 | 2,190 | 735 | 2 days ago | 282 | September 19, 2022 | 48 | mit | TypeScript | |
✅ Painless Vue forms | ||||||||||
Formily | 9,334 | 119 | 5 days ago | 209 | September 20, 2022 | 11 | mit | TypeScript | ||
📱🚀 🧩 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3 | ||||||||||
Parsley.js | 9,045 | 329 | 41 | 5 months ago | 47 | December 10, 2019 | 69 | mit | JavaScript | |
Validate your forms, frontend, without writing a single line of javascript | ||||||||||
React Final Form | 7,217 | 500 | 384 | 23 days ago | 76 | April 01, 2022 | 385 | mit | JavaScript | |
🏁 High performance subscription-based form state management for React | ||||||||||
Tcomb Form Native | 3,162 | 499 | 18 | 6 months ago | 53 | October 11, 2018 | 128 | mit | JavaScript | |
Forms library for react-native | ||||||||||
Formkit | 2,609 | 13 | a day ago | 144 | September 23, 2022 | 48 | mit | TypeScript | ||
Vue Forms ⚡️ Supercharged | ||||||||||
Formsy React | 2,599 | 2 | 2 years ago | 1 | November 27, 2015 | 149 | mit | JavaScript | ||
A form input builder and validator for React JS |
Get started | API | Form Builder | FAQs | Examples
npm install react-hook-form
import { useForm } from 'react-hook-form';
function App() {
const {
register,
handleSubmit,
formState: { errors },
} = useForm();
return (
<form onSubmit={handleSubmit((data) => console.log(data))}>
<input {...register('firstName')} />
<input {...register('lastName', { required: true })} />
{errors.lastName && <p>Last name is required.</p>}
<input {...register('age', { pattern: /\d+/ })} />
{errors.age && <p>Please enter number for age.</p>}
<input type="submit" />
</form>
);
}
Thanks go to these kind and lovely sponsors!
Thanks go to all our backers! [Become a backer].
Thanks go to these wonderful people! [Become a contributor].