
[Frontier Analysis] What new features will JavaScript have in the future?
JavaScript continues to evolve rapidly, driven by active contributors like TC39 (the ECMAScript standards committee) and the Deno team. At the recent 108th TC39 meeting, nine proposals progressed through stages—from early concepts (Stage 0) to fully standardized features (Stage 4).
The following section provides an overview of upcoming features, experimental functionality, and the potential impact these changes will have on how you write JavaScript.
Stage 4: Ready for use
The features at this stage are fully standardized and can be used directly in production environments.
Explicit resource management (using keyword)
JavaScript finally has deterministic resource cleanup with the new using keyword (and its asynchronous variant, await using ). This feature, borrowed from C# and Python, ensures that resources like files and network sockets are properly released when exiting a code block.
Objects can automatically clean up resources by implementing the Symbol.dispose or Symbol.asyncDispose methods.
✅ Current support: Chrome 134, Firefox 134, Deno v2.3 already supported.
Array.fromAsync method
Similar to Array.from , but supports async iterables and returns a Promise that eventually resolves to an array.
✅ Current support: All major browsers, Deno v1.38, Node.js v22 are supported.
Error.isError method
It provides a reliable way to detect errors across contexts and inheritance chains, solving the problem of inaccurate detection of traditional instanceof Error.
✅ Current support: All major browsers and Deno v2.2 are supported.
Stage 3: Feature Candidates
The features in this stage have been designed and are awaiting implementation in browsers and runtimes. They will be available for use in the short term.
Immutable ArrayBuffer
New transferToImmutable() and sliceToImmutable() methods for creating secure immutable binary data to prevent accidental modification
Core Usage: Suitable for multi-threaded and Worker thread scenarios, as well as binary APIs such as Deno.writeFile(), it can avoid unnecessary data copying and improve performance.
Stage 2: Draft
The basic syntax and behavior of features in this stage have been determined, but details are still subject to adjustment. Production use is not recommended at this stage.
Random.Seeded (random number with seed)
Supports deterministic random number generation, which can obtain repeatable random sequences through fixed seeds.
Core uses: Suitable for scenarios that require stable random results, such as simulation experiments, game development, and test cases.
Stage 1: Early Proposals
This stage is only for preliminary ideas, syntax and functionality may change significantly, and is mainly used to collect community feedback.
Trailing Zeros in Intl.NumberFormat
Added the trailingZeroDisplay configuration item to make number formatting simpler and provide flexible control over the display of trailing zeros in decimal places.
Comparisons
It aims to provide a standardized way to output numerical differences, which can generate comparison results similar to those of the diff tool and is suitable for scenarios such as test framework assertions and log printing.
Random Namespace
Provides convenient random number tool methods that support operations such as generating numbers in a specified range, sampling from an array, and shuffling an array.
future outlook
JavaScript's evolution continues unabated. TC39 is shaping the language's features around the needs of modern development, focusing on optimizing asynchronous workflows, safer data handling, improved reproducibility, and a better developer experience.
The Deno team is actively promoting these features and is committed to integrating them into the runtime as soon as possible to verify their practical application value. Discussions on these proposals will continue at the next TC39 meeting, scheduled for the end of September.