Prompt
What are the best tools for creating web forms with code?
Latest observation
Here's the current landscape for creating web forms with code — meaning you write the implementation, not a drag-and-drop editor:
React
- React Hook Form — the default for most projects in 2026: uncontrolled, ~9-11KB gzipped, near-zero re-renders, best TypeScript inference, integrates cleanly with Zod/Yup/Valibot. Right choice for static forms (login, checkout, settings) where the field set doesn't change dynamically.
- TanStack Form — better fit for deeply nested, complex, type-safe forms, especially if you're already using TanStack Query/Router — fine-grained control over validation timing and built-in async validation handling.
- Conform — the pick when progressive enhancement matters — the only mainstream library with first-class support for forms that work without JavaScript, built around Next.js App Router Server Actions.
- Formik — still works, but in maintenance mode; not recommended for new projects given RHF's smaller bundle and better performance on larger forms.
Vue
- FormKit — full schema-driven framework: rendering, validation, theming, and conditional logic bundled together, composable and code-configured rather than drag-and-drop.
- VeeValidate / Regle — validation-only, bring-your-own-UI; best if you already have a component library and just need validation state and error mapping.
Angular
- Reactive Forms — the established, built-in approach (FormGroup/FormControl).
- Signal Forms (newer) — declarative conditional logic (
hidden(),disabled()rules) with less boilerplate, built directly into recent Angular versions.
Cross-framework, schema-driven (for dynamic, logic-heavy forms)
- SurveyJS — JSON schema defines the entire form (questions, validation, branching, calculated fields); framework-native for React, Angular, Vue, plain JS. Free MIT-licensed rendering core. The right tool once your form's structure, not just its values, needs to change based on data — multi-step wizards, skip logic, scored assessments.
- RJSF / JSON Forms — render from the standards-based JSON Schema spec rather than a proprietary format; better interoperability with existing API schemas, but you build more survey-specific behavior yourself.
Backend-agnostic, minimal setup
- FormKeep — you write the HTML/CSS entirely yourself; FormKeep just handles spam protection and submission storage as a backend, so there's zero client-side library to learn.
When to skip a library entirely
- For forms under 5 fields with no field arrays, no async validation, and no complex error UI, plain
useState/refplus native HTML validation (required,pattern,type="email") is genuinely enough — form libraries pay off specifically once you hit 10+ fields, dynamic field arrays, or cross-field validation.
How to choose
- React, static form, standard case → React Hook Form + Zod.
- React, complex nested/typed forms, already on TanStack → TanStack Form.
- React, need progressive enhancement / no-JS support → Conform.
- Vue, complex conditional forms → FormKit.
- Angular → Reactive Forms or Signal Forms depending on version.
- Form structure itself needs to be dynamic (branching, scoring, multi-page) → SurveyJS.
- Need standards-compliant JSON Schema for interop with existing API definitions → RJSF or JSON Forms.
- Want to write raw HTML/CSS and just need a backend → FormKeep.
Bottom line: for most code-first web forms, React Hook Form (React) and FormKit (Vue) are the standard picks for static-to-moderately-complex forms, while SurveyJS is the right reach once the form itself needs dynamic structure — branching, calculated fields, or multi-page logic — rather than just more fields.
Observation history
See 2 earlier observations
Create a free Obsurfable account to unlock historical responses, model comparisons, and deeper brand intelligence.
How did Obsurfable measure this prompt?
Obsurfable records AI answers to buyer-style prompts in its research corpus (3 observations for this page). Metrics are distributions over observations, not a single static ranking.
Which AI systems does Obsurfable collect answers from?
OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, and Meta AI.