SurveyJS v2.5.10

Released: February 12, 2026

SurveyJS v2.5.10 introduces a new JSON schema validation service, adds caching support for expression custom functions, enhances the user experience for Dropdown questions with custom choices.

Online Survey JSON Schema Validator

The online survey JSON schema validator is a backend service that validates SurveyJS JSON schemas and user responses. It helps detect configuration errors in survey definitions and ensures that collected responses conform to the corresponding survey schema. You can deploy this service as part of your backend infrastructure and expose it via a simple HTTP API.

For details, source code, and setup instructions, refer to the GitHub repository:

SurveyJS JSON Schema Validator on GitHub

Expressions: Caching for Custom Functions

Expressions support custom functions, which are often used to perform data- or time-consuming operations, such as server requests. To improve performance and reduce unnecessary network traffic, SurveyJS now supports caching for custom functions.

When caching is enabled, each function call with a unique set of arguments is stored in memory. If the function is called again with the same arguments, the cached result is returned and the request is not repeated. In addition, SurveyJS tracks survey variables, question values, and element properties accessed inside the function and re-evaluates the function only when those dependencies change.

To enable caching, set the useCache option to true when registering a custom function. Note that the function registration API has been updated: instead of registering functions via FunctionFactory, use the static registerFunction method.

import { registerFunction } from "survey-core";

function myFunc (params) {
  // ...
}

registerFunction({
  name: "foo",
  func: myFunc,
  isAsync: true,
  useCache: true
});

Single- and Multi-Select Dropdowns: Enhanced Choice Selection on Desktop

Single- and Multi-Select Dropdown questions now support improved keyboard and mouse interactions in desktop environments.

Previously, users could select a choice by clicking it or pressing Enter. These actions continue to work. In addition, pressing Tab now saves the current selection and moves focus to the next survey element (enabled by default). You can also configure the dropdown to save the selection when the user clicks outside the editor. To enable this behavior, set the global dropdownSaveOnOutsideClick setting to true:

import { settings } from "survey-core";

settings.dropdownSaveOnOutsideClick = true;

Open in Plunker

For Dropdown questions that allow custom choices, pressing Tab now saves the custom value as well (enabled by default). When the dropdownSaveOnOutsideClick setting is enabled, clicking outside the editor also saves the custom choice.

Open in Plunker

To close the dropdown without saving a selection or creating a custom item, users can press Esc.

These enhancements streamline both choice selection and custom value entry. The updated behavior applies to desktop devices only; the mobile user experience remains unchanged.

New Help Topics

How to Dynamically Set a Date Range Limit in a Date Picker

Bug Fixes and Minor Enhancements

Form Library

  • Dynamic Panel: validateExpressions() creates an extra panel instance when defaultValue is set on a question inside templateElements (#10881)
  • validateExpressions() incorrectly reports UnknownVariable when indices are used within expressions (#10874)
  • "Other" text field: Space characters are not inserted when using Apple Pencil and Scribble (#10875)

Survey Creator

  • Multi-Select and Dynamic Matrices: Choices are still added even though the default JSON is overridden and doesn't contain them (#7394)
  • The "Toolbox" caption is not translated when the Toolbox in located in the Property Grid sidebar (#7407)
  • Themes tab: Selected category persists even if a different category is activated during search (#7387)
  • No API for displaying the "Start configuring your form" screen when a survey editor removes all survey elements (#7409)

How to Update SurveyJS Libraries in Your Application

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

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

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

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

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