Patient Intake (SurveyJS)
Tell us about you and your insurance coverage.
Patient
First name 
Last name 
Date of birth 
Sex assigned at birth
Mobile phone
Preferred contact method
Patient Intake (Native MUI)
Tell us about you and your insurance coverage.
Patient
Insurance
History
Consent
Patient

We'll send appointment reminders to this number.

87 lines vs 618 — the same form, built two waysBoth columns render the Patient Intake form above. Counts are component code only — the SurveyJS column's 4.6 KB JSON schema is listed separately below. View both files → SurveyForm.tsx · NativeControls.tsx
SurveyJSNative MUI
Code you write & maintain87 lines — a reusable renderer, not tied to this form. Form Library is MIT-licensed618 lines — specific to this one form
Form definitionA 4.6 KB JSON schemaNone — the form only exists as code
Cost of the next formAnother JSON schema; the renderer is reused as-isHand-write a comparable block again
Changing the form laterEdit the JSON — usually stored in a database, so no rebuild or redeployChange the code, then rebuild and redeploy
Who can build and edit itNon-developers, visually, in SurveyJS Creator — white-labeled into your appNot possible — there is no MUI form builder to embed
What it costs youA schema format to learn; Creator is commercially licensedNothing extra — full control over every line

You write the renderer once. After that, every new form and every change to an existing one is data, not code — reviewed, deployed and owned differently, however it was written.