В чем разница между работой внутри в React Hook Form и в Formik

«В чем разница между работой внутри в React Hook Form и в Formik» — вопрос из категории React, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

React Hook Form и Formik решают одну задачу — управление формами, но по-разному:

1. Подход к рендерингу
Formik перерисовывает форму при каждом изменении, что может снижать производительность. React Hook Form использует uncontrolled компоненты и ref, минимизируя ререндеры.

2. Валидация
Formik требует ручной обработки валидации (например, через Yup). В RHF валидация встроена и работает через HTML5-атрибуты или схему (Yup, Zod).

3. Размер бандла
RHF (9KB) легче Formik (13KB).

Пример с RHF:

const { register, handleSubmit } = useForm();
<form onSubmit={handleSubmit(data => console.log(data))}>
  <input {...register("name", { required: true })} />
</form>

Пример с Formik:

<Formik initialValues={{ name: '' }} onSubmit={values => console.log(values)}>
  {({ handleSubmit }) => (
    <form onSubmit={handleSubmit}>
      <Field name="name" validate={value => !value && "Required"} />
    </form>
  )}
</Formik>

Итог: RHF лучше для производительности, Formik — для полного контроля.