SurveyJS v3.1.2

Released: September 29, 2026

SurveyJS v3.1.2 adds response data verification, linting in Survey Creator's JSON Editor, and trailing zeros in numeric and currency input masks, along with bug fixes and minor enhancements.

For an overview of the major features introduced in SurveyJS v3.0, see:

What's New in SurveyJS v3.0

API for Verifying User Responses

The new setData() method loads a response data object into the SurveyModel, applies survey logic, and checks the resulting values against the survey definition. It returns an array of issues. Pass an options object as the second argument to configure which issues it reports:

const issues = survey.setData(response, {
  reportExpressionResultMismatches: true
});

The example above enables reporting of changes made during loading alongside the default checks. The available options are listed below:

Option Default Reports
reportUnknownProperties true Data properties that do not correspond to a recognized survey result field.
reportInvalidValueTypes true Values whose type or structure does not match the question configuration.
reportInvalidChoiceValues true Values that do not match an available choice, matrix column or row, or rating value.
reportExpressionResultMismatches false Values added, changed, or removed by expressions, defaults, triggers, or other logic during loading.

Each returned issue includes its type, path, and affected value. For an expressionResultMismatch issue, value contains the original value and expressionResult contains the value after loading. This difference can occur even when the supplied data is valid.

Documentation: Validate Response Data

[Survey Creator] Built-In Linter in the JSON Editor Tab

Survey Creator's JSON Editor tab now includes the SurveyJS Linter, helping form authors catch logic defects while editing. It detects broken question references, conditions that can never be true, invalid choice comparisons, and cycles in calculated values or triggers.

Survey Creator: Linter in the JSON Editor tab

Handle the new onLintSurvey event and use options.lintOptions to adjust rule severity, disable checks, or declare application-supplied variables and functions.

import { SurveyCreatorModel } from "survey-creator-core";

const creator = new SurveyCreatorModel();

creator.onLintSurvey.add((_, options) => {
  options.lintOptions.rules["property/unknown"] = "warning";
  options.lintOptions.knownVariables = ["customerTier"];
});

Documentation: Linter Rules and Configuration

Trailing Zeros in Numeric and Currency Input Masks

Numeric and currency input masks now support trailing zeros, which pad the fractional part of a value to the specified precision.

Set maskSettings.showTrailingZeros to true to display trailing zeros. With the default precision of 2, entering "1" displays "1.00", and entering "1.5" displays "1.50".

const surveyJson = {
  "elements": [{
    "type": "text",
    "name": "amount",
    "title": "Amount",
    "maskType": "numeric",
    "maskSettings": {
      "showTrailingZeros": true
    }
  }]
};

Example: Trailing Zeros

Bug Fixes and Minor Enhancements

Form Library

  • Progress bar: belowHeader location is not recommended when displaying progress by questions (#11900)
  • Decimal input mask allows values outside the defined [min, max] range (#11891)
  • Animations do not respect prefers-reduced-motion (#11588)
  • Decorative checkbox icon may be announced by VoiceOver in iOS Safari (#11897)
  • VoiceOver announces a single checkbox item three times (#11898)
  • Root element incorrectly renders lang="en" when the survey's default locale is not English (#11912)
  • Dynamic Matrix: onMatrixRowAdded and detailPanelShowOnAdding target the wrong row when rowsVisibleIf hides the newly added row (#11857)
  • Composite question should render without panel styling in a panelless theme (#11895)
  • Required choice comment validation highlights the choice items instead of the comment box (#11902)
  • Numeric and currency masks with saveMaskedValue: displayValue is incorrect when the decimal separator is a comma (#11910)
  • autoFocusFirstError: false is ignored when navigating to the next page with checkErrorsMode: "onNextPage" (#11927)
  • [Survey Creator] Clicking "Add Question" triggers a React state update during render (#11904)

Survey Creator

  • [Performance] Theme tab opens slowly from the Designer tab (#8025)
  • "Validation rules" table: "Show Details" doesn't open the detail section (#8029)
  • Logic tab: Do not swap operands for constant-on-the-left conditions (#8021)

How to Update SurveyJS Libraries in Your Application

To update your application to SurveyJS v3.1.2, install the packages you use or replace your existing script and stylesheet links with the versioned links below:

Angular
npm i survey-core@3.1.2 survey-angular-ui@3.1.2
npm i survey-creator-core@3.1.2 survey-creator-angular@3.1.2
npm i survey-analytics@3.1.2
npm i survey-pdf@3.1.2
React
npm i survey-core@3.1.2 survey-react-ui@3.1.2
npm i survey-creator-core@3.1.2 survey-creator-react@3.1.2
npm i survey-analytics@3.1.2
npm i survey-pdf@3.1.2
Vue.js
npm i survey-core@3.1.2 survey-vue3-ui@3.1.2
npm i survey-creator-core@3.1.2 survey-creator-vue@3.1.2
npm i survey-analytics@3.1.2
npm i survey-pdf@3.1.2
HTML/CSS/JavaScript
<link href="https://unpkg.com/survey-core@3.1.2/survey-core.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/survey-core@3.1.2/survey.core.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/survey-js-ui@3.1.2/survey-js-ui.min.js"></script>

<script src="https://unpkg.com/survey-core@3.1.2/themes/index.min.js"></script>

<link href="https://unpkg.com/survey-creator-core@3.1.2/survey-creator-core.min.css" type="text/css" rel="stylesheet">
<script src="https://unpkg.com/survey-creator-core@3.1.2/survey-creator-core.min.js"></script>
<script src="https://unpkg.com/survey-creator-js@3.1.2/survey-creator-js.min.js"></script>

<link href="https://unpkg.com/survey-analytics@3.1.2/survey.analytics.min.css" rel="stylesheet">
<script src="https://unpkg.com/survey-analytics@3.1.2/survey.analytics.min.js"></script>

<link href="https://unpkg.com/survey-analytics@3.1.2/survey.analytics.tabulator.min.css" rel="stylesheet">
<script src="https://unpkg.com/survey-analytics@3.1.2/survey.analytics.tabulator.min.js"></script>

<script src="https://unpkg.com/survey-pdf@3.1.2/survey.pdf.min.js"></script>
<script src="https://unpkg.com/survey-pdf@3.1.2/pdf-form-filler.min.js"></script>

If you are upgrading from v2.x, review the breaking changes introduced in SurveyJS v3.0 and subsequent updates.

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.