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;
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.
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 whendefaultValueis set on a question insidetemplateElements(#10881) validateExpressions()incorrectly reportsUnknownVariablewhen 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>