| Tool | What it owns | What it does not remove |
|---|---|---|
| React Hook Form, Formik, TanStack Form | The web screen’s state | The API still reimplements the rule |
| Zod, Yup, Joi, Valibot | A TypeScript schema, often shared in a monorepo | Relevance, calculated fields, “ask this only when,” render intents, a JVM |
| JSON Schema, react-jsonschema-form | The shape of the data | Applicability, derived fields, honest absence, profile-pinned arithmetic |
| form-js | A JSON form with a viewer, a visual editor and a playground | The API still reimplements the rule — the schema is one renderer’s document, and nothing certifies that a second runtime reads it the same way |
| SurveyJS, Form.io, Typeform | A product with its own JSON and renderer | You cannot take the document to a JVM you control and get a conformance result |
| XForms, ODK / OpenRosa | The model (and offline field collection) | Syntax, and everything that is not field collection — FormScript keeps the model |
| CEL | Sandboxed expressions with cost bounds | Forms, widgets, output projection, i18n of a document |
| JsonLogic | A rule as JSON, shared between front end and back end, never eval()ed |
Everything around the decision — one rule is one decision; fields, applicability, output projection and render intents are not modelled at all |
| DMN | Decision modelling: a notation, an expression language, decision tables | The form itself — fields, applicability, output projection, and the renderer that turns intents into controls |
| OpenAPI | The contract of an HTTP API, in a language-agnostic description | The rules of the form — applicability, derived values, locale, render intents; it describes HTTP, not a form |
The rows for form-js, JsonLogic, DMN and OpenAPI are not opinions about the tools. Each claim is taken from that tool's own documentation: form-js (view, edit and simulate JSON-based forms), JsonLogic (rules as JSON, never eval()ed), DMN (a notation and an expression language, with decision tables) and the OpenAPI Specification (a language-agnostic interface description for HTTP APIs).
FormScript is a synthesis, not a novelty claim. The product sentence is: the rule is the document, and two runtimes must agree.
Keep what you own
React Hook Form, Zod and JSON Schema are good at what they do. FormScript removes the copy of the rule, not the tools.
Not a novelty claim
This is a synthesis of ideas that already exist, aimed at one gap: a rule that two runtimes can both read.
Honest about level
Level 3 of 5 is claimed today. A second independent runtime is level 4, and it is not claimed yet.