Skip to content

Goodspeed is in closed beta. Enter your email and we check your invite on the spot: invited accounts start free today, and everyone else joins the waitlist in one click. Get started

Skip to content
Goodspeed

Connect React Hook Form to your Goodspeed app

Form state management for every generated form: typed useTypedForm hook, server error propagation, and async field validation. Goodspeed wires React Hook Form into every app that needs it at generation time, so you start with a working integration, not a blank config and a documentation tab.

WHAT GETS WIRED IN

Built into every React Hook Form build

Every app Goodspeed generates with React Hook Form includes these wired integrations from the first build. No manual setup required.

ItemDescriptionStrength
One typed form hookuseTypedForm<T> wraps useForm with the Zod resolver pre-wired and validates on blur, which keeps a mobile keyboard from re-rendering the screen on every keystroke.Interface
Server errors, same display pathuseFormServerError puts a server-side message where the client-side ones already appear, so a form has one error surface rather than two.Interface
Debounced async checksuseAsyncFieldValidator waits 300ms before asking the server, for fields such as username availability that need a live answer.Interface
Typed form primitivesFormField, FormInput, FormSelect and FormError wrap the form controllers with the app's styling, label and error handling.Interface

Source: the Goodspeed app foundation · form-validation

REAL GENERATED CODE

A snippet from a React Hook Form integration the pipeline ships

This pattern is lifted from the engineered plumbing that ships inside every Goodspeed app. The studio generates React Hook Form integration code like this for every app that includes it, not a placeholder you have to fill in yourself.

  1. Typed form hook

    // lib/forms.ts
    export function useTypedForm<T extends FieldValues>(
      schema: z.ZodType<T>,
      options?: Omit<Parameters<typeof useForm<T>>[0], 'resolver'>
    ): UseFormReturn<T> {
      return useForm<T>({
        resolver: zodV4Resolver(schema),
        mode: 'onBlur',
        ...options,
      });
    }
GDaily Allergens

Today's log

Gluten
Tree nuts
Shellfish
Dairy
HomeScanLogProfile

START WITH REACT HOOK FORM

Your React Hook Form integration, generated