Global support of es2023 since:
- Chrome v97 (January 4, 2022)
- Edge v97 (December 1, 2021)
- Safari v15.4 (March 14, 2022)
- Safari on iOS v15.4 (March 14, 2022)
- Opera v83 (January 19, 2022)
- Firefox v104 (June 23, 2022)
- Samsung Browser v18 (August 8, 2022)
- Chrome for Android v97 (January 11, 2022)
- Firefox for Android v105 (September 20, 2022)
Other browsers are not supported (Internet Explorer, non-chromium Edge, Opera Mini, Opera Mobile, ...).
The supported browsers represent 88.3% of the global browser usage when excluding the following features:
- Build-in error cause (not supported by Opera)
- Static initialization blocks (not supported by Safari and Safari on iOS)
- Function.toString revision (not supported by Safari and Safari on iOS)
Or 73.6% when including them.
In addition to the 3 previous features (which are barely used anyway), here are some other features, which are more commonly used but are not yet widely adopted (supported by less than 92% of browser usage).
- Private/static fields & methods (supported by 91.1% of browser usage)
- Top level await (supported by 90.4% of browser usage)
- Array.at (supported by 89.5% of browser usage)
- Object.hasOwn (supported by 89.2% of browser usage)
- Array.findLast & Array.findLastIndex (supported by 88.5% of browser usage)
Each line only represents the % of browser usage supporting the features for the given ECMAScript version and does not include features of previous versions, which means the % can be lower when combining multiple ECMAScript versions.
- es2023: 88.5%
- es2022: 88.2%
- es2021: 92.2%
- es2020: 92.6%
- es2019: 94.6%
- es2018: 94.8%
- es2017: 95.3%
- es2016: 95.6%
- es2015: 96.3% (aka es6)
Non-exhaustive list:
- es2023
- Array.findLast()
- Array.findLastIndex()
- es2022
- Instance/private/static field
- Object.hasOwn()
- Array.at()
- Top level await
- es2021
- Promise.any()
- String.replaceAll()
- es2020
- Optional chaining
?
- Null coalescing operator
??
- Optional chaining
- es2019
- Array.flat()
- Array.flatMap()
- Object.fromEntries()
- es2018
- Promise.finally()
- Improved rest/spread operator
...
- es2017
await
operator- Async function
- es2016:
- Array.includes()
- Exponentiation operator
**
- Improved rest/spread operator
...
- Improved generator
- es2015
- Class
- Promise
- Arrow function
- Rest/spread operator
...
for of
loop- Template literal
`${}`
- Generator
Some links may not display results properly as Can I use struggles to display more than 8 selected features.
- es2023
- es2022
- es2021
- es2020
- es2019
- es2018
- es2017
- es2016
- es2015