JavaScript News
New Features in JavaScript 2025
New Set Features in 2025
Warning
These features are relatively new.
Older browsers may need an alternative code (Polyfill)
New Features in JavaScript 2024
Feature | Description | |
Object groupBy() |
Groups object elements according to values returned from a callback function | |
Map groupBy() |
Groups map elements according to values returned from a callback function | |
String isWellFormed() |
Returns true if a string is well formed | |
String toWellFormed() |
Returns a new string where "lone surrogates" are replaced with Unicode U+FFFD | |
Promise
withResolvers() | | |
Atomics
waitAsync | | |
New Features in JavaScript 2023
Supported in all modern browsers since July 2023.
|
|
|
|
|
Chrome 110 |
Edge 110 |
Firefox 115 |
Safari 16.4 |
Opera 96 |
Feb 2023 |
Feb 2023 |
Jul 2023 |
Mar 2023 |
Feb 2023 |
Feature | Description | |
#! (Shebang) |
Tells the operating system which interpreter to use to execute the script | |
New Array Features in 2023
Feature | Description | |
findLast() |
Returns the value of the last element that satisfies a condition | |
findLastIndex() |
Returns the index of the last element that satisfies a condition | |
toReversed() |
Reverses an array without altering the original array | |
toSorted() |
Sorts an array without altering the original array | |
toSpliced() |
Splices an array without altering the original array | |
with() |
Updates array elements without altering the original array | |
New Features in JavaScript 2022
Supported in all modern browsers since March 2023.
|
|
|
|
|
Chrome 94 |
Edge 94 |
Firefox 93 |
Safari 16.4 |
Opera 80 |
Sep 2021 |
Sep 2021 |
Oct 2021 |
Mar 2023 |
Oct 2021 |
New Features in JavaScript 2021
Supported in all modern browsers since April 2021.
|
|
|
|
|
Chrome 85 |
Edge 85 |
Firefox 79 |
Safari 14.1 |
Opera 71 |
Aug 2020 |
Aug 2020 |
Jul 2020 |
Apr 2021 |
Sep 2020 |
Feature | Description | | |
Promise.any() |
Takes promises as input and returns a single promise | |
String replaceAll() |
Replaces all occurrences of a substring in a string |
| |
Num Separator |
New numeric separator (_) makes numbers more readable | |
New Features in JavaScript 2020
Supported in all modern browsers since April 2021.
|
|
|
|
|
Chrome 80 |
Edge 80 |
Firefox 80 |
Safari 14.1 |
Opera 67 |
Feb 2020 |
Feb 2020 |
Aug 2020 |
Apr 2021 |
Mar 2020 |
Feature | Description | |
BigInt |
Stores values too big to store in a JavaScript number | |
String matchAll() |
Searchs for all occurrences of a string in a string | |
Promise.allSettled() |
Takes promises as input and returns a single promise | |
Dynamic Import |
| |
New Operators in JavaScript 2020
Oper | Description | |
?? |
Nullish coalescing returns the first argument not nullish | |
?. |
Optional chaining returns undefined if an object is undefined or null | |
&&= |
Logical AND assignment assigns the second value if the first value is true | |
||= |
Logical OR assignment assigns the second value if the first value is false | |
??= |
Nullish coalescing assignment assigns the second value if the first value is undefined or null | |
New Features in JavaScript 2019
Supported in all modern browsers since January 2020.
|
|
|
|
|
Chrome 73 |
Edge 79 |
Firefox 64 |
Safari 12.1 |
Opera 60 |
Mar 2019 |
Jan 2020 |
Des 2018 |
Mar 2019 |
Apr 2019 |
New Features in JavaScript 2018
Supported in all modern browsers since June 2020.
|
|
|
|
|
Chrome 64 |
Edge 79 |
Firefox 78 |
Safari 12 |
Opera 51 |
Jan 2018 |
Jan 2020 |
Jun 2020 |
Sep 2018 |
Feb 2018 |
New RegExp Features JavaScript 2018
Feature | Description | |
/s |
Allows the . (dot) metacharacter to match line terminators | |
\p{} |
Matches character with a Unicode character property | |
(?<=y) |
(?<=y)x matches "x" if "x" is preceded by "y" | |
(?<!y) |
(?<!y)x matches "x" if "x" is NOT preceded by "y" | |
(?<name>) |
Captures text and names (labels) it | |
New Features in JavaScript 2017
Supported in all modern browsers since September 2017.
|
|
|
|
|
Chrome 58 |
Edge 15 |
Firefox 52 |
Safari 11 |
Opera 45 |
Apr 2017 |
Apr 2017 |
Mar 2017 |
Sep 2017 |
May 2017 |
Feature | Description | |
String padStart() |
Pads the beginning of a string | |
String padEnd() |
Pads the end of a string | |
Object entries() |
Returns an array of the key/value pairs of an object | |
Object values() |
Returns an array of the values of an object | |
async and await |
Simplifies the handling of promises | |
Trailing Commas |
Allows trailing commas where a comma-separated list of values is accepted | |
getOwnProperty Descriptors |
Returns an object containing all own property descriptors of an object | |
New Features in JavaScript 2016
Supported in all modern browsers since March 2017.
|
|
|
|
|
Chrome 52 |
Edge 15 |
Firefox 52 |
Safari 10.1 |
Opera 39 |
Jul 2016 |
Apr 2017 |
Mar 2017 |
May 2017 |
Aug 2016 |
Feature | Description | |
** |
Raises the first operand to the power of the second | |
**= |
Raises the value of a variable to the power of the right operand | |
Array includes() |
Checks if an element is present in an array | |
Track your progress - it's free!