release notes

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:

Survey Creator: Specify the accepted file categories

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>

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.