plugins/react-expert/skills/react-forms/SKILL.md
TanStack Form v1 - type-safe forms with Zod/Yup/Valibot validation, async validation, arrays, nested fields, React 19 Server Actions
npx skillsauth add fusengine/agents react-formsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before ANY implementation, use TeamCreate to spawn 3 agents:
After implementation, run fuse-ai-pilot:sniper for validation.
ALWAYS apply SOLID principles from solid-react skill.
→ See ../solid-react/SKILL.md for complete rules
Key Rules:
modules/[feature]/src/interfaces/| Hook | Purpose | Guide |
|------|---------|-------|
| useForm() | Initialize form with validation | references/tanstack-form-basics.md |
| useField() | Subscribe to individual field | references/tanstack-form-basics.md |
| form.Field | Render prop component for fields | references/tanstack-form-basics.md |
| form.Subscribe | Watch form state changes | references/tanstack-form-basics.md |
→ See references/tanstack-form-basics.md for detailed usage
| Library | Adapter | Bundle Size |
|---------|---------|-------------|
| Zod | zodValidator() | ~12KB |
| Yup | yupValidator() | ~40KB |
| Valibot | valibotValidator() | ~6KB |
→ See references/zod-validation.md for Zod patterns
→ See references/yup-valibot.md for alternatives
Server-side checks with debouncing and loading states.
→ See references/async-validation.md
Integration with useActionState and progressive enhancement.
→ See references/server-actions.md
Dynamic field arrays and dot notation for nested objects.
→ See references/arrays-nested.md
Full type inference from Zod schemas and defaultValues.
→ See references/typescript.md
Field wrapper components with shadcn styling.
→ See references/shadcn-integration.md
onMount, onChange, onBlur, onSubmit with debouncing.
→ See references/listeners.md
Cross-field validation and dependent dropdowns.
→ See references/linked-fields.md
useStore selectors and granular subscriptions.
→ See references/reactivity.md
Form and field reset with custom values.
→ See references/reset-api.md
TanStack Start integration and server state merge.
→ See references/ssr-hydration.md
Debug form state with @tanstack/react-form-devtools.
→ See references/devtools.md
Mobile-specific patterns with TextInput.
→ See references/react-native.md
ArkType and Effect Schema support.
→ See references/standard-schema.md
| Template | Use Case |
|----------|----------|
| templates/basic-form.md | Login/signup with Zod |
| templates/multi-step-form.md | Wizard with step validation |
| templates/dynamic-fields.md | Add/remove field arrays |
| templates/file-upload-form.md | File input with preview |
| templates/server-action-form.md | React 19 Server Actions |
| templates/optimistic-form.md | useOptimistic integration |
| templates/nested-form.md | Dot notation nested fields |
| templates/search-form.md | Debounced search |
| templates/conditional-fields.md | Show/hide based on values |
| templates/form-composition.md | Reusable field components |
| templates/listeners-form.md | Side effects & auto-save |
| templates/linked-fields-form.md | Cross-field validation |
| templates/reactivity-form.md | Performance optimization |
| templates/reset-form.md | Form/field reset patterns |
| templates/ssr-form.md | SSR & hydration |
| templates/devtools-form.md | Devtools integration |
| templates/react-native-form.md | React Native forms |
field.state.meta.errorsaddress.street)mode="array" with pushValue/removeValuez.infer<typeof schema>useState for form state → use useForm()onChangeAsyncDebounceMsonChange → use field.handleChangez.infer<typeof schema>testing
Copy self-audit and ban-lists — filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, Title Case headlines, humor in error copy ('Oops!'), em-dash crutch, one copy register per page.
development
Logged-in web apps — dashboards, auth flows, settings, onboarding, data tables, command palettes, modals, toasts. Register `product`: density and glance-speed over marketing polish, no hero/CTA-tricks, every data surface covers empty/loading/error explicitly, tables and dataviz follow preattentive-processing rules.
development
Marketing sites, landing pages, campaign pages — register `brand` (design IS the product). Structure comes from the register's POV + a macrostructure pick, never from copying an inspiration site's section flow. Hero discipline, deviated section order, asymmetric grids, and a silhouette lookalike-test gate before ship.
development
Token-strategy core — OKLCH color rules, neutral tinting, accent-commitment levels, type scale, 8pt spacing grid, touch targets, and the canonical output format of design-system.md (the file the harness gates on). This is routing step 1 of design-method/SKILL.md — read it before design-web/design-webapp/design-ios/design-android, before picking or auditing a single color/type/spacing value.