Form

Form wrapper. Children are FormElement nodes. Wires submission via the SDK's registerSubmissionHandler pattern (the host app provides the concrete handler at boot — init() registers a handler that POSTs to /api/submissions).

Form wrapper. Children are FormElement nodes. Wires submission via the SDK's registerSubmissionHandler pattern (the host app provides the concrete handler at boot — init() registers a handler that POSTs to /api/submissions).

Key files

Props

PropNotes
actionForm submission URL.
methodGET or POST (default POST).
submissionType"" | "iframe" | "save" | "emailSave" | "custom". custom posts to a custom endpoint (used by site-customer magic-link).
formNameIdentifier for received submissions.
mailToEmail recipient for built-in submission handler.
webhookUrlOptional webhook for the submission.
attrs, handlersStandard.

Children: FormElement only.

When to use (vs alternatives)

  • Form — when you need the SDK submission pipeline.
  • Container with type: "form" — when you need raw <form action method> with no SDK wiring (rare).
  • Embed — third-party form services (Typeform, Tally).

Gotchas

  • Storefront filter forms no longer need any wiring attribute on the <form> itself — each FormElement declares props.stateBinding: { key: "url:<name>", mode?: "checked", debounceMs?: 200 } and the URL ↔ state bridge handles the round-trip. See FormElement docs and data-bindings.
  • Form inputs need explicit borders against bg-base-100 cards — see FormElement gotchas.

Related