SurveyJS v2.3.16
Released: November 19, 2025
SurveyJS v2.3.16 introduces category-based file type validation in File Upload questions and new expression syntax for referencing previous, next, and last rows or panels in matrices and Dynamic Panel.
File Upload: Specify Accepted File Types Using Categories
A File Upload question allows respondents to attach files to a form or survey. Previously, you could restrict uploads by listing file extensions in the acceptedTypes property. Starting with v2.3.16, you can define accepted file types using predefined file categories.
The following categories are available by default:
| Category name | File types |
|---|---|
"image" |
.png, .jpg, .jpeg, .gif, .bmp, .tiff, .svg |
"video" |
.mp4, .avi, .mov, .wmv, .flv, .mkv, .webm |
"audio" |
.mp3, .wav, .aac, .ogg, .wma, .flac |
"document" |
.pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .txt, .rtf, .odt |
"archive" |
.zip, .rar, .7z, .tar, .gz |
Add one or more categories to the acceptedCategories array as shown below. You can use acceptedCategories together with acceptedTypes to create a combined list of allowed file types:
{
"elements": [{
"name": "file-upload",
"type": "file",
"title": "Please select files to upload",
"acceptedCategories": [ "document" ],
"acceptedTypes": ".csv"
}]
}
In Survey Creator, use the Accepted file categories multi-select dropdown. To allow additional file extensions beyond the selected categories, choose Custom in that dropdown. This reveals the Additional file extensions editor:
Expressions: Access the Last, Next, and Previous Panel or Row in a Matrix or Dynamic Panel
SurveyJS v2.3.16 enhances expression capabilities by adding new syntax for navigating between matrix rows and dynamic panels. You can now easily reference previous or next items, as well as use negative indexing to access the last row or panel.
| Question Type | Syntax | Action |
|---|---|---|
| Single-Select Matrix, Multi-Select Matrix, Dynamic Matrix | {prevRow.columnid} |
Accesses a cell in the previous row. |
{nextRow.columnid} |
Accesses a cell in the next row. | |
{matrixid[-1].columnid}{matrixid[-2].columnid}... |
Accesses a cell in the last row, the row before the last, and so on. | |
| Dynamic Panel | {prevPanel.questionid} |
Accesses a question in the previous panel. |
{nextPanel.questionid} |
Accesses a question in the next panel. | |
{dpanelid[-1].questionid}{dpanelid[-2].questionid}... |
Accesses a question in the last panel, the panel before the last, and so on. |
Bug Fixes and Minor Enhancements
Form Library
- Date and time question stores values in a different format when set via
currentDate()(#10610) - Specialized Checkboxes Question: The "Other" input field is focused on page load (#10016)
- Expanded matrix row doesn't support drag and drop (#10597)
Survey Creator
- Add the Save button to the Translation tab (#7235)
- Question names are treated as case-insensitive (#7261)
- Slider allows custom labels outside the defined min/max range (#7250)
How to Update SurveyJS Libraries in Your Application
Angular
npm i survey-core@v2.3.16 survey-angular-ui@v2.3.16 --save
npm i survey-creator-core@v2.3.16 survey-creator-angular@v2.3.16 --save
npm i survey-analytics@v2.3.16 --save
npm i survey-pdf@v2.3.16 --save
React
npm i survey-core@v2.3.16 survey-react-ui@v2.3.16 --save
npm i survey-creator-core@v2.3.16 survey-creator-react@v2.3.16 --save
npm i survey-analytics@v2.3.16 --save
npm i survey-pdf@v2.3.16 --save
Vue.js
npm i survey-core@v2.3.16 survey-vue3-ui@v2.3.16 --save
npm i survey-creator-core@v2.3.16 survey-creator-vue@2.3.16 --save
npm i survey-analytics@2.3.16 --save
npm i survey-pdf@2.3.16 --save
HTML/CSS/JavaScript
<link href="https://unpkg.com/survey-core@2.3.16/survey-core.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/survey-core@2.3.16/survey.core.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/survey-js-ui@2.3.16/survey-js-ui.min.js"></script>
<script src="https://unpkg.com/survey-core@2.3.16/themes/index.min.js"></script>
<script src="https://unpkg.com/survey-creator-core@2.3.16/themes/index.min.js"></script>
<link href="https://unpkg.com/survey-creator-core@2.3.16/survey-creator-core.min.css" type="text/css" rel="stylesheet">
<script src="https://unpkg.com/survey-creator-core@2.3.16/survey-creator-core.min.js"></script>
<script src="https://unpkg.com/survey-creator-js@2.3.16/survey-creator-js.min.js"></script>
<link href="https://unpkg.com/survey-analytics@2.3.16/survey.analytics.min.css" rel="stylesheet">
<script src="https://unpkg.com/survey-analytics@2.3.16/survey.analytics.min.js"></script>
<script src="https://unpkg.com/survey-pdf@2.3.16/survey.pdf.min.js"></script>
<script src="https://unpkg.com/survey-pdf@2.3.16/pdf-form-filler.min.js"></script>