SurveyJS v2.1.0
Released: May 27, 2025
SurveyJS v2.1.0 enhances the Form Library's accessibility up to 100%, adds the ability to populate existing PDF forms with survey responses, and introduces a breaking change: survey element titles no longer use HTML heading tags.
Form Library Accessibility Reaches 100%
Over the past several releases, the SurveyJS team has worked hard to enhance the accessibility of our components and ensure full compliance with modern standards, including WCAG, Section 508, and ARIA. We're proud to announce that as of v2.1.0, SurveyJS Form Library is 100% accessible when using the Contrast theme.
Accessibility compliance has been verified using the Axe® testing system. You can confirm this on our website—each Form Library demo now includes an Accessibility Compliance section where you can run Axe® validation yourself.

Our default theme currently has a minor issue related to color contrast. We are actively working to resolve it and ensure that all SurveyJS themes achieve full accessibility compliance.
Populate Existing PDF Forms with Survey Responses
PDF forms often include interactive fields that allow users to fill out the form within their PDF viewer and then save, share, or print it. Starting with v2.1.0, SurveyJS introduces a plugin that enables you to link survey fields to editable fields within a PDF form. Users can enter data through a dynamic SurveyJS interface, and their responses will automatically populate the corresponding fields in the PDF document. This feature streamlines data entry and eliminates the need to fill out PDF forms manually. For more details, see the following demos:
Fill In PDF Form Fields Using pdf-lib
Fill In PDF Form Fields Using PDF.js
[Breaking Change] Survey element titles no longer use HTML heading tags
In previous versions, titles for questions, panels, pages, and the survey itself were rendered using HTML heading tags (<h1>
-<h6>
). This helped search engines to understand the hierarchy of the survey content. However, it also introduced accessibility issues when heading levels were skipped—for example, <h1>
followed directly by <h3>
—which violates HTML standards.
Although a SurveyJS form can maintain consistent heading levels within its own structure, it has no control over the broader context of the page it's embedded in. To prevent accessibility violations and ensure consistent HTML semantics across all environments, survey element titles are now rendered using <div>
elements by default.
If you want to revert to heading tags or use other HTML elements for titles, configure the titleTags
property in global survey settings. The following code restores the previous default value for this property:
import { settings } from "survey-core";
settings.titleTags = {
survey: "h3",
page: "h4",
panel: "h4",
question: "h5"
}
Bug Fixes and Minor Enhancements
Form Library
- [Safari on iOS] Input mask: It's impossible to enter certain dates when the mask pattern is
yyyy-mm-dd
(#9924) - Switching to the next page in code works incorrectly in question-per-page mode if a time limit is set (#9917)
- Localization: Incorrect locale code is used for the Ukrainian language (#9908)
- [Mobile] Composite question: Matrices are rendered incorrectly (#9927)
- Composite question: The "Other" value is empty for a Checkboxes question if the
storeOthersAsComment
property is enabled by default (#9929) setValueExpression
isn't triggered for the Matrices and Dynamic Panels that aren't rendered yet (#9942)- [Survey Creator] A matrix column remains required after unselecting the Required checkbox if the
isRequired
property's default value is overridden for the Question class (#9920)
Survey Creator
visibleIf
expression is not updated for matrix rows and columns when a source question's name is changed (#6910)
How to Update SurveyJS Libraries in Your Application
Angular
npm i survey-core@2.1.0 survey-angular-ui@2.1.0 --save
npm i survey-creator-core@2.1.0 survey-creator-angular@2.1.0 --save
npm i survey-analytics@2.1.0 --save
npm i survey-pdf@2.1.0 --save
React
npm i survey-core@2.1.0 survey-react-ui@2.1.0 --save
npm i survey-creator-core@2.1.0 survey-creator-react@2.1.0 --save
npm i survey-analytics@2.1.0 --save
npm i survey-pdf@2.1.0 --save
Vue.js
npm i survey-core@2.1.0 survey-vue3-ui@2.1.0 --save
npm i survey-creator-core@2.1.0 survey-creator-vue@2.1.0 --save
npm i survey-analytics@2.1.0 --save
npm i survey-pdf@2.1.0 --save
HTML/CSS/JavaScript
<link href="https://unpkg.com/survey-core@2.1.0/survey-core.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/survey-core@2.1.0/survey.core.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/survey-js-ui@2.1.0/survey-js-ui.min.js"></script>
<script src="https://unpkg.com/survey-core@2.1.0/themes/index.min.js"></script>
<script src="https://unpkg.com/survey-creator-core@2.1.0/themes/index.min.js"></script>
<link href="https://unpkg.com/survey-creator-core@2.1.0/survey-creator-core.min.css" type="text/css" rel="stylesheet">
<script src="https://unpkg.com/survey-creator-core@2.1.0/survey-creator-core.min.js"></script>
<script src="https://unpkg.com/survey-creator-js@2.1.0/survey-creator-js.min.js"></script>
<link href="https://unpkg.com/survey-analytics@2.1.0/survey.analytics.min.css" rel="stylesheet">
<script src="https://unpkg.com/survey-analytics@2.1.0/survey.analytics.min.js"></script>
<script src="https://unpkg.com/survey-pdf@2.1.0/survey.pdf.min.js"></script>
<script src="https://unpkg.com/survey-pdf@2.1.0/pdf-form-filler.min.js"></script>