Your forms. Your database.
Nobody in the middle.
FieldCraft is a schema-driven form engine for React. Describe a form once in JSON and it handles validation, conditional logic, multi-step navigation, drafts and submission.
It is a library, not a service. Responses go straight from the browser to infrastructure you control — there is no vendor in the path to trust, audit or pay.
Most form tools put themselves in the path.
Every hosted service receives your users’ answers before you do. That single architectural fact is what produces the paperwork, the audits and the breach exposure that follow it.
Parties holding a copy of a submitted response.
- 01Respondent’s browser
- 02Vendor’s serversreads it
- 03Vendor’s databasestores it
- 04You, via their API
- 01Respondent’s browser
- 02Your API endpointyour code
- 03Your databasethe only copy
A vendor that never receives your data is not a data processor, so there is nothing to negotiate, sign or renew.
Under HIPAA a BAA covers parties that handle protected health information. FieldCraft handles none of it.
Procurement reviews the software you run, not a third party you send records to. The audit surface is your own stack.
A compromise on our side cannot expose your responses, because we never held a copy. The blast radius stops at your systems.
A property of the architecture, not a setting: you write the onSubmithandler, so the destination is yours by construction. The one call the packages can make to us is anonymous usage telemetry — structural counts, never field values — and it stays off unless you switch it on.
Don’t take the last section on faith.
Four places you can verify the claim yourself, without installing anything. Each one names the file or the flag.
core/src/adapters/http-adapter.tstelemetry: trueadapters/src/postgres/encryption.tsMIT · github.com/SquaredR98Three steps, and no account anywhere.
Step 02 is the one that matters — the schema is the whole product.
The parts you would otherwise write twice.
Four behaviours that are tedious to build and easy to get subtly wrong. Each one is a line of schema, and each card says what you would be writing instead.
Answers are written to local storage as they change and restored on the next visit. A long intake form survives a closed tab, a refresh, or a dead battery.
Initial values resolve in a fixed order — schema defaults, then URL parameters, then props — with explicit initial values merged last. Campaign links and personalised forms need no extra code.
Duplicate question ids, conditions pointing at fields that do not exist, and malformed expressions are reported when the engine is created — in development, not in a user’s session.
Calculated fields run through a purpose-built parser — tokeniser, postfix conversion, then evaluation — supporting arithmetic, comparisons and a fixed function set. A schema is data, never executable code.
Easier to show than to explain.
Four behaviours the engine handles for you, running here on this page — not screenshots. Fill them in, get them wrong, submit them.
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
Two layers, four packages.
The engine is plain TypeScript with no UI dependencies. The React renderer sits on top of it and adds the field components. Install whichever one you need.
Or start from one of these.
Schemas written for real forms, cleaned up. Copy one, change the fields, render it.
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.
Things you should know before you rely on it.
Better to find these here than three days into a project.
The core is framework-free by design and ships no UI, but React is the only renderer that exists today. Another framework means writing that layer yourself.
A visual builder exists and ships in Pro. On the free tier, schemas are hand-written or started from one of the 16 templates.
http, supabase, postgres and webhook are included. Anywhere else is a small adapter you write — the interface is one method, but it is still work.
Getting started and the field reference are complete. The deeper guides are thin, and some of the API is documented only by its TypeScript types.
This is one developer working evenings and weekends. Issues get read; timelines are not promised.
Where it stands right now.
Stated plainly, and kept current — the release figure below comes from the changelog, not from this page.
Install it, write a schema, render a form.
Nothing to sign up for. It’s on npm, the source is on GitHub, and the licence is MIT.