SurveyJS v3.1.0

Released: September 15, 2026

SurveyJS v3.1.0 introduces survey-wide regional formatting for input masks. Date-time, numeric, and currency masks now follow the survey locale or independent format settings. This release also includes a related currency-mask breaking change, bug fixes, and minor enhancements.

For an overview of other recently released features, see:

What's New in SurveyJS v3.0

Survey-Wide Regional Formats for Input Masks

Date-time, numeric, and currency input masks can now derive their formats from a locale. By default, they use the survey's locale, so their date and time patterns, number separators, currency symbol, and currency symbol position match the survey language.

Use the new regionalFormat object to select a format locale independently of the survey language. The following configuration keeps survey texts in English but formats masked values according to German conventions:

const surveyJson = {
  "regionalFormat": {
    "locale": "de"
  },
  "elements": [
    {
      "type": "text",
      "name": "appointmentDate",
      "title": "Appointment date",
      "maskType": "datetime"
    },
    {
      "type": "text",
      "name": "amount",
      "title": "Amount",
      "maskType": "currency"
    },
    {
      "type": "text",
      "name": "quantity",
      "title": "Quantity",
      "maskType": "numeric"
    }
  ]
};

In addition to locale, the regionalFormat object lets you override individual format settings for the entire survey:

Settings specified in an individual question's maskSettings object take precedence over survey-wide settings. The complete inheritance order is:

SurveyModel.localeregionalFormat.locale → Overrides in regionalFormat → Overrides in maskSettings

The prefix and suffix properties of a currency mask are now deprecated. Existing survey JSON schemas that use them continue to work, but newly authored schemas should use currencySymbol and currencyPattern instead.

Demo: Masked Input Fields

[Breaking Change] Currency Input Mask Without a Prefix or Suffix and with saveMaskedValue: true Produces a Different Value

Starting with SurveyJS v3.1.0, a currency input mask that does not define a prefix or suffix uses the currency symbol and pattern associated with the survey's locale. If saveMaskedValue is true, the locale-specific currency symbol is now included in the value saved to survey results.

For example, with an English locale, entering 1234.56 produces the following saved values:

  • Earlier versions: "1,234.56"
  • v3.1.0: "$1,234.56"

This change does not affect currency masks with an explicitly configured prefix or suffix. It also does not affect the default behavior with saveMaskedValue: false, in which case the value is stored as the number 1234.56 without formatting.

To keep displaying and saving a currency value without a symbol, set the new currencySymbol property to an empty string:

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

New Demo

Form Library: Validator Notification Types

Bug Fixes and Minor Enhancements

Form Library

  • Input-per-page survey mode does not support questions nested in choice options (#11824)
  • Input-per-page survey mode: Dynamic Matrix shows "Response required" for untouched cells and expands detail panels while calculating navigation (#11833)
  • Specialized question type properties are missing from matrix columns (#11806)
  • Focus indicator is missing for selection-based questions when they are the first questions on a page and autoFocusFirstQuestion is enabled (#11844)
  • Dynamic Matrix: Greyed-out rows have clipped corners when alternateRows is enabled (#11662)
  • Rating Scale throws a console error when rateMin exceeds rateMax (#11832)
  • clearIncorrectValues() does not clear a non-existing Rating Scale item (#11829)
  • Slider: change event is ignored unless triggered after pointerdown or keydown (#11843)
  • Matrix column that inherits cellType drops type-specific properties and retains an incorrect templateQuestion type when cellType is loaded after columns (#11836)
  • choicesByUrl: Empty remote response does not clear a saved value that is not among available choices (#11851)

Survey Creator

  • Preview tab: Survey navigation buttons are wider than in the actual survey (#7996)

PDF Generator

  • save() hangs if IDocOptions are set for a document containing a panel with inline questions (#569)

How to Update SurveyJS Libraries in Your Application

To update your application to SurveyJS v3.1.0, 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.0 survey-angular-ui@3.1.0
npm i survey-creator-core@3.1.0 survey-creator-angular@3.1.0
npm i survey-analytics@3.1.0
npm i survey-pdf@3.1.0
React
npm i survey-core@3.1.0 survey-react-ui@3.1.0
npm i survey-creator-core@3.1.0 survey-creator-react@3.1.0
npm i survey-analytics@3.1.0
npm i survey-pdf@3.1.0
Vue.js
npm i survey-core@3.1.0 survey-vue3-ui@3.1.0
npm i survey-creator-core@3.1.0 survey-creator-vue@3.1.0
npm i survey-analytics@3.1.0
npm i survey-pdf@3.1.0
HTML/CSS/JavaScript
<link href="https://unpkg.com/survey-core@3.1.0/survey-core.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/survey-core@3.1.0/survey.core.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/survey-js-ui@3.1.0/survey-js-ui.min.js"></script>

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

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

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

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

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

Review the breaking changes described above and update your application as needed. If you are upgrading from v2.x, also 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.