The form framework for coding agents.

Co-located validation, self-structuring data, composability, schema overrides, and FormKit's compact, consistent single-component API make it exceedingly easy for coding agents to reason about complex forms without boilerplate or guesswork.

Supported agents

Trusted by

ImageImageImageImageImageImageImageImageImageImageImageImage
ShippingForm
AddressInputGroup
<FormKit type="form">  <h1>Shipping Information</h1>  <FormKit    type="text"    name="full_name"    label="Full Name"    prefixIcon="avatar"    validation="required"    help="Please enter your first and last name"  />  {/* 👀 No bindings */}  <AddressInputGroup /></FormKit>
{/* 🪄 grouped inputs */}<FormKit type="group" name="address">  <div className="flex gap-2">    {/* 🤯 no data modeling */}    <FormKit label="Street Address" name="street" />    <FormKit label="Unit" name="unit" />  </div>  <div className="flex gap-2">    <FormKit label="City" name="city" />    <FormKit type="autocomplete" name="state" options={states} />    <FormKit label="Zip Code" name="zip" />  </div></FormKit>
Shipping Information
Please enter your first and last name
Data
{
  full_name: '',
  address: {
    street: '',
    unit: '',
    city: '',
    state: '',
    zip: '',
  }
}

Predictable structure, increased eifficacy.

FormKit automatically structures data across components — at any depth, providing your agent with a stable structure for composition without prop-drilling, event spaghetti, or ad-hoc state stores.

The result is a compact representation of form state your agent will be able to reason about. Generated forms stay structured, editable, and consistent as your product evolves.

Get started
UserProfile
UserAccount
UserNetworks
UserPreferences
<FormKit type="form">  {/* 👀 No bindings, no modeling */}  <UserAccount />  <UserNetworks />  <UserPreferences /></FormKit>
<FormKit type="group" name="account">  <FormKit    type="text"    name="name"    label="Full Name"    validation="required"  />  <FormKit    type="email"    name="email"    label="Email Address"    validation="required|email"  />  <FormKit type="textarea" name="bio" label="Bio" rows={3} />  <FormKit    type="checkbox"    name="proSubscriber"    label="FormKit Pro subscriber"  /></FormKit>
<FormKit  type="repeater"  name="networks"  label="Connected Networks"  min={1}>  <FormKit type="text" name="name" label="Network" />  <FormKit type="text" name="username" label="Username" /></FormKit>
<FormKit  type="checkbox"  name="preferences"  label="Email Preferences"  options={['marketing', 'updates']}/>
Data
account: {
  name: 'John FormKit',
  email: '[email protected]',
  bio: 'I love building forms with FormKit!',
  proSubscriber: true
},
networks: [
  {
    name: 'twitter',
    username: '@FormKit'
  },
  {
    name: 'github',
    username: 'FormKit'
  }
],
preferences: [
  'marketing',
  'updates'
]
Data
{
  "recipe_name": "Pumpkin Pie",
  "cook_time": "1 hour",
  "description": "This is a delicious pumpkin pie recipe that is perfect for the holidays.",
  "ingredients": [
    {
      "name": "Pumpkin Puree",
      "quantity": 2,
      "unit": "cup"
    }
  ]
}
OneComponent
<FormKit type="form" onSubmit={handleSubmit} submitLabel="Save Recipe">  <div className="grid grid-cols-2 gap-4">    <FormKit type="text" name="recipe_name" label="Recipe Name" />    <FormKit type="text" name="cook_time" label="Cook Time" />    <FormKit type="textarea" name="description" label="Description" outerClass="col-span-2 max-w-none" />  </div>  <FormKit type="repeater" name="ingredients" label="Ingredients" draggable addLabel="Add Ingredient">    <div className="grid grid-cols-3 gap-4">      <FormKit type="text" name="name" label="Name" />      <FormKit type="number" name="quantity" label="Quantity" />      <FormKit type="dropdown" placeholder="Choose" name="unit" label="Unit" options={units} />    </div>  </FormKit></FormKit>
Ingredients

One primitive. Infinite flexibility.

All your forms need is the FormKit Node.

It handles validation, submission, and composition out of the box, so agents generate less glue code and more of the business logic you actually need.

Scale form development across your project with a predictable input API that keeps generated code reviewable, reusable, and easy to extend.

Get started

“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
Justin Schroeder
Creator of FormKit
@IsrealOrtuno
@IsrealOrtuno
VueJobs Co-Founder

After using @FormKit for a few weeks I just can't recommend it enough. Quality + Flexibility + Productivity 🚀

@adamdehaven
@adamdehaven
Staff Engineer at Kong Inc.

The team from @FormKit are awesome. If you're not working with them, you're doing it wrong.

@SuhailKakar
@SuhailKakar
Devrel at Livepeer

FormKit is probably the best way to handle forms :)

@hariscs_dev
@hariscs_dev
Software Developer

[...] @FormKit saves us a lot of time

@hamzahmd_
@hamzahmd_
Frontend Web Developer

[...] One thing is sure you'll like FormKit. [...]

Michał Kuncio
Michał Kuncio
Modern webdev

It's insane how good FormKit is!

@JoshDeltener
@JoshDeltener
Instructor @MasteringNuxt

Been there done that. Which is why we now use FormKit :)

@leemartin
@leemartin
Developer building novel web apps

New to @FormKit yesterday, rolling my own custom color picker for @turnaudio 2 today. The power of good docs.

@hotmeteor
@hotmeteor
Co-founder of @SolenoidStudios

Ok how come no one told me about Formkit? This has a bunch of the stuff I was looking for

csakiss
csakiss

My application has quite a few forms and FormKit saves my butt every time. [...] If I had to write those forms by hand from scratch, I'd consider quitting the job.

@zoey_kaiser
@zoey_kaiser
Developer @sidebase_io

FormKit has allowed us to streamline the process of creating complicated forms and reusing these across several projects, saving us tons of development time!

@danielriversuk
@danielriversuk
Developer @heykinde

Been doing some great stuff with FormKit on the donation platform I am writing. Great framework!

@crutchcorn
@crutchcorn
@tan_stack Maintainer

[...] The @FormKit team doesn't miss!

@Alireza_Jahan
@Alireza_Jahan
co-creator @faculty_bio

For the last project which is a form-heavy project, I used @FormKit and I feel mentally healthier!

Trusted by teams that ship at scale

ImageImageImageImageImageImageImageImageImageImageImageImage