ECMAScript proposals

ECMAScript Internationalization API Specification proposals

Active proposals

Proposals follow this process document. This list contains only stage 1 proposals and higher that have not yet been withdrawn/rejected, or become finished.

Stage 3

🚀 Proposal Author Champion Tests
🚀 Function.prototype.toString revision Michael Ficarra Michael Ficarra
global Jordan Harband Jordan Harband
import() Domenic Denicola Domenic Denicola
Legacy RegExp features in JavaScript Claude Pache Mark Miller
Claude Pache
BigInt Daniel Ehrenberg Daniel Ehrenberg 🚧
Optional catch binding Michael Ficarra Michael Ficarra
import.meta Domenic Denicola Domenic Denicola
Private instance methods and accessors Daniel Ehrenberg Daniel Ehrenberg
Kevin Gibbons
Array.prototype.{flatMap,flatten} Brian Terlson
Michael Ficarra
Brian Terlson
Michael Ficarra
Numeric separators Sam Goto
Rick Waldron
Sam Goto
Rick Waldron
Class Public Instance Fields & Private Instance Fields Daniel Ehrenberg
Kevin Gibbons
Daniel Ehrenberg
Jeff Morrison
Kevin Smith
Kevin Gibbons
JSON superset Richard Gibson Mark Miller
Mathias Bynens
String.prototype.{trimStart,trimEnd} Sebastian Markbåge Sebastian Markbåge
String.prototype.matchAll Jordan Harband Jordan Harband

Stage 2

🚀 Proposal Author Champion
Static class fields and private static methods Daniel Ehrenberg
Kevin Gibbons
Jeff Morrison
Kevin Smith
Shu-Yu Guo and Daniel Ehrenberg
function.sent metaproperty Allen Wirfs-Brock Allen Wirfs-Brock
Decorators Daniel Ehrenberg Yehuda Katz
Brian Terlson
Daniel Ehrenberg
🚀 throw expressions Ron Buckton Ron Buckton
Atomics.waitAsync Lars Hansen Shu-yu Guo
Lars Hansen
Symbol.prototype.description Michael Ficarra Michael Ficarra
Hashbang Grammar Bradley Farias Bradley Farias
WeakRefs Dean Tribble Dean Tribble

Stage 1

🚀 Proposal Author Champion
Date.parse fallback semantics Morgan Phillips Morgan Phillips
export v from "mod"; statements Lee Byron Ben Newman
John-David Dalton
🚀 Observable Jafar Husain Jafar Husain
Mark Miller
Frozen Realms Mark Miller
Chip Morningstar
Caridy Patiño
Mark Miller
Chip Morningstar
Caridy Patiño
Math Extensions Rick Waldron Rick Waldron
of and from on collection constructors Leo Balter Leo Balter
Generator arrow functions (=>*) Brendan Eich
Domenic Denicola
Promise.try Jordan Harband Jordan Harband
Optional Chaining Gabriel Isenberg
Claude Pache
Gabriel Isenberg
Math.signbit: IEEE-754 sign bit JF Bastien JF Bastien
Error stacks Jordan Harband Jordan Harband
do expressions Dave Herman Dave Herman
Realms Caridy Patiño
Jean-Francois Paradis
Dave Herman
Mark Miller
Caridy Patiño
Temporal Maggie Pint
Matt Johnson
Maggie Pint
Brian Terlson
Float16 on TypedArrays, DataView, Math.hfround Leo Balter Leo Balter
Change Number.parseInt/parseFloat to not coerce null/undefined/NaN (repo link TBD) Brendan Eich
Binary AST Shu-yu Guo Shu-yu Guo
Pipeline Operator Daniel Ehrenberg Daniel Ehrenberg
Extensible numeric literals Daniel Ehrenberg Daniel Ehrenberg
First-class protocols Michael Ficarra Michael Ficarra
Nullish coalescing Operator Gabriel Isenberg Gabriel Isenberg
Partial application Ron Buckton Ron Buckton
Cancellation API Ron Buckton Ron Buckton & Brian Terlson
InterpreterDirective Bradley Farias Bradley Farias
String.prototype.replaceAll Peter Marshall
Jakob Gruber
Mathias Bynens
Mathias Bynens
String.prototype.codePoints Ingvar Stepanyan Mathias Bynens
Distinguishing literal strings Mike West Adam Klein
Mike West
Object.freeze + Object.seal syntax Keith Cirkel Keith Cirkel
Block Params Sam Goto Sam Goto
{BigInt,Number}.fromString Mathias Bynens Mathias Bynens
Math.seededRandoms() Tab Atkins Tab Atkins
Function.prototype.toString() censorship Domenic Denicola Domenic Denicola
Top-level await Myles Borins Myles Borins
Maximally minimal mixins Justin Fagnani Justin Fagnani
🚀 Getting last element of Array Keith Cirkel Keith Cirkel
New Set methods Michał Wadas Sathya Gunasekaran
Collection methods Michał Wadas Sathya Gunasekaran
🚀 Object.fromEntries Darien Maillet Valentine Jordan Harband
Kevin Gibbons
Richer Keys Bradley Farias Bradley Farias
Slice notation Sathya Gunasekaran Sathya Gunasekaran
Logical Assignment Operators Justin Ridgewell Justin Ridgewell

🚀 means the champion thinks it's ready to advance but has not yet presented to the committee.

means a pull request for tests was merged.

means there is no pull request for tests yet.

🚧 means a pull request for tests was created, but not merged yet.

Contributing new proposals

Please see Contributing to ECMAScript for the most up-to-date information on contributing proposals to this standard.

Onboarding existing proposals

Proposals that are Stage 1 and above must be transferred to the TC39 GitHub organization for discoverability and archival purposes. To onboard a proposal that lives outside the TC39 organization:

  1. Transfer your repository to the @tc39-transfer organization
  • if you are a TC39 delegate, but not an admin in that organization, please contact @LJHarb
  1. @bterlson, @littledan, or @leobalter will transfer your repository to the TC39 organization the next chance they get.

Note that as part of the onboarding process your repository name may be normalized. Don't worry, repo redirects will continue to work - although Github Pages redirects will be broken (please update your links!).