JavaScriptApril 16, 2026

ES2024 New Features You Should Know

ES2024 introduces Array grouping, Promise.withResolvers, and more powerful features.

ES2024 New Features You Should Know

ES2024 (ES15) brings several new features to JavaScript. Let’s explore the most important ones.

Object.groupBy() and Map.groupBy()

javascript
const products = [
  { name: 'Apple', category: 'fruit' },
  { name: 'Carrot', category: 'vegetable' },
  { name: 'Banana', category: 'fruit' }
]

const grouped = Object.groupBy(products, product => product.category)
// { fruit: [{...}, {...}], vegetable: [{...}] }

Promise.withResolvers()

javascript
const { promise, resolve, reject } = Promise.withResolvers()

// Use resolve/reject anywhere
setTimeout(() => resolve('Done!'), 1000)

await promise // 'Done!'

Well-Formed Unicode Strings

javascript
const str = 'Hello\uD800World'
const wellFormed = str.toWellFormed()
// 'Hello\uFFFDWorld'

str.isWellFormed() // false
wellFormed.isWellFormed() // true

ArrayBuffer Transfer

javascript
const buffer = new ArrayBuffer(8)
const newBuffer = buffer.transfer(16)
// buffer is now detached
// newBuffer has 16 bytes with original data

Atomics.waitAsync()

For better async coordination in SharedArrayBuffer:

javascript
const result = Atomics.waitAsync(int32Array, 0, 0)
result.value.then(() => console.log('Value changed!'))

Browser Support

All major browsers support these features. For older environments, use polyfills.