JavaScript modes

  • Release version: Zurich
  • Updated July 31, 2025
  • 2 minutes to read
  • Summarize
    Summarized using AI
    This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.

    Summary of JavaScript modes

    JavaScript mode in ServiceNow defines the design and runtime settings for custom applications and scripts by controlling which JavaScript features are accessible. There are three modes aligned with different ECMAScript standards to support both legacy and modern scripting needs:

    Show full answer Show less
    • ECMAScript 2021 (ES12) mode
    • ES5 Standards mode
    • Compatibility mode

    The default mode varies by application type: new scoped applications default to ECMAScript 2021 (ES12), new global applications default to ES5 Standards, and individual scripts can override these defaults.

    JavaScript Modes Explained

    • ECMAScript 2021 (ES12) mode: This mode is the default for new scoped applications and can be enabled for individual scripts in global applications. It supports modern ECMAScript 2021 and some 2022 features such as default function parameters, rest parameters, for-of loops, template literals, destructuring, arrow functions, classes, maps, sets, and optional chaining. It does not preserve legacy behaviors from before the Tokyo release.
    • ES5 Standards mode: Default for new global applications and available for scoped applications. It supports ECMAScript 5 syntax and features like strict mode, enhanced object property controls, new Array and Date methods, native JSON support, and compatibility with modern third-party libraries like lodash.js and moment.js. It does not retain legacy behaviors before the Helsinki release.
    • Compatibility mode: Used for scripts developed before ES5 Standards mode was introduced. It differs from the previous engine mainly in JSON handling, supporting both native ES5 JSON methods and legacy JSON encode/decode methods. This mode does not support third-party JavaScript libraries and is intended for legacy script compatibility.

    Practical Considerations for ServiceNow Customers

    • Switching JavaScript modes can alter the behavior of existing scripts, so it is important to review potential impacts and test thoroughly before changing modes on applications or scripts.
    • To enable the latest ECMAScript 2021 features in scripts within ES5 or Compatibility mode applications, you can individually activate ECMAScript 2021 (ES12) mode for those server-side scripts.
    • Choosing the appropriate mode helps balance the use of modern JavaScript capabilities with the need for legacy compatibility, ensuring script reliability and access to contemporary language features.

    JavaScript mode is a design and runtime setting for custom applications and scripts. To support existing server-side scripts and new scripts developed to the ECMAScript 2021 standard, the JavaScript engine has three modes: ECMAScript 2021 (ES12), ES5 Standards, and Compatibility.

    The JavaScript mode controls which JavaScript features you have access to in an application or script. The default mode for new scoped applications is ECMAScript 2021 (ES12) and for new global applications, it’s ES5 Standards. You can also turn on ECMAScript 2021 (ES12) mode for individual scripts in applications that use ES5 Standards or Compatibility mode.

    For more information about features supported by the ECMAScript 2021 (ES12) and ES5 Standards modes, see JavaScript engine feature support.

    ECMAScript 2021 (ES12) mode

    ECMAScript 2021 (ES12) mode is the default mode when you create new scoped applications. It isn't supported for global applications but can be turned on for individual global scripts.

    When you create new scripts, ECMAScript 2021 (ES12) mode is turned on by default regardless of the JavaScript mode configured for the application. This mode doesn’t preserve the legacy behaviors in the pre-Tokyo JavaScript engine.

    ECMAScript 2021 (ES12) mode supports a subset of ECMAScript 2021 (ES12) and ECMAScript 2022 (ES13) syntax and features, including the following features:
    • Default function parameters
    • Rest parameters
    • For-of loops
    • Template literals
    • Destructuring
      • Declarations
      • Assignment
      • Parameters
    • Const declaration
    • Let declaration
    • Arrow functions
    • Class declarations
    • Map set
    • Optional chaining operator (?.)

    To learn about specific ECMAScript 2021 (ES12) features, see the Let's Learn ECMAScript 2021 videos on the ServiceNow Dev Program YouTube channel.

    ES5 Standards mode

    ES5 Standards mode is the default mode for new global applications and is an option for scoped applications. This mode doesn’t preserve the legacy behaviors in the pre-Helsinki JavaScript engine.

    ES5 standards mode supports ECMAScript5 syntax and features, including the following features:
    • The "use strict" declaration
    • Control over extensibility of objects
    • Get and set properties on objects (accessors)
    • Control over writability, configurability, and enumerability of object properties
    • New Array and Date methods
    • Native JSON support
    • Support for modern third-party libraries such as lodash.js and moment.js

    Compatibility mode

    Compatibility mode is used for all scripts developed prior to the addition of ES5 Standards mode. Compatibility mode has some differences from the previous JavaScript engine.

    JSON support changes:
    • JSON.stringify() and JSON.parse() are implemented using the ES5 Native JSON object.
    • The new JSON().encode() and new JSON().decode() are still supported, but should only be used when the legacy behavior is required.

    The use of third-party JavaScript libraries isn’t supported in Compatibility mode.