TC39

Ecma International's TC39 is a group of JavaScript developers, implementers, academics, and more, collaborating with the community to maintain and evolve the definition of JavaScript.

We are part of
Ecma International

Contribute

TC39 welcomes contributions from the JavaScript community, whether it is feedback on existing proposals, improved documentation, testing, implementations, or even language feature ideas. See our contributor guide for details.

To participate in TC39 meetings as a member, join Ecma.

Specs

We develop the JavaScript (formally, ECMAScript) specification on GitHub and meet every two months to discuss proposals. To learn more about the process, please take a look at the five stages for new language feature proposals. See our meeting agendas and minutes to learn more.

State of Proposals

Current Candidates for the Specification

This section features proposals that are in Stage 3 of our process, which means they are close to completion.
How to read the proposals list

Each proposal has links out to other resources. The tags identify the following attributes. Below you will find a table with example tags and their meanings. All tags have hover text if you need help getting oriented.

Types of tags and what they mean

Legacy RegExp features in JavaScript

Author: Claude Pache | Champions: Mark Miller, Claude Pache
This is a specification draft for the legacy (deprecated) RegExp features in JavaScript, i.e., static properties of the constructor like RegExp.$1 as well as the RegExp.prototype.compile method.

Hashbang Grammar

Authors and Champions: Bradley Farias
This proposal is to match de-facto usage in some CLI JS hosts that allow for Shebangs / Hashbang. Such hosts strip the hashbang in order to generate valid JS source texts before passing to JS engines currently. This would unify and standardize how that is done.

Top-level await

Authors and Champions: Myles Borins
Top-level await enables modules to act as big async functions. With top-level await, ECMAScript Modules (ESM) can await resources, causing other modules who import them to wait before they start evaluating their body.

RegExp Match Indices

Authors and Champions: Ron Buckton
ECMAScript RegExp Match Indicies provide additional information about the start and end indices of captured substrings relative to the start of the input string.

.at()

Authors and Champions: Shu-yu Guo, Tab Atkins
A proposal to add a .at() method to all the basic indexable classes (Array, String, TypedArray).

Import Assertions

Authors and Champions: Myles Borins, Sven Sauleau, Dan Clark, Daniel Ehrenberg
A proposal for syntax to import ES modules with assertions.

JSON Modules

Authors and Champions: Sven Sauleau, Daniel Ehrenberg, Myles Borins, Dan Clark
Proposal to import JSON files as modules.

Ergonomic Brand Checks

Authors and Champions: Jordan Harband
EcmaScript proposal to provide brand checks without exceptions.

Class Static Block

Authors and Champions: Ron Buckton
Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal.

Error Cause

Author: Chengzhong Wu | Champions: Ron Buckton, Chengzhong Wu, Hemanth HM
Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause.

Temporal

Authors and Champions: Maggie Pint, Matt Johnson, Philipp Dunkel
Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (like Math), that brings a modern date/time API to the ECMAScript language. For a detailed breakdown of motivations, see the proposal readme.
See proposals in all stages