SurveyJS v2.3.12
Released: October 22, 2025
SurveyJS v2.3.12 introduces nested content within choice options. Authors can now embed questions and panels inside Checkboxes and Radio Button Group options to create richer follow-up logic. This update also includes bug fixes and minor enhancements across all SurveyJS libraries.
Choices with Nested Content
SurveyJS v2.3.12 adds the ability to nest questions and panels inside individual choice options in Checkboxes and Radio Button Group questions. When respondents select such an option, the corresponding nested elements appear dynamically.
To configure this layout in a survey JSON schema, add an elements array to a choice option. This array contains the questions and panels that should appear when that option is selected:
{
"elements": [
{
"type": "checkbox",
"name": "event_preferences",
"title": "Which types of events are you interested in attending?",
"choices": [
{
"value": "music",
"text": "Music events",
"elements": [ // Nested elements
{
"type": "checkbox",
"name": "music_event_type",
"title": "Which type of music event would you like to attend?",
"isRequired": true,
"choices": [
{
"value": "concert",
"text": "Concert",
"elements": [ // Nested elements
{
"type": "text",
"name": "preferred_concert_genre",
"titleLocation": "hidden",
"isRequired": true,
"placeholder": "Enter preferred music genre (e.g., Rock, Jazz)"
},
{
"type": "text",
"name": "preferred_concert_date",
"titleLocation": "hidden",
"inputType": "month",
"placeholder": "Preferred date"
}
]
}
]
}
]
}
]
}
]
}
In Survey Creator, authors can click the Expand button next to a choice option to add nested questions or panels directly on the design surface:
By default, this functionality is disabled. To enable it, configure the maxChoiceContentNestingLevel property. This property defines how many levels of nesting are allowed:
- 0 - Disables nesting (default).
- 1 - Allows first-level choice options to contain survey elements.
- 2 - Allows first- and second-level choice options to contain survey elements, and so on.
Example configuration:
import { SurveyCreatorModel } from "survey-creator-core";
const creatorOptions = {
// Set the property at design time
maxChoiceContentNestingLevel: 2
};
const creator = new SurveyCreatorModel(creatorOptions);
// ... or at runtime
creator.maxChoiceContentNestingLevel = 2;
Bug Fixes and Minor Enhancements
Form Library
- Dynamic Panel: Visibility condition works incorrectly when a nested question's name includes a dot (#10505)
- Signature question doesn't clear placeholder or previous errors after a server error (#10487)
- Question numbering: Extra dot appears after the parent question's index (#10517)
Survey Creator
- [Angular] Selecting a page on the design surface is slow (#7214)
- Choice, matrix row, and column values accept leading and trailing spaces (#7218)
- Question visibility condition changes when the question is duplicated (#7223)
- Console error is raised when editing a choice option whose value contains quotation marks (#7226)
Dashboard
- Table View: Add an API to manage data pagination (#320)
How to Update SurveyJS Libraries in Your Application
Angular
npm i survey-core@v2.3.12 survey-angular-ui@v2.3.12 --save
npm i survey-creator-core@v2.3.12 survey-creator-angular@v2.3.12 --save
npm i survey-analytics@v2.3.12 --save
npm i survey-pdf@v2.3.12 --save
React
npm i survey-core@v2.3.12 survey-react-ui@v2.3.12 --save
npm i survey-creator-core@v2.3.12 survey-creator-react@v2.3.12 --save
npm i survey-analytics@v2.3.12 --save
npm i survey-pdf@v2.3.12 --save
Vue.js
npm i survey-core@v2.3.12 survey-vue3-ui@v2.3.12 --save
npm i survey-creator-core@v2.3.12 survey-creator-vue@2.3.12 --save
npm i survey-analytics@2.3.12 --save
npm i survey-pdf@2.3.12 --save
HTML/CSS/JavaScript
<link href="https://unpkg.com/survey-core@2.3.12/survey-core.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/survey-core@2.3.12/survey.core.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/survey-js-ui@2.3.12/survey-js-ui.min.js"></script>
<script src="https://unpkg.com/survey-core@2.3.12/themes/index.min.js"></script>
<script src="https://unpkg.com/survey-creator-core@2.3.12/themes/index.min.js"></script>
<link href="https://unpkg.com/survey-creator-core@2.3.12/survey-creator-core.min.css" type="text/css" rel="stylesheet">
<script src="https://unpkg.com/survey-creator-core@2.3.12/survey-creator-core.min.js"></script>
<script src="https://unpkg.com/survey-creator-js@2.3.12/survey-creator-js.min.js"></script>
<link href="https://unpkg.com/survey-analytics@2.3.12/survey.analytics.min.css" rel="stylesheet">
<script src="https://unpkg.com/survey-analytics@2.3.12/survey.analytics.min.js"></script>
<script src="https://unpkg.com/survey-pdf@2.3.12/survey.pdf.min.js"></script>
<script src="https://unpkg.com/survey-pdf@2.3.12/pdf-form-filler.min.js"></script>