When to use
Decide whether your SurveyJS application needs a server-owned response lifecycle.
Use dimah-survey when SurveyJS remains your schema, Creator, and renderer, but the server must control which document a respondent sees and preserve that document with the response.
The deciding requirement is a durable response snapshot—not simply rendering a SurveyJS form in React.
It is a good fit when
- authors need an editable draft and an explicit publish action
- responses must remain reproducible after the survey changes
- partial saves, submit, abandon, and reopen belong to one server protocol
- submit must validate against the definition that started the response
- your application must keep ownership of auth, data, and deployment
Choose another approach when you only need the SurveyJS renderer, want a hosted inbox and account system, or do not use SurveyJS JSON as the form definition.
Compare the ownership model
| Concern | dimah-survey | SurveyJS alone | Hosted product |
|---|---|---|---|
| Survey renderer | Your app uses SurveyJS | Your app uses SurveyJS | Product or embed |
| Publish workflow | Built in | Your implementation | Product workflow |
| Response definition snapshot | Built in | Your persistence design | Vendor-specific |
| Draft, submit, reopen, and CAS | Built in | Your implementation | Product workflow |
| Authentication | Your application | Your application | Vendor account |
| Data and migrations | Your application | Your application | Vendor storage |
| Authoring | Creator stays in your app | Survey Creator | Hosted builder |
This compares responsibility, not performance. The same application can use SurveyJS with dimah-survey for surveys and a different form library for unrelated UI.
Deliberate non-goals
dimah-survey does not render questions, ship Creator, define question types,
store file bytes, or provide accounts, dashboards, PDF generation, or an
analytics warehouse. It also has no plugin system and no survey-version table;
response.definition is the historical record.
SurveyJS Analytics or PDF tooling can consume each response's definition and
data. Do not interpret old response data against the current survey draft.
Next, review the concrete package boundaries or build the quickstart.