release notes

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.

SurveyJS Checkboxes: Nest content within choice options

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"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

View Form Library Demo

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:

SurveyJS Creator: Nest content within choice options

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;

View Survey Creator Demo

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>

Your cookie settings

We use cookies to make your browsing experience more convenient and personal. Some cookies are essential, while others help us analyse traffic. Your personal data and cookies may be used for ad personalization. By clicking “Accept All”, you consent to the use of all cookies as described in our Terms of Use and Privacy Statement. You can manage your preferences in “Cookie settings.”

Your renewal subscription expires soon.

Since the license is perpetual, you will still have permanent access to the product versions released within the first 12 month of the original purchase date.

If you wish to continue receiving technical support from our Help Desk specialists and maintain access to the latest product updates, make sure to renew your subscription by clicking the "Renew" button below.

Your renewal subscription has expired.

Since the license is perpetual, you will still have permanent access to the product versions released within the first 12 month of the original purchase date.

If you wish to continue receiving technical support from our Help Desk specialists and maintain access to the latest product updates, make sure to renew your subscription by clicking the "Renew" button below.