DocsPlatform
Form
Form owns values and validation state, while existing Input, Checkbox, Select, Combobox, and DatePicker components continue to own their rendering.
Live machine
The real formMachine through useForm — two fields with blur validation, and the machine context beside them so touched, dirty, errors, and status are visible as state rather than component magic.
formMachine · live via useForm
Machine context · live
{
"values": {
"email": "",
"team": ""
},
"touched": [],
"dirty": [],
"errors": {},
"status": "idle",
"submitCount": 0
}State model
formMachine holds nested values, touched paths, dirty paths, errors, array item keys, submission count, and lifecycle status. Field paths use dot notation such as addresses.0.city.
const form = useForm({ defaultValues: { email: "" } })
const email = form.useField("email")
Validation
Synchronously supplied validators run in the machine. Asynchronous validation is requested as a command and consumed outside the machine; a newer request aborts an older request for the same field.
Adapters
Vanilla, React, Vue, Solid, Svelte, and Angular adapters all subscribe to the same service. Controlled values report a change request and remain authoritative until the host adopts the value.