formwire-cli
v0.1.3
Published
Generate and sync website forms from your Formwire account into your project.
Maintainers
Readme
formwire
Command-line tool for Formwire. Generate a fully-owned React + shadcn/ui form component from a form's schema, and keep it in sync.
npx formwire-cli add <form-id>What it does
formwire add fetches a form's public schema and writes a real React component
into your project — using shadcn/ui, React Hook Form,
and Zod. The code is yours to edit: restructure it, add columns, restyle, hook up
analytics. Re-run formwire sync to pull schema changes back in.
This is different from @formwire/react, which renders a form from the schema at
runtime (a black box you configure with props). Use the CLI when you want to own
and customize the markup.
Commands
| Command | Description |
| ------------------------- | -------------------------------------------------------- |
| formwire add <form-id> | Generate a component into your project |
| formwire sync <form-id> | Regenerate from the latest schema |
| formwire login | Authenticate and store an API key (for forms/create) |
| formwire forms | List your forms |
| formwire create | Create a form interactively |
add / sync
# No login required — uses the public form schema.
npx formwire-cli add 1234-5678 --url https://your-formwire-host
npx formwire-cli sync 1234-5678Options:
--url <url>— Formwire submissions host (defaults to your saved host, thenhttps://api.formwire.dev).--out <path>— output file (defaultsrc/components/formwire/<Name>Form.tsx).--force— overwrite an existing file.--no-install— skip installing npm deps and shadcn components.
add refuses to overwrite an existing file; use sync (or --force) to update
it. sync is a no-op when the local schema hash already matches the server.
The generated component:
- validates with Zod + React Hook Form (required fields, email format, options),
- includes the configured honeypot field,
- renders a Cloudflare Turnstile widget when the form requires it,
- is accessible (labels,
aria-invalid,aria-describedby), - surfaces server-side validation errors.
It imports these shadcn components as needed: button, label, input,
textarea, select, checkbox, radio-group. Run npx shadcn@latest init
first if your project isn't set up for shadcn.
login / forms / create
npx formwire-cli login --url https://your-formwire-host
# or non-interactively:
npx formwire-cli login --url https://your-formwire-host --api-key fw_...Credentials are stored at $XDG_CONFIG_HOME/formwire/config.json
(~/.config/formwire/config.json) with 0600 permissions.
Development
pnpm install
pnpm build # bundle with tsup
pnpm typecheck
pnpm test