MCPcopy Index your code
hub / github.com/formkit/formkit

github.com/formkit/formkit @v2.1.0 sqlite

repository ↗ · DeepWiki ↗ · release v2.1.0 ↗
2,542 symbols 5,255 edges 591 files 1,670 documented · 66%
README

FormKit Logo FormKit Logo

GitHub Build Status  npm  GitHub

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 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 <FormKit> 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.

<FormKit type="form" onSubmit={handleSubmit}>
  <FormKit type="text" name="email" label="Email" validation="required|email" />
  <FormKit type="password" name="password" label="Password" validation="required|length:8" />
</FormKit>

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 <FormKit type="text">, <FormKit type="select">, <FormKit type="checkbox"> — consistent, predictable API across all inputs
Co-located validation 30+ built-in rules declared inline. No separate validation schemas, no event listeners, no glue code
Self-structuring data type="group" 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.

Explore Pro inputs →

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

Vue School

🥇 Gold

Fieldman

🥉 Bronze

PerByte   Zammad   Wedgworth's Inc   Mast

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.

Extension points exported contracts — how you extend this code

FormKitTokens (Interface)
* Tokens are strings that map to functions. * * @internal
packages/core/src/compiler.ts
VariantMatchResult (Interface)
* Minimal type definitions for UnoCSS compatibility. * These match the UnoCSS API without requiring unocss as a depende
packages/themes/src/unocss/index.ts
FormKitValidationState (Interface)
* Determines the validation nonce. * @public
packages/validation/src/validation.ts
RenderChildren (Interface)
* Describes renderable children.
packages/vue/src/FormKitSchema.ts
FormKitReactPlugin (Interface)
(no doc)
packages/react/src/plugin.ts
FormKitLocaleMessages (Interface)
(no doc)
packages/i18n/src/i18n.ts
ModuleOptions (Interface)
(no doc)
packages/nuxt/src/module.ts
FormKitDocsRoute (Interface)
(no doc)
packages/cli/src/skillDocs.ts

Core symbols most depended-on inside this repo

createNode
called by 903
packages/core/src/node.ts
createElement
called by 377
packages/react/src/FormKitSchema.ts
date
called by 187
packages/i18n/src/formatters.ts
getNode
called by 166
packages/core/src/node.ts
defaultConfig
called by 149
packages/react/src/defaultConfig.ts
token
called by 149
packages/utils/src/index.ts
compile
called by 117
packages/core/src/compiler.ts
list
called by 98
packages/i18n/src/formatters.ts

Shape

Function 2,394
Interface 139
Method 7
Class 2

Languages

TypeScript100%

Modules by API surface

packages/core/src/node.ts73 symbols
packages/react/src/FormKitSchema.ts49 symbols
packages/utils/src/index.ts35 symbols
packages/i18n/src/locales/lt.ts33 symbols
packages/addons/src/plugins/multiStep/multiStepPlugin.ts33 symbols
packages/i18n/src/locales/zh.ts32 symbols
packages/i18n/src/locales/vi.ts32 symbols
packages/i18n/src/locales/uz.ts32 symbols
packages/i18n/src/locales/uk.ts32 symbols
packages/i18n/src/locales/tr.ts32 symbols
packages/i18n/src/locales/th.ts32 symbols
packages/i18n/src/locales/tg.ts32 symbols

Dependencies from manifests, versioned

@aws-sdk/client-cloudfront3.529.1 · 1×
@aws-sdk/client-s33.529.1 · 1×
@aws-sdk/client-translate3.529.1 · 1×
@braid/griddle3.1.2 · 1×
@commitlint/config-conventional17.8.1 · 1×
@formkit/addonsworkspace:latest · 1×
@formkit/auto-animate1.0.0-beta.6 · 1×
@formkit/cliworkspace:^ · 1×
@formkit/coreworkspace:^ · 1×
@formkit/devworkspace:^ · 1×
@formkit/i18nworkspace:^ · 1×
@formkit/iconsworkspace:^ · 1×

For agents

$ claude mcp add formkit \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact