Forms are code.
Treat them that way.
FieldCraft is a schema-driven form engine for React. Define a form once in JSON — validation, conditional logic, multi-step navigation, drafts and submission are handled. In your repo, on your infrastructure, with your database.
{
"id": "patient-intake",
"settings": {
"showProgress": true
},
"sections": [
{
"id": "details",
"title": "Patient details",
"questions": [
{
"id": "name",
"type": "short_text",
"label": "Full name",
"required": true
},
{
"id": "email",
"type": "email",
"label": "Email",
"required": true
},
{
"id": "consent",
"type": "boolean",
"label": "Share records with my GP"
},
{
"id": "gp",
"type": "short_text",
"label": "GP practice",
"showIf": {
"field": "consent",
"operator": "eq",
"value": true
}
}
]
}
]
}Form tooling was not built for the people who ship forms.
You rent a hosted service, license an enterprise SDK, or build the whole thing yourself. Each choice costs you something you would rather keep.
Three steps. One dependency. No account.
Two layers. Take the one you need, leave the rest.
Each layer is a separate package — install only what your project requires. The core engine has zero UI dependencies, and the React renderer adds 44 pre-built components.
What JSON can do. Running here, on this page.
These four demos are the engine’s core behaviours — multi-step navigation, conditional visibility, real-time validation and computed fields — running live in your browser.
Sections become steps. Progress, forward and back navigation are built in. Each step can declare its own showIf condition so the flow adapts to previous answers.
Contact
The parts you would otherwise write twice.
This is what a real form looks like.
{
"id": "event-registration",
"settings": {
"showProgress": true,
"progressStyle": "steps"
},
"sections": [
{
"id": "attendee",
"questions": [
{
"id": "ticket",
"type": "single_select",
"required": true,
"options": [ … ]
},
{
"id": "dinner",
"type": "boolean"
},
{
"id": "dietary",
"type": "dropdown",
"showIf": {
"field": "dinner",
"operator": "eq",
"value": true
}
}
]
},
{
"id": "workshops",
"showIf": {
"field": "ticket",
"operator": "eq",
"value": "workshop"
},
"questions": [ … ]
},
{
"id": "summary",
"questions": [
{
"id": "subtotal",
"type": "calculated",
"config": {
"expression": "…",
"format": "currency"
}
},
{
"id": "consent",
"type": "boolean",
"required": true
}
]
}
]
}Start from a template, ship faster.
Free, production-ready schemas. Copy one, tweak the fields, render with FieldCraft.
Contact Form
A two-step contact form with personal details and inquiry fields. Includes name, email, phone, subject dropdown, and message.
Feedback Survey
A comprehensive customer feedback survey with NPS, ratings, Likert scales, feature usage tracking, and conditional follow-up. Three sections covering satisfaction, specifics, and open-ended feedback.
Job Application
A comprehensive 3-section job application form with personal info, position preferences (role, type, salary, remote), experience details, cover letter, and consent.
One submit. Every destination you need.
Adapters run concurrently and independently — if one destination is down, the others still complete, and the failure is reported rather than swallowed.
Rent it, build it, or own it.
Growing every week.
Monthly downloads across all FieldCraft packages.
Install it, write a schema,
render your first form.
Nothing to sign up for. Nothing to configure. The engine is on npm and the source is on GitHub.