Введение
ReFormer — библиотека для построения сложных форм на React, основанная на
сигналах. Она даёт декларативный способ описывать формы с
валидацией, вычисляемыми полями и условной логикой — без ручной синхронизации состояния и лишних
перерисовок. Ядро от React не зависит: привязка к React — отдельный вход @reformer/core/react.
Философия: архитектура M1
В основе ядра лежит архитектура M1, разделяющая форму на четыре слоя. Каждый слой отвечает за одну задачу, что делает форму предсказуемой, переиспользуемой и легко тестируемой.
Модель ─────► Схема ─────► Форма ─────► Behavior
createModel привязка createForm defineFormBehavior
значения поле↔сигнал ноды формы реактивная логика
- Модель (
createModel) — источник истины для значений. Обычный на вид объект, где под каждым полем стоит реактивный сигнал. Значения принадлежат модели, а не UI. - Схема — дерево узлов: узел поля привязывает поле модели к компоненту
(
{ model: model.$.field, component, componentProps }), контейнер собирает узлы вchildren. Правил валидации в схеме нет — они живут отдельной схемойdefineValidation. - Форма (
createForm) — собирает всё одним вызовом: строит ноды (FormControl/FormGroup/FormArray) поверх сигналов модели, подключает правила валидации, поток шагов и поведение. К полям обращаются через типизированную группу:form.email,form.address.city. - Behavior (
defineFormBehavior) — декларативная реактивная логика: вычисляемые поля, условная доступность, синхронизация, реакции на изменения.
Такое разделение — ключевая идея: «какие данные собираем» (модель + схема) отделено от «как данные реагируют» (behavior) и от «правильны ли данные» (схема валидации).
Ключевые возможности
- Реактивность на сигналах — точечные обновления без лишних ре-рендеров.
- Типобезопасность — полный вывод типов из формы; доступ к полям через типизированную группу
FormGroup. - Декларативная валидация — набор встроенных валидаторов-фабрик + произвольная кастомная логика; правило возвращает код замечания, а текст даёт словарь сообщений.
- Декларативные behaviors — вычисляемые поля, условная доступность, синхронизация полей.
- Вложенность и массивы — сложные структуры и динамические списки, принадлежащие модели.
- Пошаговые формы — поток шагов с правилами каждого шага прямо в сборке формы.
- AI-friendly — предсказуемый API с чёткими паттернами, удобный для генерации ассистентами.
Экосистема
@reformer/core — фундамент. Поверх него:
| Пакет | Назначение |
|---|---|
@reformer/core | ядро: модель, схема, форма, behaviors, валидаторы, хуки |
@reformer/cdk | headless-компоненты (FieldArray, FormWizard, FormField) |
@reformer/ui-kit | готовые стилизованные поля (Input, Select, Checkbox, …) |
@reformer/renderer-react | рендеринг формы по дереву схемы |
@reformer/renderer-json | форма из JSON-описания |
@reformer/mcp | MCP-сервер для AI-ассистентов |
Что внутри @reformer/core
Пакет разбит на слои, у каждого свой вход:
| Слой | Импорт | Назначение |
|---|---|---|
| Модель | @reformer/core | createModel, arrayOf — источник истины значений; доступ к сигналам через model.$.<field> |
| Форма и ноды | @reformer/core | createForm — сборка одним вызовом; ноды FormControl / FormGroup / FormArray; доступ к полям через form.<field> |
| Валидация | @reformer/core/validation | схема defineValidation + операторы validate, validateAsync, validateWhen, apply, applyEach; раннер validateModel |
| Валидаторы | @reformer/core/validators | чистые фабрики required, email, min, max, minLength, pattern, phone, url, числовые, датовые и файловые |
| Сообщения | @reformer/core/i18n | словарь текстов замечаний defineIssueMessages, резолвер resolveIssueMessage, локали |
| Behaviors | @reformer/core/behaviors | декларативный DSL defineFormBehavior + операторы compute, onChange, enableWhen, copyFrom, … |
| Signals | @reformer/core/signals | единый реактивный рантайм (signal, computed, effect, batch) для интеграций |
React-часть (@reformer/core/react): useFormBundle (стабильная сборка формы), useFormControl
(полное состояние поля), useFormControlValue (значение T напрямую), useArrayLength (реактивная
длина массива), useFormFlow (состояние потока шагов), I18nProvider и useIssueMessage (язык и
тексты замечаний).
Дальше
- Установка — добавить ReFormer в проект.
- Быстрый старт — собрать первую форму.
- Основные концепции — как всё устроено внутри.