API Reference
Core API
Core package exports and utilities
The @form-wire/core package is framework-agnostic. It handles schema introspection, form model creation, parsing, and server action creation.
Exports
createFormModel
Introspects a Zod schema into a FormModel:
import { createFormModel } from "@form-wire/core";
const model = createFormModel(schema, config);
// model.fields — FormField[]
// model.fieldMap — Record<string, FormField>createAction
Creates a type-safe server action:
import { createAction } from "@form-wire/core";
export const myAction = createAction(schema, async (data) => {
return { message: "Done" };
});formError
Quick error response helper:
import { formError } from "@form-wire/core";
return formError({
fieldErrors: {
email: ["Already taken"],
},
});withMeta
Attach metadata to Zod schema nodes:
import { withMeta } from "@form-wire/core";
const schema = z.object({
name: withMeta(z.string(), { label: "Name", placeholder: "Ada" }),
});parseFormData
Parse FormData against a schema:
import { parseFormData } from "@form-wire/core";
const result = parseFormData(schema, formData, config);
if (result.success) {
// result.data is typed
} else {
// result.fieldErrors, result.formErrors
}formatZodError
Convert Zod errors to field errors:
import { formatZodError } from "@form-wire/core";
const errors = formatZodError(zodError);
// Record<string, string[]>Utility Functions
humanize
Converts camelCase/snake_case to human-readable labels:
humanize("firstName") // "First Name"
humanize("email_address") // "Email Address"isScalarField
Checks if a field is a scalar (renderable as a single input):
isScalarField(field) // true for string, number, boolean, date, filecreateLocalStorageDraftAdapter
Returns a DraftPersistenceAdapter backed by localStorage:
import { createLocalStorageDraftAdapter } from "@form-wire/react";
const adapter = createLocalStorageDraftAdapter();createSessionStorageDraftAdapter
Same but backed by sessionStorage.
Types
Key types exported from @form-wire/core:
| Type | Description |
|---|---|
FormField | Field metadata (name, kind, label, required, etc.) |
FormModel | Array of FormFields + fieldMap lookup |
ActionState<T> | Result type: success with data/message or failure with errors |
FormFieldOption | Select option: { label: string; value: string } |
FormWireMeta | Field metadata: label, description, placeholder, component |
SupportedFormSchema | ZodObject or ZodDiscriminatedUnion |
FormWireServerError | Typed error class for server actions |