form
TanStack Form is a headless, framework-agnostic form state library for managing complex forms with full TypeScript typing, reactive field hooks, and synchronous/asynchronous validation. You bring your own UI while it handles form state, validation, and workflows.
MITPermissive — free to use in commercial and proprietary software, with attribution.View license →
Production readiness
4/5- Actively maintainedCommits in the last 6 months
- No known vulnerabilitiesNot yet scanned
- Clear, usable licenseMIT (permissive)
- Proven adoptionWidely used
- Has documentationDocumentation indexed
npm install formOur analysis
A headless form-state management library from the TanStack ecosystem that handles field state, validation, and submission workflows while leaving the UI entirely to the developer. It works across React, Vue, Angular, Solid, and other frameworks via shared core logic.
When to use form
Reach for it when you need strong end-to-end TypeScript inference for complex, deeply nested or dynamic forms, async/debounced validation, and full control over rendering. It's a good fit for teams already invested in the TanStack stack or building design-system-agnostic form layers.
When not to
If you want a batteries-included form solution with prebuilt UI, or the simplest possible API for basic forms, React Hook Form or Formik may be quicker. For schema-first apps where you just want a validator wired in, a lighter setup may suffice.
Strengths
- Best-in-class TypeScript inference for nested and dynamic field structures
- Truly headless and framework-agnostic via a shared core
- First-class async validation with debouncing and field-level control
- Integrates with standard schema libraries (Zod, Valibot, etc.) and the broader TanStack ecosystem
Trade-offs
- More boilerplate and steeper learning curve than React Hook Form for simple forms
- Smaller community and fewer tutorials than the established incumbents
- Headless approach means you build all UI/accessibility wiring yourself
- Heavy reliance on advanced generics can produce confusing type errors
Maturity
Backed by the well-known TanStack organization with active maintenance, multi-framework adapters, and ~6.5k stars. It reached a stable v1 but remains younger and less battle-tested than React Hook Form or Formik.
Become a Sponsor!
TanStack Form
A headless form library for managing complex form state with full control over fields, validation, and workflows across any framework.
Framework‑agnostic & headless — bring your own UI
Fully typed with TypeScript
Reactive hooks & extensible modular architecture
Sync & async validation with debouncing and nested fields
Read the docs →
Get Involved
We welcome issues and pull requests!
Participate in GitHub discussions
Chat with the community on Discord
See CONTRIBUTING.md for setup instructions
Partners
Explore the TanStack Ecosystem
TanStack Config – Tooling for JS/TS packages
TanStack DB – Reactive sync client store
TanStack DevTools – Unified devtools panel
TanStack Pacer – Debouncing, throttling, batching
TanStack Query – Async state & caching
TanStack Ranger – Range & slider primitives
TanStack Router – Type‑safe routing, caching & URL state
TanStack Start – Full‑stack SSR & streaming
TanStack Store – Reactive data store
TanStack Table – Headless datagrids
TanStack Virtual – Virtualized rendering
… and more at TanStack.com »