What Is TC39 and How It Standardizes JavaScript

Technical Committee 39 (TC39) is the official working group responsible for evolving and maintaining ECMAScript, the standardized specification underlying the JavaScript programming language. This article covers the composition and purpose of the TC39 committee, details the five-stage consensus process through which proposals become official language features, and explains how new editions of JavaScript are released annually.

What is TC39?

TC39 is a committee within Ecma International, an industry standards organization. The committee is comprised of delegates from major web browser vendors (such as Google, Apple, Microsoft, and Mozilla), software companies, open-source maintainers, academics, and independent JavaScript experts.

Because JavaScript runs across billions of devices and platforms, changes to the language cannot be made unilaterally. TC39 operates on a consensus-driven model to ensure that every addition to the language maintains backward compatibility, performs efficiently, and serves the needs of the broader developer ecosystem.

The TC39 Process: From Idea to Standard

To introduce a new feature or syntax into JavaScript, a proposal must advance through five discrete stages (Stage 0 to Stage 4). Each transition requires formal consensus from the committee.

Stage 0: Strawperson

Any member of TC39 or a registered contributor can submit an idea at Stage 0. It represents an informal pitch or early-stage concept that has not yet been accepted into the formal standardization pipeline.

Stage 1: Proposal

To reach Stage 1, the idea must have a designated “champion” on the committee. The champion presents the problem the proposal aims to solve, high-level API designs, use cases, potential challenges, and cross-cutting concerns. Acceptance into Stage 1 signals that TC39 agrees the problem is worth solving.

Stage 2: Draft

At Stage 2, the champion must provide a formal draft of the proposed syntax and semantics using precise ECMAScript specification language. The proposal must describe the feature completely, though minor edge cases and API refinements can still occur later.

Stage 2.7: Initial Implementations (Optional Review Step)

Introduced to bridge the gap between design and testing, this sub-phase requires comprehensive test coverage (via Test262, the official ECMAScript test suite) and review by designated TC39 reviewers before moving forward.

Stage 3: Candidate

At Stage 3, the specification text is complete, signed off by reviewers, and ready for real-world validation. The feature is implemented in experimental flags or preview builds across multiple major JavaScript engines (like V8, JavaScriptCore, and SpiderMonkey). Developers test the feature to discover implementation issues, web-compatibility bugs, or design oversights.

Stage 4: Finished

A proposal reaches Stage 4 when it satisfies all of the following requirements: * It has two independent, compliant implementations in major engines. * It passes all relevant Test262 acceptance tests. * Practical implementation experience has validated the design. * The ECMAScript specification editor accepts the pull request into the main specification repository.

The Annual Release Cycle

Once a proposal reaches Stage 4, it is officially part of the language draft. TC39 cuts a new version of the ECMAScript standard annually (e.g., ECMAScript 2023, ECMAScript 2024). All Stage 4 proposals approved prior to the annual cutoff date are packaged into that year’s official specification release.