Skip to content

Compare Formhaus ​

Formhaus fits forms that are data: one JSON definition with steps, branching routes and conditional fields, rendered in React, Vue and Figma. Code-first libraries fit forms written once by hand in one framework.

LibraryDefinitionPick it whenComparison
react-hook-formReact codeA React form written and maintained by developersFormhaus vs react-hook-form
TanStack FormTypeScript codeTyped form state in React, Vue, Angular, Solid, Svelte or LitFormhaus vs TanStack Form
react-jsonschema-formJSON Schema + uiSchemaThe data model is already a JSON SchemaFormhaus vs react-jsonschema-form
SurveyJSSurveyJS JSONSurveys with scoring, matrices and a drag-and-drop builder for non-developersFormhaus vs SurveyJS

Formhaus at a glance ​

Formhaus
Definition formatJSON (FormDefinition), checked by a published JSON Schema
Multi-stepsteps with per-step validation, skip and progress (guide)
Branching routesroutes on a step pick the next step from answers (guide)
Conditional fieldsshow and showAny; hidden values are cleared and not submitted (guide)
ValidationDeclarative rules, named custom validators, async step validation (guide)
Custom componentscomponents map per field type, headless renderer (guide)
FigmaPlugin draws the same definition with your design system (guide)
AI toolingJSON Schema, @formhaus/mcp server, Claude Code plugin (guide)
FrameworksReact 18+, Vue 3.3+, framework-agnostic engine
Bundle size@formhaus/core 6.2 KB, @formhaus/react 4.8 KB, @formhaus/vue 6.4 KB gzipped
LicenseMIT

Formhaus sizes are minified ESM bundles gzipped at level 9 (1 KB = 1024 bytes) with scripts/check-bundle-size.mjs from the repository, measured on 2026-10-09 for version 0.9.0. The React and Vue numbers exclude @formhaus/core. Competitor sizes on each page come from bundlephobia, measured on the same date.

Sources ​

Every statement about another library links to its documentation, npm metadata or issue tracker. Facts were checked on 2026-10-09. If something has changed, open an issue on GitHub.