useHiddenFieldResolvers
Resolves all hidden field values when the form mounts. Filters fields with type: 'hidden', runs their resolvers in parallel, and sets the values via react-hook-form’s setValue.
You probably don’t need this directly. The
<Form />component calls it internally. Use it only when building a custom form renderer that needs to support hidden fields.
Signature
import { useHiddenFieldResolvers } from '@saastro/forms';
useHiddenFieldResolvers(methods, fields);
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
methods | UseFormReturn<Record<string, unknown>> | Yes | react-hook-form instance from useForm() |
fields | Fields | Yes | Form field configurations from config.fields |
Return Value
This hook returns void. It operates as a side-effect only — setting hidden field values via methods.setValue().
How It Works
- On mount, filters all fields where
type === 'hidden' - Runs all resolvers concurrently via
Promise.allandresolveValue() - Sets each value with
setValue(name, value, { shouldDirty: false }) - Cleanup function prevents stale writes if the component unmounts before resolvers complete
Most resolvers execute synchronously (timestamp, hostname, pageUrl, referrer, userAgent, urlParam). The ip resolver uses fetch and is async. All run concurrently regardless.
Example
import { useHiddenFieldResolvers } from '@saastro/forms';
import { useForm } from 'react-hook-form';
function CustomFormRenderer({ config }) {
const methods = useForm({ defaultValues: {} });
// Resolves hidden field values on mount
useHiddenFieldResolvers(methods, config.fields);
return (
<form onSubmit={methods.handleSubmit(onSubmit)}>
{/* Render visible fields... */}
{/* Hidden fields are invisible but their values are in form state */}
</form>
);
}
Built-in Resolvers
| Resolver | Async | Output |
|---|---|---|
timestamp | No | ISO 8601 string |
hostname | No | window.location.hostname |
pageUrl | No | window.location.href |
referrer | No | document.referrer |
userAgent | No | navigator.userAgent |
urlParam | No | URL query parameter value |
ip | Yes | Visitor IP via external API |
Related
- Hidden Fields — Full guide with resolver configuration, use cases, and examples
- Hidden field type — Field type reference with interactive demo