easy-forms

Troubleshooting

Common symptoms, their causes, and fixes.

Renderers look unstyled

Symptom: inputs and selects render without their Tailwind styles.

Cause: your shadcn theme tokens aren't set up — the renderers use token utilities (border-input, bg-background, text-muted-foreground, …) that resolve to nothing without them.

Fix: run npx shadcn@latest init (it writes the theme tokens + Tailwind setup), then npx shadcn@latest add @easy-forms/easy-form. Tailwind scans your components/ directory automatically. See Installation.

The form chrome is missing

Symptom: the container, footer, and buttons have no styling.

Cause: the ejected chrome stylesheet (easy-forms.css) isn't loaded, or your theme tokens (--primary, --border, --card, …) aren't defined.

Fix: render with <EasyForm> — it imports components/easy-forms/easy-forms.css for you. (Using <Form> directly? Import that file yourself.) The chrome reads var(--primary) etc., so make sure shadcn init wrote your theme tokens. Don't move the easy-forms* classes into a Tailwind @layer components block.

A group's fields are misaligned

Symptom: in a grid group, the title occupies the first cell and every field shifts.

Cause: the grid class is on the <section> instead of the inner content <div>.

Fix: put the layout/grid class on the inner content <div> in your group renderer.

"Group with dependents is missing an id"

Symptom: a thrown error in development when a group has dependents.

Cause: group-level dependencies need a stable address.

Fix: add an id to the group.

A dependency cycle error

Symptom: DependencyCycleError with a path like a → b → a.

Cause: two fields derive from each other.

Fix: make one field the source of truth and derive the other in a single direction. See Cycle detection.

Edits to the library don't show up

Symptom: in a monorepo, changes to the packages aren't reflected in your app.

Cause: your app imports the built dist, not the source.

Fix: rebuild the packages (or run them in watch mode). For Next.js consuming source, add the packages to transpilePackages.