TanStack
Form Composition API Reference

CreateFormHookOptions

Interface: CreateFormHookOptions<TFormComponents, TFieldComponents>

Defined in: packages/react-form/src/AppForm/createFormHookTypes.public.ts:46

Configures the components and reusable defaults returned by createFormHook.

Default objects are resolved by form core before the corresponding usage-site options. Non-listener properties always take precedence, including when explicitly set to undefined. Listener arrays follow the configured listenersMerge strategy.

Example

tsx
const { useAppForm } = createFormHook({
  formComponents: {},
  fieldComponents: {
    TextField,
  },
  defaultFormOptions: {
    errorVisibility: ({ fieldState }) => fieldState.meta.isBlurred,
  },
  defaultFieldOptions: {
    errorBoundary: true,
  },
})

Extends

Type Parameters

TFormComponents

TFormComponents extends Record<string, FunctionComponent<any>>

Library-managed. Do not specify explicitly.

TFieldComponents

TFieldComponents extends Record<string, FunctionComponent<any>>

Library-managed. Do not specify explicitly.

Properties

defaultFieldOptions?

ts
optional defaultFieldOptions?: DefaultFieldOptions;

Defined in: packages/react-form/src/AppForm/createFormHookTypes.public.ts:79

Defaults for every field and array-field component owned by the form.

Non-listener options passed to the component override these defaults, including when explicitly set to undefined. Listener arrays follow listenersMerge. This includes group.Field and group.ArrayField.

Example

tsx
defaultFieldOptions: {
  errorVisibility: ({ fieldState }) => fieldState.meta.isBlurred,
},

defaultFormGroupOptions?

ts
optional defaultFormGroupOptions?: DefaultFormGroupOptions;

Defined in: packages/react-form/src/AppForm/createFormHookTypes.public.ts:95

Defaults for every form.FormGroup component.

Options passed to the component override these defaults, including when an option is explicitly undefined.

Example

tsx
defaultFormGroupOptions: {
  onSubmitInvalid: ({ groupApi }) => {
    console.error('Invalid group', groupApi.name)
  },
},

defaultFormOptions?

ts
optional defaultFormOptions?: DefaultFormOptions;

Defined in: packages/react-form/src/AppForm/createFormHookTypes.public.ts:64

Defaults for every form created by useAppForm.

Non-listener options passed to useAppForm override these defaults, including when explicitly set to undefined. Listener arrays follow listenersMerge.

Example

tsx
defaultFormOptions: {
  errorVisibility: ({ state }) => state.submissionAttempts > 0,
},

fieldComponents

ts
fieldComponents: TFieldComponents;

Defined in: packages/react-form/src/AppForm/componentMap.public.ts:8

Inherited from

ReactFormComponentMap.fieldComponents


formComponents

ts
formComponents: TFormComponents;

Defined in: packages/react-form/src/AppForm/componentMap.public.ts:7

Inherited from

ReactFormComponentMap.formComponents