Start from a pain
Pick the failure you already have.
FormScript is not a product category. It is a claim that the rule of a regulated form belongs in the document, and that every runtime should be able to read it. Each page below starts from one failure that teams actually have.
the claim
The rule is the document, and two runtimes must agree.
- Same values
- Same validity
- Same error codes
- Same output
The same eligibility rule means something different on web, mobile and the API. That disagreement is a compliance incident.
Read the page Contract The payload is the contractOmitted means not asked. null means asked and left blank. A missing field is never ambiguous.
Read the page Arithmetic Money that matchesA repayment is wrong by a fraction of a cent because 0.1 + 0.2 is not 0.3 in binary floating point.
Read the page Toolchain Stop maintaining the form stackOne document instead of a client schema, a server schema, show/hide code, calculated hooks and a private label file.
Read the page Accessibility Accessible by constructionError summary, labels, focus and the placeholder ban are normative — not a library’s optional add-on.
Read the page Audit Legal can read the ruleThe eligibility rule is buried in three codebases, and support cannot tell which rule was live when an application was decided.
Read the page Localisation Every locale, same answersLabels follow locale. Submitted values must not. The two planes are enforced by the type checker.
Read the page Offline Offline without a double chargeAn offline retry sends a payment twice, and a rate on screen was computed from a stale cache.
Read the page Safety Forms other people may writeTotal, pure, cost-bounded expressions. Unknown features fail the build. Extensions are namespaced.
Read the page Resilience Drafts that survive a device changeThey start on the phone and finish on a laptop, and the in-progress answers have changed meaning.
Read the page Comparison Compared honestlyWhat React Hook Form, Zod, JSON Schema, SurveyJS and XForms still own — and which copy of the rule they do not remove.
Read the page