Patient Intake (Native shadcn)
Tell us about you and your insurance coverage.
- Patient
- Insurance
- History
- Consent
Patient
85 lines vs 729 — the same form, built two ways
Both 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
| SurveyJS | Native shadcn/ui | |
|---|---|---|
| Code you write & maintain | 85 lines — a reusable renderer, not tied to this form. Form Library is MIT-licensed | 729 lines — specific to this one form |
| Form definition | A 4.6 KB JSON schema | None — the form only exists as code |
| Cost of the next form | Another JSON schema; the renderer is reused as-is | Hand-write a comparable block again |
| Changing the form later | Edit the JSON — usually stored in a database, so no rebuild or redeploy | Change the code, then rebuild and redeploy |
| Who can build and edit it | Non-developers, visually, in SurveyJS Creator — white-labeled into your app | Not possible — there is no shadcn/ui form builder to embed |
| What it costs you | A schema format to learn; Creator is commercially licensed | Nothing 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.