What’s New in ECMAScript 2025

June 30, 2025

What’s New in ECMAScript 2025

On June 25, 2025, Ecma International officially approved ES2025, adding several useful features:

1. 📦 Import Attributes & JSON Modules

You can now import JSON directly with type annotations:

// Static import
import config from './config.json' with { type: 'json' };

// Dynamic import
const cfg = await import('./config.json', { with: { type: 'json' } });
console.log(cfg.default);

2. Iterator Helper Methods

New chaining helpers on iterators:

const arr = ['a','', 'b', '', 'c', '', 'd'];
const result = arr.values()
  .filter(x => x.length > 0)
  .drop(1)
  .take(2)
  .map(x => `=${x}=`)
  .toArray();
// result: ['=b=', '=c=']

3. New Set Methods

Set operations become built-in:

const a = new Set(['a','b','c']);
const b = new Set(['b','c','d']);
console.log([...a.union(b)]); // ['a','b','c','d']
console.log(a.isSubsetOf(b)); // false

4. RegExp.escape() & Pattern Modifiers

const safe = RegExp.escape('hello?');
// inline flags example
/^x(?i:HELLO)x$/.test('xHELLOx'); // true
/^x(?i:HELLO)x$/.test('xhellox'); // true

5. Duplicate Named Capture Groups

const re = /(?a+)|(?b+)/v;
console.log(re.exec('aaa').groups.chars); // 'aaa'
console.log(re.exec('bb').groups.chars);  // 'bb'

6. Promise.try()

Promise.try(() => {
  const x = syncThatMightThrow();
  return asyncWork(x);
}).then(...).catch(...);

7. float16 Support

Now built-in: Float16Array, DataView.getFloat16/setFloat16, and Math.f16round().

The Ultimate Managed Hosting Platform