bugl
bugl
HomeLearnPatternsSearch
HomeLearnPatternsSearch

Loading lesson path

Learn/JavaScript/Debugging, Projects, and Reference
JavaScript•Debugging, Projects, and Reference

ECMAScript 2026

New Features in JavaScript 2026

ECMAScript 2026 introduces several features focused on improving resource management, handling asynchronous operations, and enhancing data manipulation: New JavaScript Date Object -

Temporal Date

Resource management with using and await using

Error detection with

Error.isError()

Asynchronous array creation with

Array.fromAsync()

Base64 and hexadecimal encodings for

Uint8Array

Immutability with Records & Tuples (Stage 3 proposal) Pattern Matching (Stage 3 proposal)

The Temporal API

The Temporal API in JavaScript 2026 provides standard objects and functions for working with dates and times. From ES2026, the Temporal API is the standard for modern date and time management in JavaScript, designed to replace the legacy Date object.

Formula

Unlike Date, Temporal objects are immutable and provide first - class support for time zones and non - Gregorian calendars.

Resource Management with using

JavaScript 2026 added two keywords to automatically manage and dispose resources (like file handles or database connections) when they go out of scope, reducing the need for explicit try...finally blocks.

Formula

using provides synchronous cleanup of block - scoped variables.

await using provides asynchronous cleanup for resources like network streams.

Error Detection with

Error.isError() Error.isError() is a static method to reliably check if a value is an Error object, improving error handling and debugging.

New Array with

Array.fromAsync() Array.fromAsync() is a feature that allows developers to create a new Array instance from asynchronous iterables, array-like objects, or Promises, streamlining the handling of data from async sources.

New

Uint8Array

Methods in ES2026

Base64 and Hexadecimal Encodings for Uint8Array. These new static methods facilitate working with binary data by adding direct conversion between Uint8Array objects and Base64 or hexadecimal strings.

Uint8Array fromBase64()

Formula

Creates a Uint8Array object from a base64 - encoded string

Uint8Array toBase64()

Formula

Returns a base64 - encoded string from the data in an int8Array

Uint8Array fromHex()

Creates a Uint8Array object from a hexadecimal string

Uint8Array toHex()

Formula

Returns a hex - encoded string from the data in an int8Array

Warning

The 2026 edition is not published yet. It normally ships in June. As of November 2025, this is a list of the features in the draft, that is likely to be in the ES2026.

Explicit Resource Management

The using Keyword

The using keyword is an addition to JavaScript 2026. It provides a mechanism for managing resources that require explicit disposal.

It declares a block-scoped variable, similar to const, but with the difference that it guarantees synchronous disposal of the used resource when the variable goes out of scope.

Example

class MyResource {
constructor(name) {
this.name = name;
myDisplay(`Resource ${this.name} acquired.`);
}
[Symbol.dispose]() {
myDisplay(`Resource ${this.name} disposed.`);
}
}
function manageResource() {
using resource = new MyResource("Database Connection");
// Use the resource here myDisplay(`Using resource: ${resource.name}`);
}

The using keyword simplifies resource management by automatically handling the cleanup process, reducing the risk of resource leaks and improving code readability compared to manual try...finally blocks for disposal. Resource Management using is designed for objects that implement the Symbol.dispose method, which defines the cleanup logic for the resource.

Synchronous Disposal

When a variable declared with using exits its scope (at the end of a block or function), its Symbol.dispose method is automatically called.

Asynchronous Disposal

For resources requiring asynchronous cleanup, the await using declaration can be employed. This ensures that the disposal process is awaited before the variable fully goes out of scope.

Previous

Project - localStorage Counter

Next

JavaScript Silent Errors