SurveyJS v2.3.7
Released: September 17, 2025
SurveyJS v2.3.7 introduces several new features, including exclusive columns in matrix questions, in-place editing control in Survey Creator, Dashboard support for composite and specialized question types, a custom delimiter for Table View item lists, and a JSON schema with properties metadata distributed in the npm package.
Matrix with Checkboxes: Exclusive Column
Starting with this release, matrix questions with checkboxes can include an exclusive column. When a user selects a checkbox in this column, all other checkboxes in the same row are automatically deselected. This is useful for options like "None", "Refuse to answer", or "Don't know".
To mark a column as exclusive, enable its isExclusive
property:
{
"elements": [
{
"type": "matrix",
"name": "device-usage",
"cellType": "checkbox",
"title": "Which devices do you use for each of the following activities?",
"columns": [
{ "value": "phone", "text": "Phone" },
{ "value": "tablet", "text": "Tablet" },
{ "value": "laptop", "text": "Laptop" },
{ "value": "smart-tv", "text": "Smart TV" },
{ "value": "none", "text": "None", "isExclusive": true }
],
"rows": [
{ "value": "videos", "text": "Watching videos" },
{ "value": "news", "text": "Reading news" },
{ "value": "calls", "text": "Video calls" },
{ "value": "shopping", "text": "Online shopping" }
]
}
]
}
[Survey Creator] Disable In-Place Editing for Individual Properties
Survey Creator v2.3.7 introduces the onAllowInplaceEdit
event. This allows you to disable direct text editing on the design surface for specific properties, which is useful when a rich text editor is integrated in the Property Grid, but the surface displays raw markup when users try to edit the properties on it.
The following code disables in-place editing for all "text"
and "html"
properties:
// ...
// Omitted: `SurveyCreatorModel` creation
// ...
creator.onAllowInplaceEdit.add((_, options) => {
const prop = Serializer.findProperty(
options.element.getType(),
options.propertyName
);
if (prop.type == "text" || prop.type == "html") {
options.allow = false;
}
});
[Dashboard] Support for Specialized and Composite Question Types
Dashboard visualizations now support specialized and composite question types. For example, consider the following composite question:
import { ComponentCollection } from "survey-core";
ComponentCollection.Instance.add({
name: "workEnvironmentFeedback",
title: "Work Environment & Wellbeing",
defaultQuestionTitle: "Please provide feedback on your work environment and wellbeing",
elementsJSON: [
{ type: "rating", name: "workstationComfort", title: "How comfortable is your workstation?", rateMin: 1, rateMax: 5 },
{ type: "dropdown", name: "equipmentQuality", title: "Which equipment needs improvement?", choices: ["Laptop", "Monitor", "Chair", "Keyboard"], showOtherItem: true, showNoneItem: true },
{ type: "radiogroup", name: "noiseLevel", title: "How would you describe the noise level in your work area?", choices: ["Quiet", "Moderate", "Noisy"] },
{ type: "rating", name: "workLifeBalance", title: "How do you rate your work-life balance?", rateMin: 1, rateMax: 5 },
{ type: "comment", name: "openFeedback", title: "Any additional feedback or suggestions?" }
]
});
Here's how this question is visualized in the Dashboard:

[Table View] API to Change the Delimiter in Item Lists
Table View now supports a custom itemsDelimiter
property to change how item lists are displayed. For example, the following code uses a pipe |
as a delimiter:
import { Model } from 'survey-core';
import { Tabulator } from 'survey-analytics/survey.analytics.tabulator';
const surveyJson = { /* Survey JSON schema */};
const survey = new Model(surveyJson);
const data = [ /* Survey responses */ ];
const tableView = new Tabulator(
survey,
data,
{
itemsDelimiter: " | "
}
);

JSON Schema with Properties Metadata Included in the Distribution Package
A JSON schema with properties metadata is now bundled with SurveyJS. This schema helps validate survey JSON structures and ensures that question and property definitions are consistent with the framework. You can use it in editors, linters, or automated testing workflows to detect configuration errors early.
Starting with v2.3.7, the schema is available both in the survey-core
npm package and via CDN.
Bug Fixes and Minor Enhancements
Form Library
- Expression functions: Add access to the name of the property that triggered the expression (#10323)
- Yes/No (Boolean): The "required" mark doesn't appear when the question is rendered as a checkbox (#10320)
- Numeric Single-Line Input: Data validation ignores the
step
value (#10348) - "Skip To" trigger navigates to a wrong page when its expression contains calculated values (#10376)
- [Vue 3] "Thank You" page doesn't display an updated score (#10381)
- Conditional visibility doesn't work for a Panel nested inside a Dynamic Panel in input-per-page survey mode (#10360)
- File Upload raises an exception when uploading an image on a screen size less than 300px (#10363)
- Dynamic Matrix: Matrix rows are incorrectly indicated as droppable inside a detail section (#10365)
Survey Creator
- Multiple Textboxes: A textbox's bottom border is cut in edit state (#7140)
Dashboard
- Enhance the accessibility of chart titles (#619)
PDF Generator
- Signature is misaligned when exported to PDF (#429)
How to Update SurveyJS Libraries in Your Application
Angular
npm i survey-core@v2.3.7 survey-angular-ui@v2.3.7 --save
npm i survey-creator-core@v2.3.7 survey-creator-angular@v2.3.7 --save
npm i survey-analytics@v2.3.7 --save
npm i survey-pdf@v2.3.7 --save
React
npm i survey-core@v2.3.7 survey-react-ui@v2.3.7 --save
npm i survey-creator-core@v2.3.7 survey-creator-react@v2.3.7 --save
npm i survey-analytics@v2.3.7 --save
npm i survey-pdf@v2.3.7 --save
Vue.js
npm i survey-core@v2.3.7 survey-vue3-ui@v2.3.7 --save
npm i survey-creator-core@v2.3.7 survey-creator-vue@2.3.7 --save
npm i survey-analytics@2.3.7 --save
npm i survey-pdf@2.3.7 --save
HTML/CSS/JavaScript
<link href="https://unpkg.com/survey-core@2.3.7/survey-core.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/survey-core@2.3.7/survey.core.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/survey-js-ui@2.3.7/survey-js-ui.min.js"></script>
<script src="https://unpkg.com/survey-core@2.3.7/themes/index.min.js"></script>
<script src="https://unpkg.com/survey-creator-core@2.3.7/themes/index.min.js"></script>
<link href="https://unpkg.com/survey-creator-core@2.3.7/survey-creator-core.min.css" type="text/css" rel="stylesheet">
<script src="https://unpkg.com/survey-creator-core@2.3.7/survey-creator-core.min.js"></script>
<script src="https://unpkg.com/survey-creator-js@2.3.7/survey-creator-js.min.js"></script>
<link href="https://unpkg.com/survey-analytics@2.3.7/survey.analytics.min.css" rel="stylesheet">
<script src="https://unpkg.com/survey-analytics@2.3.7/survey.analytics.min.js"></script>
<script src="https://unpkg.com/survey-pdf@2.3.7/survey.pdf.min.js"></script>
<script src="https://unpkg.com/survey-pdf@2.3.7/pdf-form-filler.min.js"></script>