Composition
Build your form system once. Keep every form specific.
Create the field components and defaults your team agrees on, then compose product-specific forms without giving up inference or markup control.
01 / Form hook
useAppForm()
Defaults, validators, submit behavior
02 / Field kit
<form.AppField>
Your inputs, labels, hints, errors
03 / Product form
withForm()
Typed composition for each workflow
Validation orchestration
Run each rule at the speed of the user.
Validation is not one callback. Put each rule at the event where it helps, debounce expensive checks, and expose pending state to the exact surface that needs it.
Granular subscriptions
Large forms update in small pieces.
A price preview can listen to the plan. A submit button can listen to canSubmit. Field feedback can listen to its own metadata. The rest of the form stays quiet.
field
1 render
summary
0 renders
submit
1 render