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 Zod to your Goodspeed app

Runtime schema validation for forms, API responses, and generated data structures throughout every Goodspeed app. Goodspeed wires Zod 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 Zod build

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

ItemDescriptionStrength
Common validatorslib/validation.ts exports email, password, display name and feedback schemas that every form can reuse.Interface
Validate without try/catchvalidate<T>(schema, data) returns a typed success-or-errors result, so call sites read as ordinary branching.Reliability
Bridged to the form libraryA resolver wrapper normalises Zod's issue shape into what React Hook Form expects.Interface
Responses checked before useEdge Function replies and database procedure calls are parsed through a schema, so a malformed response fails at the boundary instead of inside a component.Reliability

Source: the Goodspeed app foundation · form-validation

REAL GENERATED CODE

A snippet from a Zod integration the pipeline ships

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

  1. Typed validate helper

    // lib/validation.ts
    type ValidationResult<T> =
      | { success: true; data: T }
      | { success: false; errors: Record<string, string> };
    
    export function validate<T>(
      schema: ZodSchema<T>,
      data: unknown
    ): ValidationResult<T> {
      const result = schema.safeParse(data);
      if (result.success) return { success: true, data: result.data };
      const errors: Record<string, string> = {};
      result.error.issues.forEach((e) => {
        const key = e.path.join('.') || 'root';
        errors[key] = e.message;
      });
      return { success: false, errors };
    }
GDaily Allergens

Today's log

Gluten
Tree nuts
Shellfish
Dairy
HomeScanLogProfile

START WITH ZOD

Your Zod integration, generated