ECMAScript is evolving faster than ever. ES2024 and ES2025 bring features the community has been asking for for years: grouping data, better promise control, real date handling without libraries, and structured pattern matching. This article covers every important addition with concrete examples.
The window resize event was the first, but flawed, approach to size-dependent JavaScript. ResizeObserver watches individual DOM elements directly, regardless of whether the window changes, a sidebar panel opens, or a parent element grows dynamically.
An appointment shifts by an hour, a month is suddenly displayed wrong, a report shows a duplicated date on the night of a clock change. Timezones and dates are one of the areas of JavaScript where small misunderstandings create large, hard to reproduce bugs. This article shows the concrete pitfalls and how to reliably avoid them.
Arrays are the most widely used data structure in JavaScript, yet only a handful of developers know the full scope of modern array methods. From flatMap through findLast to the non-mutating ES2023 methods toSorted and toReversed: this article shows which method is right for which job and how to avoid the typical performance pitfalls.
Import Maps solve a problem ES modules have had in the browser since day one: a bare specifier such as import { render } from "preact" simply does not resolve natively unless something rewrites the path first. With an Import Map the browser itself carries out that resolution, and scopes even allow different versions for different parts of the same application, with no Webpack or Vite required.
An async generator delivers values one at a time, on demand, instead of holding a complete result list in memory. For paginated APIs, large exports and live data streams, async function* together with for await...of replaces error prone loop constructs with readable, composable code.
JavaScript is fast enough for most web tasks, but for image compression, audio DSP, cryptography, AI inference or physics simulations it hits its limits. WebAssembly closes this gap: compiled machine code from Rust, C or Go runs in the browser at close to native speed and cooperates closely with the JavaScript ecosystem.
Anyone who does not cancel fetch requests risks race conditions, memory leaks and inconsistent UI states. AbortController is the native browser API that solves this problem once and for all, for fetch, event listeners and any async operation.
For years, set operations in JavaScript had to be laboriously assembled with filter() and has(). The new JavaScript Set Methods solve this problem with a clean, readable API, directly on the Set object, without external libraries and without workarounds.
Anyone processing large volumes of data in JavaScript has long had to load everything into memory before working with it. The Web Streams API changes that: data flows through a pipeline as chunks, backpressure prevents memory overload, and the first chunk is available before the last one has even arrived.