release notes

SurveyJS v2.3.13

Released: October 28, 2025

SurveyJS v2.3.13 introduces the ability to define custom question numbering patterns for individual survey pages and dynamic panels, and adds an option to completely remove the Property Grid from Survey Creator. This release also includes bug fixes and minor enhancements across all SurveyJS libraries.

Custom Question Numbering Pattern Within Survey Pages and Dynamic Panels

When question numbering is enabled, the survey's questionStartIndex property determines the question numbering pattern throughout the form. Starting with SurveyJS v2.3.12, you can also set questionStartIndex for individual survey pages and dynamic panels to create independent numbering patterns.

SurveyJS Form Library: Custom question numbering for pages and dynamic panels

The following example demonstrates how to assign unique questionStartIndex values to pages and dynamic panels:

  • The survey restarts numbering on each page ("showQuestionNumbers": "onpage").
  • Each page defines its own questionStartIndex that includes the page and question numbers.
  • Questions within the team_member_feedback dynamic panel has an internal question numbering pattern.
Survey JSON
{
  "title": "Product Feedback Survey",
  "showQuestionNumbers": "onpage",
  "questionStartIndex": "Page 1, Question 1",
  "pages": [
    {
      "name": "page_product_experience",
      "title": "Product Experience",
      "elements": [
        {
          "type": "radiogroup",
          "name": "overall_satisfaction",
          "title": "How satisfied are you with the product?",
          "choices": [
            "Very satisfied",
            "Satisfied",
            "Neutral",
            "Dissatisfied",
            "Very dissatisfied"
          ]
        },
        {
          "type": "checkbox",
          "name": "product_features_used",
          "title": "Which features do you use most often?",
          "choices": [
            "Dashboard",
            "Reports",
            "Notifications",
            "Integrations",
            "Mobile App"
          ]
        },
        {
          "type": "comment",
          "name": "improvement_suggestions",
          "title": "What would you like us to improve?"
        }
      ]
    },
    {
      "name": "page_support_feedback",
      "title": "Support Experience",
      "questionStartIndex": "Page 2, Question 1",
      "elements": [
        {
          "type": "rating",
          "name": "support_quality",
          "title": "Rate the quality of customer support"
        },
        {
          "type": "radiogroup",
          "name": "issue_resolution_speed",
          "title": "How quickly was your issue resolved?",
          "choices": [
            "Within a few hours",
            "Within a day",
            "Within a week",
            "More than a week"
          ]
        },
        {
          "type": "comment",
          "name": "support_feedback",
          "title": "Any additional feedback about our support?"
        }
      ]
    },
    {
      "name": "page_team_feedback",
      "title": "Team Member Feedback",
      "questionStartIndex": "Page 3, Question 1",
      "elements": [
        {
          "type": "paneldynamic",
          "name": "team_member_feedback",
          "title": "Provide feedback for each team member you interacted with",
          "templateTitle": "Team Member #{panelIndex}",
          "questionStartIndex": "Panel Question 1",
          "showQuestionNumbers": "onpanel",
          "templateElements": [
            {
              "type": "text",
              "name": "member_name",
              "title": "Team member name"
            },
            {
              "type": "rating",
              "name": "member_professionalism",
              "title": "Rate their professionalism"
            },
            {
              "type": "comment",
              "name": "member_feedback",
              "title": "Comments"
            }
          ],
          "panelAddText": "Add team member",
          "panelRemoveText": "Remove"
        }
      ]
    },
    {
      "name": "page_final",
      "title": "Final Thoughts",
      "questionStartIndex": "Page 4, Question 1",
      "elements": [
        {
          "type": "comment",
          "name": "final_message",
          "title": "Is there anything else you'd like to share?"
        },
        {
          "type": "rating",
          "name": "recommendation_score",
          "title": "How likely are you to recommend our product to others?"
        }
      ]
    }
  ]
}

Open in Plunker

When a page defines its own questionStartIndex, all subsequent pages inherit this value until another page specifies a new one.

Remove the Property Grid from Survey Creator

To restrict content authors to the design surface only, you can now completely remove the Property Grid from the Survey Creator interface. This release introduces the removeSidebar property, which removes the Property Grid entirely.

import { SurveyCreatorModel } from "survey-creator-core";

const creator = new SurveyCreatorModel(creatorOptions);
creator.removeSidebar = true;

To keep the Property Grid available but temporarily hidden, use the showSidebar property instead.

Bug Fixes and Minor Enhancements

Form Library

  • {panelIndex} is not updated when survey.data is defined (#10521)
  • Expressions do not work correctly when they reference a question with only a number in its name (#10526)
  • Choices with Nested Content: Nested question values persist when clearInvisibleValues is "onHiddenContainer" and an option is unchecked and checked again (#10530)
  • visibleIf condition doesn't work when it references a question that contains a dot and space in its name (#10532)
  • [Survey Creator] Dynamic Panel: Changes in "Question numbering" aren't reflected on the design surface if the parent element's numbering is disabled (#10539)

Survey Creator

  • The Themes tab displays the timer if it is enabled for the survey (#7228)
  • Converting a Single-Line Input question to Email doesn't add "inputType": "email" to the survey JSON schema (#7225)
  • Yes/No (Boolean) question: Label for "True" and Label for "False" editors should be text boxes rather than text areas (#7229)
  • Enabling the page-by-page edit mode hides the JSON Editor tab (#7236)

How to Update SurveyJS Libraries in Your Application

Angular
npm i survey-core@v2.3.13 survey-angular-ui@v2.3.13 --save
npm i survey-creator-core@v2.3.13 survey-creator-angular@v2.3.13 --save
npm i survey-analytics@v2.3.13 --save
npm i survey-pdf@v2.3.13 --save
React
npm i survey-core@v2.3.13 survey-react-ui@v2.3.13 --save
npm i survey-creator-core@v2.3.13 survey-creator-react@v2.3.13 --save
npm i survey-analytics@v2.3.13 --save
npm i survey-pdf@v2.3.13 --save
Vue.js
npm i survey-core@v2.3.13 survey-vue3-ui@v2.3.13 --save
npm i survey-creator-core@v2.3.13 survey-creator-vue@2.3.13 --save
npm i survey-analytics@2.3.13 --save
npm i survey-pdf@2.3.13 --save
HTML/CSS/JavaScript
<link href="https://unpkg.com/survey-core@2.3.13/survey-core.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/survey-core@2.3.13/survey.core.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/survey-js-ui@2.3.13/survey-js-ui.min.js"></script>

<script src="https://unpkg.com/survey-core@2.3.13/themes/index.min.js"></script>
<script src="https://unpkg.com/survey-creator-core@2.3.13/themes/index.min.js"></script>

<link href="https://unpkg.com/survey-creator-core@2.3.13/survey-creator-core.min.css" type="text/css" rel="stylesheet">
<script src="https://unpkg.com/survey-creator-core@2.3.13/survey-creator-core.min.js"></script>
<script src="https://unpkg.com/survey-creator-js@2.3.13/survey-creator-js.min.js"></script>

<link href="https://unpkg.com/survey-analytics@2.3.13/survey.analytics.min.css" rel="stylesheet">
<script src="https://unpkg.com/survey-analytics@2.3.13/survey.analytics.min.js"></script>

<script src="https://unpkg.com/survey-pdf@2.3.13/survey.pdf.min.js"></script>
<script src="https://unpkg.com/survey-pdf@2.3.13/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.