Define your form in a plain config object. FormForge handles UI, validation, layout, accessibility, and themes — automatically.
const schema = {
name: { type: 'text', label: 'Full Name', required: true },
email: { type: 'email', label: 'Email', required: true },
role: { type: 'select',
options: [
{ value: 'dev', label: 'Developer' },
{ value: 'designer', label: 'Designer' },
],
},
bio: { type: 'textarea', label: 'Short Bio' },
}
// That's it. Render with:
<FormForge schema={schema} theme="modern" />FormForge ships with a complete set of primitives for building production-grade forms.
Drop in a schema and get a fully-rendered form with labels, inputs, error states, and submit handling — no code required.
Built-in rules for email, URL, regex, min/max, and more. Async validators and Zod adapter included out of the box.
Choose from Modern, Minimal, or Enterprise themes — or build your own with a clean token system.
aria-required, aria-invalid, aria-describedby, role="alert", focus management — all automatic.
Use useFormForge, useField, or createForm() to build completely custom UI with FormForge's engine.
Tree-shakeable ESM packages. Import only what you use. Core runtime is under 4kb gzipped.
No JSX. No event handlers. No state management. Just a config object.