Docs
The engine is copy-in code you own, not a hosted widget — same model as shadcn/ui. Start with Installation, then build your first form. For conditional fields, multi-step wizards, and cross-field wiring in action, see Examples.
- InstallationRun one CLI command to copy the engine, every field, and the shadcn primitives into a self-contained folder — or copy form-builder/ in by hand.
- Your first formA minimal FormConfig — two fields and a submit button — rendered live, plus what you get for free.
- ConditionsvisibleWhen, disabledWhen, and enabledWhen — the real Condition operators, the isValid oracle, and the group-nesting limitation.
- Multi-step wizardsThe steps config shape, Next/Back gating, conditional steps, and the read-only review step.
- Server-side validationparseSubmission — the server-side trust boundary for a submitted config. Route Handler/Server Action recipes, the fail-closed otp pattern, and every documented sharp edge.
- Type safetydefineForm and InferValues — a typed submit payload straight from your config, the value-type table, and the conditional-optional rule.
- Submit to backendThe typed wire end to end: createFormAction for Server Actions, parseSubmission direct for Route Handlers, and applyServerErrors on the way back.
- Field typesEvery built-in field type the registry ships, generated from the package's own type list so it can't drift.
The full config shape is defined by the FormConfig and FieldConfig types in form-builder/core/types.ts — the package's single source of truth.