API — driven-form/react
Requires React 18 or newer as a peer dependency. Import these from driven-form/react.
Functions
Section titled “Functions”BlockFieldProvider
Section titled “BlockFieldProvider”BlockFieldProvider(__namedParameters: object): Element| Parameter | Type | Description |
|---|---|---|
__namedParameters | object |
createFieldRegistry
Section titled “createFieldRegistry”createFieldRegistry(): FieldRegistryDrivenForm
Section titled “DrivenForm”DrivenForm(__namedParameters: DrivenFormProps): Element | null| Parameter | Type | Description |
|---|---|---|
__namedParameters | DrivenFormProps |
DrivenFormField
Section titled “DrivenFormField”DrivenFormField(__namedParameters: DrivenFormFieldProps): Element | null| Parameter | Type | Description |
|---|---|---|
__namedParameters | DrivenFormFieldProps |
FieldComponentSuspense
Section titled “FieldComponentSuspense”FieldComponentSuspense(__namedParameters: FieldComponentSuspenseProps): Element| Parameter | Type | Description |
|---|---|---|
__namedParameters | FieldComponentSuspenseProps |
RenderDynamicFields
Section titled “RenderDynamicFields”RenderDynamicFields(__namedParameters: RenderDynamicFieldsProps): Element| Parameter | Type | Description |
|---|---|---|
__namedParameters | RenderDynamicFieldsProps |
useBlockField
Section titled “useBlockField”useBlockField(__namedParameters: UseBlockFieldProps): UseBlockFieldReturn| Parameter | Type | Description |
|---|---|---|
__namedParameters | UseBlockFieldProps |
useBlockFieldContext
Section titled “useBlockFieldContext”useBlockFieldContext(): BlockFieldContextValueuseDynamicField
Section titled “useDynamicField”useDynamicField(__namedParameters: UseDynamicFieldProps): UseDynamicFieldReturn| Parameter | Type | Description |
|---|---|---|
__namedParameters | UseDynamicFieldProps |
useFieldRegistry
Section titled “useFieldRegistry”useFieldRegistry(): FieldRegistry | nullThe nearest field registry, or null outside a RenderDynamicFields tree
useFocusRef
Section titled “useFocusRef”useFocusRef(focusDelay: number): [RefFunc, FocusElem, () => void, (name: string, element: Element | null) => void]| Parameter | Type | Description |
|---|---|---|
focusDelay | number | ms to wait after scrollIntoView before calling .focus() (scrollIntoView is async; a small delay ensures the element is in view first) |
useRepeaterField
Section titled “useRepeaterField”useRepeaterField(__namedParameters: UseRepeaterFieldProps): UseRepeaterFieldReturn| Parameter | Type | Description |
|---|---|---|
__namedParameters | UseRepeaterFieldProps |
Interfaces
Section titled “Interfaces”DrivenFormFieldProps
Section titled “DrivenFormFieldProps”| Property | Type | Description |
|---|---|---|
data | FormData | Current form data — pass form.data / the bag’s data |
errors | Record<string, string> | Current validation errors — pass form.errors / the bag’s errors |
fieldFallback? | ReactNode | Suspense fallback while a lazy field component is loading |
fieldRegistry? | FieldRegistry | Field type-to-component registry. Optional when rendered inside a RenderDynamicFields subtree (inherited via context); required otherwise — e.g. as a sibling of RenderDynamicFields. |
isValidating? | Record<string, boolean> | Per-field async validation in-flight status — pass form.isValidating / the bag’s isValidating |
name | string | The field’s name, as declared in the schema |
onUnregistered? | 'warn' | 'throw' | 'silent' | What to do when name isn’t in the schema, or its type has no registered component. - ‘warn’ (default) — console.warn + render nothing - ‘throw’ — throw an Error (useful in development) - ‘silent’ — render nothing, no warning |
refFunc? | RefFunc | Ref callback — pass form.refFunc / the bag’s refFunc to enable scroll-to-error |
DrivenFormProps
Section titled “DrivenFormProps”| Property | Type | Description |
|---|---|---|
children? | ReactNode | (bag: DrivenFormBag) => ReactNode | Children rendered below the form fields — typically a submit button. |
fieldFallback? | ReactNode | |
fieldRegistry | FieldRegistry | Registry mapping field type strings to React components |
onFormLoad? | (formId: string | number | undefined) => void | Called after the schema is parsed. Receives the schema id. |
onSave | (params: OnSaveParams) => void | Called after all validation passes on submit |
onUnregistered? | UnregisteredFieldBehaviour | |
schema | DrivenFormSchema | null | undefined | Schema from your backend API. Pass null or undefined to render nothing (useful while the schema is loading). When this prop changes, the form resets and reloads with the new schema. |
unregisteredFallback? | ComponentType<object> | |
validatorRegistry? | ValidatorRegistry | Custom validator registry. If omitted, the built-in registry is used. |
FieldComponentSuspenseProps
Section titled “FieldComponentSuspenseProps”| Property | Type | Description |
|---|---|---|
children | ReactNode | |
fallback? | ReactNode | Rendered while the lazy component is loading. Defaults to null. |
name | string | Field name — used as the tracking key |
RenderDynamicFieldsProps
Section titled “RenderDynamicFieldsProps”| Property | Type | Description |
|---|---|---|
data | FormData | Current form data from useDynamicField |
errors | Record<string, string> | Current validation errors from useDynamicField |
fieldFallback? | ReactNode | Rendered inside each field’s Suspense boundary while its lazy component is loading. Defaults to null (nothing shown while loading). |
fieldRegistry? | FieldRegistry | Field type-to-component registry from createFieldRegistry. Optional when rendering inside another RenderDynamicFields (e.g. a repeater row) — the registry is inherited via context in that case. |
isValidating? | Record<string, boolean> | Per-field async validation in-flight status — pass form.isValidating here. Each field receives its own slice as the isFieldValidating prop. |
onUnregistered? | UnregisteredFieldBehaviour | What to do when a field type has no registered component. - ‘warn’ (default) — console.warn + skip - ‘throw’ — throw an Error (useful in development) - ‘silent’ — skip silently - ‘custom’ — render unregisteredFallback |
refFunc? | RefFunc | Ref callback from useDynamicField — enables scroll-to-error on submit |
tree | FieldData[] | Parsed node tree from useDynamicField — already sorted by order at every level |
unregisteredFallback? | ComponentType<object> | Rendered for unregistered field types when onUnregistered is ‘custom’ |
RepeaterRowProps
Section titled “RepeaterRowProps”| Property | Type | Description |
|---|---|---|
fieldFallback? | ReactNode | Shown inside each row field’s Suspense boundary while lazy components load |
repeater | UseRepeaterFieldReturn | The handle returned by useRepeaterField |
row | RepeaterRowData | The row to render (from repeater.rows) |
Variables
Section titled “Variables”RepeaterRow
Section titled “RepeaterRow”const