This page provides an up-to-date report on which JavaScript features are supported in SuiteScript 2.1.
Tests are executed daily.
| Last Checked: | 2026-03-10T07:01:09.637Z |
|---|---|
| NetSuite Release: | 2026.1 |
| ECMAScript Version: | ES2025 |
| Number of Tests: | 76 |
Test Results
Filter:
| Docs | Feature | Supported | Error | NetSuite Release | ECMAScript Version | Baseline Status |
|---|---|---|---|---|---|---|
| View | Array.fromAsync() | false | Array.fromAsync is not a function | ES2026 | ||
| View | Error.isError() | false | Error.isError is not a function | ES2026 | ||
| View | Explicit Resource Management | false | DisposableStack is not defined | ES2026 | ||
| View | Float16Array | true | 2026.1 | ES2026 | ||
| View | Math.sumPrecise() | false | Math.sumPrecise is not a function | ES2026 | ||
| View | Temporal | false | Temporal is not defined | ES2026 | ||
| View | Intl.DurationFormat | true | 2026.1 | ES2025 | ||
| View | Iterator methods | true | 2026.1 | ES2025 | ||
| View | Math.f16round() | true | 2026.1 | ES2025 | ||
| View | Promise.try() | true | 2026.1 | ES2025 | ||
| View | RegExp duplicate named capture groups: (?<name>...)|(?<name>...) | true | 2026.1 | ES2025 | ||
| View | RegExp pattern modifiers (inline flags): (?i:...) | true | 2026.1 | ES2025 | ||
| View | RegExp.escape() | true | 2026.1 | ES2025 | ||
| View | Set methods | true | 2026.1 | ES2025 | ||
| View | ArrayBuffer.prototype.resizable | true | 2026.1 | ES2024 | ||
| View | ArrayBuffer.prototype.resize() | true | 2026.1 | ES2024 | ||
| View | ArrayBuffer.prototype.transfer | true | 2026.1 | ES2024 | ||
| View | Map.groupBy() | true | 2026.1 | ES2024 | ||
| View | Object.groupBy() | true | 2026.1 | ES2024 | ||
| View | Promise.withResolvers() | true | 2026.1 | ES2024 | ||
| View | RegExp.prototype.unicodeSets: /v flag | true | 2026.1 | ES2024 | ||
| View | String.prototype.isWellFormed() | true | 2026.1 | ES2024 | ||
| View | String.prototype.toWellFormed() | true | 2026.1 | ES2024 | ||
| View | Array.prototype.findLast() | true | 2024.1 | ES2023 | ||
| View | Array.prototype.findLastIndex() | true | 2024.1 | ES2023 | ||
| View | Array.prototype.toReversed() | true | 2024.1 | ES2023 | ||
| View | Array.prototype.toSorted() | true | 2024.1 | ES2023 | ||
| View | Array.prototype.toSpliced() | true | 2024.1 | ES2023 | ||
| View | Array.prototype.with() | true | 2024.1 | ES2023 | ||
| View | Array.prototype.at() | true | 2023.1 | ES2022 | ||
| View | Class static keyword | true | 2023.1 | ES2022 | ||
| View | Intl.Segmenter | true | 2023.1 | ES2022 | ||
| View | Object.hasOwn() | true | 2023.1 | ES2022 | ||
| View | Private properties: #property | true | 2023.1 | ES2022 | ||
| View | RegExp.prototype.hasIndices: /d flag | true | 2023.1 | ES2022 | ||
| View | String.prototype.at() | true | 2023.1 | ES2022 | ||
| View | Intl.DisplayNames | true | 2022.1 | ES2021 | ||
| View | Intl.ListFormat | true | 2022.1 | ES2021 | ||
| View | Logical AND assignment: &&= | true | 2022.1 | ES2021 | ||
| View | Logical OR assignment: ||= | true | 2022.1 | ES2021 | ||
| View | Nullish coalescing assignment: ??= | true | 2022.1 | ES2021 | ||
| View | Numeric separators: 1_000_000 | true | 2022.1 | ES2021 | ||
| View | Promise.any() | true | 2022.1 | ES2021 | ||
| View | String.prototype.replaceAll() | true | 2022.1 | ES2021 | ||
| View | structuredClone() | false | structuredClone is not defined | ES2021 | ||
| View | WeakRef | true | 2022.1 | ES2021 | ||
| View | BigInt | true | 2021.1 | ES2020 | ||
| View | Intl.Locale | true | 2021.1 | ES2020 | ||
| View | Intl.RelativeTimeFormat | true | 2021.1 | ES2020 | ||
| View | Nullish coalescing operator: ?? | true | 2021.1 | ES2020 | ||
| View | Optional chaining: ?. | true | 2021.1 | ES2020 | ||
| View | Promise.allSettled() | true | 2021.1 | ES2020 | ||
| View | String.prototype.matchAll() | true | 2021.1 | ES2020 | ||
| View | Array.prototype.flat() | true | 2020.1 | ES2019 | ||
| View | Array.prototype.flatMap() | true | 2020.1 | ES2019 | ||
| View | Function.prototype.toString() | true | 2020.1 | ES2019 | ||
| View | Object.fromEntries() | true | 2020.1 | ES2019 | ||
| View | String.prototype.trimEnd() | true | 2020.1 | ES2019 | ||
| View | String.prototype.trimStart() | true | 2020.1 | ES2019 | ||
| View | Intl.PluralRules | true | 2020.1 | ES2018 | ||
| View | RegExp lookbehind assertion: (?<=...), (?<!...) | true | 2020.1 | ES2018 | ||
| View | RegExp named capturing group: (?<name>...) | true | 2020.1 | ES2018 | ||
| View | RegExp unicode character class escape: \p{...}, \P{...} | true | 2020.1 | ES2018 | ||
| View | RegExp.prototype.dotAll: /s flag | true | 2020.1 | ES2018 | ||
| View | Spread and Rest syntax: ... | true | 2020.1 | ES2018 | ||
| View | Object.entries() | true | 2020.1 | ES2017 | ||
| View | Object.getOwnPropertyDescriptors() | true | 2020.1 | ES2017 | ||
| View | Object.values() | true | 2020.1 | ES2017 | ||
| View | String.prototype.padEnd() | true | 2020.1 | ES2017 | ||
| View | String.prototype.padStart() | true | 2020.1 | ES2017 | ||
| View | Array.prototype.includes() | true | 2020.1 | ES2016 | ||
| View | Map | true | 2020.1 | ES2015 (ES6) | ||
| View | Set | true | 2020.1 | ES2015 (ES6) | ||
| View | String.prototype.endsWith() | true | 2020.1 | ES2015 (ES6) | ||
| View | String.prototype.includes() | true | 2020.1 | ES2015 (ES6) | ||
| View | String.prototype.startsWith() | true | 2020.1 | ES2015 (ES6) |