Перейти к содержимому

Назад к блогу

reactформыtypescriptquick-start

@letar/forms за 5 минут

Установка → схема → 5 строк JSX → работающая форма с валидацией, accessibility и TypeScript. Быстрый старт без философии — только код.

8 мая 2026 г.

--TL;DR: Установка → схема → 5 строк JSX → работающая форма с валидацией, accessibility и TypeScript.

Quick Start: установка, первая форма, результат. Без философии — только код.


Установка

npm install @letar/forms @chakra-ui/react zod

работает с React 19, Chakra UI v3 и Zod v4.


Первая форма

import { Form } from '@letar/forms'
import { z } from 'zod/v4'

// 1. Схема — единый источник правды для валидации и UI
const ContactSchema = z.object({
  name: z
    .string()
    .min(2)
    .meta({
      ui: { title: 'Имя', placeholder: 'Как вас зовут?' },
    }),
  email: z
    .string()
    .email()
    .meta({
      ui: { title: 'Email', placeholder: 'user@example.com' },
    }),
  message: z
    .string()
    .max(1000)
    .meta({
      ui: { title: 'Сообщение' },
    }),
})

// 2. Форма — 5 строк JSX
function ContactForm() {
  return (
    <Form
      schema={ContactSchema}
      initialValue={{ name: '', email: '', message: '' }}
      onSubmit={async ({ value }) => {
        await fetch('/api/contact', {
          method: 'POST',
          body: JSON.stringify(value),
        })
      }}
    >
      <Form.Field.String name="name" />
      <Form.Field.String name="email" />
      <Form.Field.Textarea name="message" />
      <Form.Button.Submit>Отправить</Form.Button.Submit>
    </Form>
  )
}

Что уже работает:

    Валидация
    ,
    ,
    из ZodLabel и placeholder — из
    , не из JSXОшибки — показываются автоматически под полемTypeScript — опечатка в
    = ошибка компиляцииAccessibility
    ,
    , уникальные
    Submit — кнопка сама блокируется при отправке и показывает спиннер

Ещё короче: автогенерация

<Form.FromSchema
  schema={ContactSchema}
  initialValue={{ name: '', email: '', message: '' }}
  onSubmit={handleSubmit}
  submitLabel="Отправить"
/>

Одна строка вместо ручной вёрстки. Библиотека сама выбирает компоненты по типам Zod-схемы.


Loading state за 1 строку

Пока данные для формы грузятся с сервера, обычно нужно показать скелетон. Без библиотеки это 15–20 строк ручных

. С
:

import { FormSkeleton } from '@letar/forms'

// Скелетон автоматически повторяет структуру формы
<FormSkeleton fields={ContactSchema} showSubmit />

читает Zod-схему и создаёт скелетон с нужным количеством полей и кнопкой отправки. Когда данные загрузились — просто рендерите
вместо скелетона:

{
  isLoading
    ? <FormSkeleton fields={ContactSchema} showSubmit />
    : (
      <Form schema={ContactSchema} initialValue={data} onSubmit={save}>
        ...
      </Form>
    )
}

Что дальше

    Документация: forms.letar.best16 интерактивных примеров: forms-example.letar.bestИсходный код примеров: GitHubMCP для AI:
    — AI-ассистент узнает про все 50+ полей

Хотите понять, зачем это нужно и какие проблемы решает? Читайте статью 1: Формы в React — почему всё ещё больно.


Все статьи цикла

    @letar/forms за 5 минут (вы здесь)Формы в React — почему всё ещё больноZod
    — одна схема для валидации и UI
    Compound Components vs конфиг-объекты50+ полей: от String до CreditCardМультистеп формы и условный рендерингМассивы и вложенные объектыFromSchema: генерируем форму из одной строкиОт БД до формы за 5 минутOffline-first формыi18n: формы на любом языкеMCP: как AI пишет формы за тебяРелиз: как мы опенсорсили form-библиотеку

Комментарии (0)

Войдите, чтобы оставить комментарий. Войти

Пока нет комментариев. Будьте первым!