Applications 3 steps · 11 fields
Picks early users by role, platform, usage and willingness to give feedback.
Get a hosted link and a responses inbox in a minute. No backend, no credit card.
Or set it up yourself
Live preview
{ "id": "beta-tester-application", "title": "Join the beta", "submit": { "label": "Apply" }, "steps": [ { "id": "you", "title": "About you", "fields": [ { "key": "role", "type": "select", "label": "What best describes your role?", "options": [ { "value": "engineering", "label": "Engineering" }, { "value": "product", "label": "Product" }, { "value": "design", "label": "Design" }, { "value": "marketing", "label": "Marketing" }, { "value": "sales", "label": "Sales" }, { "value": "support", "label": "Customer support" }, { "value": "operations", "label": "Operations" }, { "value": "executive", "label": "Founder or executive" }, { "value": "other", "label": "Other" } ], "validation": { "required": true } }, { "key": "companySize", "type": "radio", "label": "Company size", "options": [ { "value": "solo", "label": "Just me" }, { "value": "2-10", "label": "2 to 10" }, { "value": "11-50", "label": "11 to 50" }, { "value": "51-200", "label": "51 to 200" }, { "value": "201-1000", "label": "201 to 1,000" }, { "value": "1000-plus", "label": "More than 1,000" } ] }, { "key": "platforms", "type": "multiselect", "label": "Where would you use it?", "layout": "inline", "options": [ { "value": "web", "label": "Web browser" }, { "value": "macos", "label": "macOS" }, { "value": "windows", "label": "Windows" }, { "value": "linux", "label": "Linux" }, { "value": "ios", "label": "iOS" }, { "value": "android", "label": "Android" } ], "validation": { "required": true } }, { "key": "usage", "type": "radio", "label": "How often would you use it?", "options": [ { "value": "daily", "label": "Daily" }, { "value": "few-times-week", "label": "A few times a week" }, { "value": "weekly", "label": "About once a week" }, { "value": "occasionally", "label": "Less often" } ], "validation": { "required": true } } ] }, { "id": "fit", "title": "Your use case", "fields": [ { "key": "problem", "type": "textarea", "label": "What problem are you hoping it will solve?", "rows": 4, "validation": { "required": true } }, { "key": "currentTool", "type": "text", "label": "What do you use for this today?" }, { "key": "feedbackCall", "type": "radio", "label": "Open to a 20-minute feedback call?", "layout": "inline", "options": [ { "value": "yes", "label": "Yes" }, { "value": "no", "label": "No" } ], "validation": { "required": true } } ] }, { "id": "contact", "title": "Your details", "fields": [ { "key": "name", "type": "text", "label": "Full name", "validation": { "required": true } }, { "key": "email", "type": "email", "label": "Email", "inputMode": "email", "validation": { "required": true } }, { "key": "heardFrom", "type": "select", "label": "How did you hear about us?", "options": [ { "value": "search", "label": "Search engine" }, { "value": "social", "label": "Social media" }, { "value": "referral", "label": "Friend or colleague" }, { "value": "article", "label": "Article or podcast" }, { "value": "other", "label": "Other" } ] }, { "key": "confidential", "type": "checkbox", "label": "I’ll keep unreleased features confidential", "validation": { "required": true } } ] } ]}Copy the JSON into a file in your app, install the renderer and pass the definition to it. The same JSON works with @formhaus/vue.
npm i @formhaus/core @formhaus/reactimport { FormRenderer } from '@formhaus/react';
import '@formhaus/core/style.css';
import definition from './form.json';
export function Form() {
return (
<FormRenderer
definition={definition}
onSubmit={(values) => console.log(values)}
/>
);
}See Getting started for validation, steps and custom components.