ECMAScript 2027
Anticipated Features to ES2027
- Temporal API
The long-time-overdue successor to the buggy, 30-year-old Date object. Unlike Date, Temporal objects are immutable and provide first-class support for time zones and non-Gregorian calendars. - Explicit Resource Management (using keyword)
C#-style block-scoped disposal variables that auto-clean up database connections and streams when leaving context, avoiding try...finally boilerplate.
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.
usingprovides synchronous cleanup of block-scoped variables.await usingprovides asynchronous cleanup for resources like network streams.
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}`);
}
Try it Yourself »
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
usingis designed for objects that implement theSymbol.disposemethod, which defines the cleanup logic for the resource.Synchronous Disposal
When a variable declared withusingexits its scope (at the end of a block or function), itsSymbol.disposemethod is automatically called.Asynchronous Disposal
For resources requiring asynchronous cleanup, theawait usingdeclaration can be employed. This ensures that the disposal process is awaited before the variable fully goes out of scope.Block-Scoped
Likeconst, variables declared withusingare local to the block in which they are declared, and must be initialized at the time of declaration.Immutable
Like toconst, variables declared withusingcannot be reassigned after initialization.
Browser Support
using is already supported in many browsers:
| Chrome 134 |
Edge 134 |
Firefox 141 |
Safari ❌ |
Opera 119 |
| Mar 2025 | Mar 2025 | Jul 2025 | ❌ | May 2025 |
Explicit Resource Management
await using
Inspired by other languages, JavaScript 2026 introduces using blocks for automatic cleanup
of resources like file handles, database connections, or network streams.
This is especially beneficial for asynchronous operations:
Example
async function processFile() {
using fileHandle = await openFile('data.txt');
// Work with fileHandle here
} // fileHandle is automatically closed here
Try it Yourself »
Browser Support
await using is already supported in many browsers:
| Chrome 134 |
Edge 134 |
Firefox 141 |
Safari ❌ |
Opera 119 |
| Mar 2025 | Mar 2025 | Jul 2025 | ❌ | May 2025 |