JavaScript engine feature support
-
- UpdatedAug 1, 2024
- 20 minutes to read
- Washington DC
- API implementation
Compare ECMAScript features between the ECMAScript 2021 (ES12) and ES5 Standards JavaScript modes in Washington DC. Both modes support a subset of ECMAScript features.
For more information about these features, see the ECMAScript language specifications (ECMA-262) on the Ecma International website.
Support definitions
- Supported
- The feature has been tested and validated.
- Not Supported
- The feature has not been validated in the current release.
- Disallowed
- The feature does not align with the Now Platform programming model or poses a security or performance risk. Disallowed features result in an error.
ECMAScript 2022 (ES13) features
Important: Prior to deploying code to production, you should test scripts using supported ECMAScript 2022 (ES13) features thoroughly due to the newly added and partial support of features across this ECMAScript
version.
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Array.prototype.at() | Not Supported | Not Supported |
String.prototype.at() | Supported | Not Supported |
%TypedArray%.prototype.at() | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Basic functionality | Supported | Not Supported |
ToObject called before ToPropertyKey | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
constructor supports it | Not Supported | Not Supported |
shows up in flags | Not Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Ergonomic brand checks for private fields | Not Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Class static initialization blocks | Supported | Not Supported |
ECMAScript 2021 (ES12) features
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
fulfillment | Disallowed | Disallowed |
AggregateError | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
WeakRef minimal support | Disallowed | Disallowed |
FinalizationRegistry minimal support | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
numeric separators | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
String.prototype.replaceAll | Supported | Supported |
ECMAScript 2020 (ES11) features
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
basic functionality | Supported | Not Supported |
throws on non-global regex | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
"globalThis" global property is global object | Disallowed | Disallowed |
"globalThis" global property has correct property descriptor | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Promise.allSettled | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
nullish coalescing operator (??) | Supported | Not Supported |
ECMAScript 2019 (ES10) features
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
basic | Supported | Not Supported |
empty description | Supported | Not Supported |
undefined description | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Array.prototype.flat | Supported | Not Supported |
Array.prototype.flatMap | Supported | Not Supported |
flat and flatMap in Array.prototype[@@unscopables] | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Object.fromEntries | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
basic | Disallowed | Disallowed |
await | Disallowed | Disallowed |
yield | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Line separator can appear in string literals | Disallowed | Disallowed |
Paragraph separator can appear in string literals | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Well-formed JSON.stringify | Disallowed | Disallowed |
ECMAScript 2018 (ES9) features
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
object rest properties | Supported | Not Supported |
object spread properties | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
basic support | Disallowed | Disallowed |
don't change resolution value | Disallowed | Disallowed |
change rejection value | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
async generators | Disallowed | Disallowed |
for-await-of loops | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
s (dotAll) flag for regular expressions | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
RegExp named capture groups | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
RegExp Lookbehind Assertions | Not Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
RegExp Unicode Property Escapes | Not Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
template literal revision | Disallowed | Disallowed |
ECMAScript 2017 (ES8) features
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
String.prototype.padStart | Supported | Not Supported |
String.prototype.padEnd | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
in parameter lists | Supported | Not Supported |
in argument lists | Supported | Not Supported |
ECMAScript 2016 (ES7) features
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
basic support | Supported | Not Supported |
assignment | Supported | Not Supported |
early syntax error for unary negation without parentheses | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Array.prototype.includes | Supported | Not Supported |
Array.prototype.includes is generic | Not Supported | Not Supported |
%TypedArray%.prototype.includes | Disallowed | Disallowed |
ECMAScript 2015 (ES6) features
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
direct recursion | Disallowed | Disallowed |
mutual recursion | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
in constructors | Not Supported | Not Supported |
assignment is an early error | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
block-level function declaration | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
String.raw | Supported | Not Supported |
String.fromCodePoint | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Date.prototype[Symbol.toPrimitive] | Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
[[Set]] | Disallowed | Disallowed |
SetIntegrityLevel | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
SetIntegrityLevel | Disallowed | Disallowed |
TestIntegrityLevel | Disallowed | Disallowed |
SerializeJSONObject | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
var ⸯ; | Disallowed | Disallowed |
var ð ‹€; | Disallowed | Disallowed |
no escaped reserved words as identifiers | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
hoisted block-level function declaration | Disallowed | Disallowed |
labeled function statements | Disallowed | Disallowed |
function statements in if-statement clauses | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
existence | Disallowed | Disallowed |
tags' names are lowercase | Disallowed | Disallowed |
quotes in arguments are escaped | Disallowed | Disallowed |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
basic functionality | Disallowed | Disallowed |
returns this | Disallowed | Disallowed |
ECMAScript 2009 (ES5) features
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Property access on strings | Supported | Supported |
String.prototype.split | Supported | Not Supported |
String.prototype.trim | Supported | Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Date.prototype.toISOString | Supported | Supported |
Date.now | Supported | Supported |
Date.prototype.toJSON | Not Supported | Not Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
undefined | Supported | Supported |
NaN | Supported | Supported |
Infinity | Supported | Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Number.prototype.toExponential rounds properly | Supported | Supported |
Number.prototype.toExponential throws on ±Infinity fractionDigits | Supported | Supported |
Number.prototype.toExponential does not throw on edge cases | Supported | Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
Function.prototype.bind | Supported | Supported |
Feature | ECMAScript 2021 (ES12) mode | ES5 Standards mode |
---|---|---|
JSON | Supported | Supported |