ECMAScript (ES) versions Follow
The main areas where JavaScript is used within the ServiceManager are:
- JsService/Process: execution of the service's javascript.
- AppVisualizer: javascript syntax validation upon save, and the app's code itself.
- HTML playback: evaluating $vars in expressions and by locators.
The ServiceManager supports code up to ES13 / ES2022 (or up to ES5 in SM versions prior to 2026-03).
ECMAScript support in AppVisualizer apps depends on the end user's browser that runs them.
ECMAScript Versions (ESn Shorthand)
The main features that each ES version offers are (versions unsupported in the ServiceManager - in red):
| ESn | Year | Key Features | Min Chrome/Edge | Min Firefox |
|---|---|---|---|---|
| ES5 | 2009 | Strict mode ("use strict"), JSON support, Array methods (forEach/map/reduce/filter/some/every), Object.create/keys/getPrototypeOf, trim(), Array.isArray | 4 (Jan 2010) | 4.0 (Jul 2010) |
| ES6 | 2015 | let/const, arrow functions, classes, template literals, destructuring, default/rest parameters, spread (...), modules (import/export), promises, Map/Set, iterators, generators | 51 (Sep 2016) | 54 (Jun 2017) |
| ES7 | 2016 | Array.prototype.includes() ** exponentiation operator | 51 (Sep 2016) | 54 (Jun 2017) |
| ES8 | 2017 | async/await, Object.entries(), Object.values(), Object.getOwnPropertyDescriptors(), string padStart()/padEnd(), function/Array trailing commas | 55 (Dec 2016) | 52 (Mar 2017) |
| ES9 | 2018 | Object rest/spread {...obj}, Promise.prototype.finally(), async iteration (for await...of), RegExp named capture groups, RegExp /s (dotAll) flag | 60 (Jan 2018) | 57 (Nov 2017) |
| ES10 | 2019 | Array.flat()/flatMap(), Object.fromEntries(), String.matchAll(), String.trimStart()/trimEnd(), optional catch binding, stable Array.sort() | 67 (Jun 2018) | 62 (Dec 2018) |
| ES11 | 2020 | Optional chaining (?.), nullish coalescing (??), BigInt, dynamic import(), Promise.allSettled(), globalThis | 80 (Feb 2020) | 74 (Jul 2020) |
| ES12 | 2021 | Logical assignment (||=, &&=, ??=), String.prototype.replaceAll(), Promise.any(), numeric separators (1_000), WeakRef | 85 (Jun 2020) | 79 (Jul 2021) |
| ES13 | 2022 | Top-level await (modules), private fields/methods/accessors (#), Array.prototype.at(), Object.hasOwn() | 93 (Jan 2022) | 90 (Jan 2022) |
| ES14 | 2023 | Non-destructive Array: toSorted(), toReversed(), toSpliced(), with(), Array.findLast()/findLastIndex() | 110 (Oct 2023) | 110 (Oct 2023) |
| ES15 | 2024 | Object.groupBy()/Map.groupBy(), Promise.withResolvers(), RegExp /v flag, resizable/transferable ArrayBuffer | 120 (Apr 2024) | 120 (Apr 2024) |
| ES16 | 2025 | Iterator helpers (.map(), .filter(), etc.), Set methods (.union(), .intersection(), .difference(), .isSubsetOf()), Promise.try(), import attributes | 130 (Oct 2024) | 130 (Oct 2024) |
Limiting ECMAScript version in AppVisualizer
When developing apps for a client who might use older browsers, it could be useful to restrict the ES version in order to prevent compatibility issues when end-users run the apps.
When saving an AppVisualizer app, it validates your javascript code and shows any problems found as warning - you may control which ECMAScript version will be used for this validation, allowing you to see any problems users with old browsers might face.
Set the ES version in AppVisualizer step 5:
(this only control the ES version for the validation, the runtime ES version isn't affected)
Comments
0 comments
Please sign in to leave a comment.