Question Types
19 question types are supported, forming one canonical set shared across all platforms:
| Type | Notes |
|---|---|
MULTIPLE_CHOICE_SINGLE | Renders as radio buttons, or a dropdown when config.display === 'dropdown' — there is no separate DROPDOWN type. |
MULTIPLE_CHOICE_MULTI | Renders as checkboxes; any subset of options can be selected. |
TEXT_SHORT | Single-line input with a live character counter; config.maxLength defaults to 250. |
TEXT_LONG | Multi-line textarea with a live character counter; config.maxLength defaults to 5000. |
NPS | Fixed 0–10 scale (not configurable); labels from config.minLabel/config.maxLabel, defaulting to “Not likely”/“Very likely”. |
RATING_STAR | Star rating sized by config.max (default 5); no config.min. |
RATING_SCALE | Numeric button scale over config.min–config.max (default 1–5), with optional config.minLabel/config.maxLabel. |
NUMBER_INPUT | Numeric input; config.min/config.max/config.step set native constraints and are re-validated on submit. |
BINARY | Yes/No toggle; uses question.options if provided, else config.trueLabel/config.falseLabel (default “Yes”/“No”). |
SLIDER | Slider over config.min–config.max (default 0–100), stepped by config.step (default 1); starts at the midpoint but reports null until touched. |
IMAGE_SELECTION | Single-select image grid; each option supplies imageUrl alongside its label. |
RANKING | Drag/keyboard-reorderable list; the answer is the resulting option-ID order, not a selection. |
CONTINUOUS_SUM | Numeric allocation across options that must sum to config.targetSum (default 100); blocks advancement until the total matches exactly. |
MATRIX_CHOICE_SINGLE | Matrix; empty column list if config.columns is missing (no numeric fallback). |
MATRIX_CHOICE_MULTI | Matrix of checkboxes (multiple selections per row); same column-resolution rule as MATRIX_CHOICE_SINGLE. |
MATRIX_RATING_SCALE | Derives numeric columns from config.min/config.max when config.columns is absent. |
MATRIX_STAR_RATING | Derives numeric columns from config.max when config.columns is absent. |
EMAIL_INPUT | Validated against config.validation.pattern/messageKey if supplied, else a built-in fallback regex. |
DATE_TIME | Native date/time picker; input type (date/time/datetime-local) chosen by config.dateMode, defaulting to 'both'. |
Randomization
config.randomizeOptions shuffles the option list, but only for
MULTIPLE_CHOICE_SINGLE, MULTIPLE_CHOICE_MULTI, IMAGE_SELECTION, and RANKING. It has no
effect on matrix types, which use rows/columns rather than an options list to shuffle,
and is explicitly excluded for CONTINUOUS_SUM to preserve author-defined category order —
for both, the flag is a no-op regardless of its value.