The form framework for coding agents. Co-located validation, self-structuring data, composability, and a compact single-component API that makes it easy for coding agents to reason about complex forms without boilerplate…
The form framework for coding agents.
Co-located validation, self-structuring data, composability, and a compact single-component APIthat makes it easy for coding agents to reason about complex forms without boilerplate or guesswork.
React · Vue — Trusted by NBC, Nike, Bosch, Anthem Blue Cross, and thousands of teams that ship at scale.
Documentation · Get Started · Discord
> [!TIP] > Set up your coding agent for FormKit >> npx formkit skill
>
> Supports Claude Code, Codex, Cursor, Cline, Gemini, OpenCode, Amp, and more.
> Auto-detects your framework and configures your agent with the right docs and best practices.
One primitive. Infinite flexibility.
> *"Forms today remain fundamentally unsolved. We need a new low-level primitive to power the next generation of web applications written with AI. The FormKit Node is that primitive."*
>
> — Justin Schroeder, Creator of FormKit
Every ` component owns a node. Nodes automatically structure data across components at any depth — no prop-drilling, event spaghetti, or ad-hoc state stores. The result is a compact representation of form state that agents and humans can both reason about. Generated forms stay structured, editable, and consistent as your product evolves.
jsx
That's a fully accessible form with labels, validation, error messages, loading state, and submit handling — all from one component.
What you get
| Feature | |
|---|---|
| One component, every input | , , — consistent, predictable API across all inputs |type="group"
| Co-located validation | 30+ built-in rules declared inline. No separate validation schemas, no event listeners, no glue code |
| Self-structuring data | nests as objects, type="list" nests as arrays. Data shape mirrors component shape automatically |
| Schema | Generate entire forms from JSON. Conditional rendering, loops, expressions, dynamic data — all serializable |
| Theming | First-class Tailwind CSS support with the Regenesis theme, or bring your own styles |
| i18n | 30+ languages included, swap at runtime |
| Accessibility | ARIA attributes, labels, and descriptions generated automatically |
| Plugins | Extend or override anything — validation, i18n, and even input types are all plugins |
FormKit Pro
Premium inputs for complex interfaces — autocomplete, datepicker, repeater, color picker, drag-and-drop, mask, rating, slider, tag list, toggle, and more. Built on the same FormKit Node, same schema, same theming system.
Architecture
FormKit cleanly separates its framework-agnostic core from framework bindings. The same core powers every framework — same validation rules, same schemas, same plugins.
@formkit/core → Node tree, events, plugins, schema compiler
@formkit/validation → Validation engine
@formkit/rules → Built-in validation rules
@formkit/i18n → Internationalization
@formkit/inputs → Input type definitions
@formkit/themes → Theme utilities
─────────────────────────────────────────────
@formkit/react → React 18/19 bindings
@formkit/vue → Vue 3 bindings
Sponsors
FormKit — which supports its whole feature set for _native HTML inputs_ (like select, checkbox, and textarea`) — is and will always be an MIT-licensed open source project. Please consider sponsoring FormKit so we can sustainably and continually improve it!
💎 Platinum
🥇 Gold
🥉 Bronze
Backers
uscreen · gfenn08 · Ryan E · João Bondim
Contributing
Thank you for your willingness to contribute to this free and open source project! When contributing, consider first discussing your desired change with the core team via GitHub issues, Discord, or other method.
License
MIT · Copyright (c) 2021-2026, FormKit, Inc.
Members
-
formkit ★ PINNED
The form framework for coding agents
TypeScript ★ 4.7k 10d agoExplain → -
tempo ★ PINNED
📆 Parse, format, manipulate, and internationalize dates and times in JavaScript and TypeScript.
TypeScript ★ 2.6k 1mo agoExplain → -
auto-animate ★ PINNED
A zero-config, drop-in animation utility that adds smooth transitions to your web app. You can use it with React, Vue, or any other JavaScript application.
TypeScript ★ 14k 2mo agoExplain → -
drag-and-drop ★ PINNED
No description.
HTML ★ 1.9k 5d agoExplain → -
jsonreader
Incremental parsing of streaming JSON data.
Vue ★ 150 1y agoExplain → -
shorten
A public url shortener ❤️ 🌎 🗜️.
TypeScript ★ 36 2y agoExplain → -
theme-starter
A FormKit theme with minimal styling (and thorough comments) intended to help theme authors create their own theme.
TypeScript ★ 20 2mo agoExplain → -
docs-content
The content (.md format) — and only the content — for the FormKit documentation site.
JavaScript ★ 19 10d agoExplain → -
zodown
Zod 4 to Zod 3 runtime converter
TypeScript ★ 18 9mo agoExplain → -
barcode
Barcode reader input for FormKit.
TypeScript ★ 16 2mo agoExplain → -
unplugin-formkit
Automatic FormKit configuration injection 🪄
TypeScript ★ 14 2y agoExplain → -
inertia
FormKit + Inertia = ❤️
TypeScript ★ 12 2y agoExplain → -
input-schemas
A collection of FormKit schemas used when creating a FormKit theme.
Shell ★ 7 2mo agoExplain → -
theme-regenesis
Official Regenesis theme for FormKit inputs.
TypeScript ★ 5 2mo agoExplain → -
themes.formkit.com
The theme builder web app for FormKit
Vue ★ 4 2mo agoExplain →
No repos match these filters.