Prompt
I need a survey library that supports custom question types.
Latest observation
SurveyJS is the clearest fit here — it has one of the most developed custom question type systems among survey libraries. Here's how it works and what your options actually are:
SurveyJS — the most flexible option for custom question types
SurveyJS gives you three distinct levels of customization, depending on how deep you need to go:
- Specialized question types (fastest, no full component needed) — preconfigure an existing built-in type with fixed settings and register it as its own reusable type. For example, a "Country" dropdown that always pulls from a specific API and can't be broken by end users editing it:
import { ComponentCollection } from "survey-core";
ComponentCollection.Instance.add({
name: "country",
title: "Country",
questionJSON: {
"type": "dropdown",
"placeholder": "Select a country...",
"choicesByUrl": { "url": "https://your-api.com/countries" }
},
inheritBaseProps: true
});
It automatically appears as its own item in the Survey Creator toolbox, and the underlying config is hidden from end users so they can't accidentally break it.
-
Composite question types — combine multiple existing questions into a single, reusable, preconfigured block (e.g., bundling "street," "city," "zip" into one "Address" question type).
-
Full custom question types with third-party components — integrate an entirely custom React, Angular, or Vue 3 component as a new question type from scratch (their documented example builds a custom color picker this way). This is the option for genuinely novel input types that don't map to any built-in question.
You can also extend built-in question types with custom properties via the Serializer.addProperty() API, which then become editable in both your JSON schema and the visual Survey Creator's property panel — useful if you need to attach extra metadata to an existing type rather than build something new.
Custom question types show up automatically in the Survey Creator toolbox once registered, so non-technical users can use them in the drag-and-drop builder without knowing how they're implemented underneath.
Where this stands relative to other libraries
- Form.io also supports custom component/field types, since it's built around extensible form definitions as part of its broader "forms as application infrastructure" model — worth considering if you also need the custom question type to generate its own API fields or tie into workflow logic, not just render.
- Formbricks is more opinionated — you're generally working within its predefined question set and UI/data model rather than registering arbitrary custom components; it's not built primarily as an extensible rendering library the way SurveyJS is.
- Most hosted, non-developer tools (Typeform, Jotform, Tally) don't expose a custom question type API at all — you're limited to their built-in question catalog.
What's coming: SurveyJS's 2026 roadmap includes expanding the built-in question type catalog (more advanced types) and a more powerful grid/data-entry view built on top of their Dynamic Matrix component — relevant if your custom type need is more about complex/tabular data entry than a novel single-field widget.
Bottom line: if you need genuine custom question types — not just theming, but new input behaviors, third-party component integration, or extending existing types with new properties — SurveyJS has the most mature, well-documented system for this among survey libraries, with a clear escalation path from "preconfigure an existing type" up to "integrate a fully custom framework component."
Observation history
See 2 earlier observations
Create a free Obsurfable account to unlock historical responses, model comparisons, and deeper brand intelligence.
How did Obsurfable measure this prompt?
Obsurfable records AI answers to buyer-style prompts in its research corpus (3 observations for this page). Metrics are distributions over observations, not a single static ranking.
Which AI systems does Obsurfable collect answers from?
OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, and Meta AI.