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 | ||
globalThis |
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 | ||
import.meta |
Domenic Denicola | Domenic Denicola | ||
Private instance methods and accessors | Daniel Ehrenberg | Daniel Ehrenberg Kevin Gibbons |
||
Array.prototype.{flat,flatMap} |
Brian Terlson Michael Ficarra |
Brian Terlson Michael Ficarra |
||
Class Public Instance Fields & Private Instance Fields | Daniel Ehrenberg Kevin Gibbons |
Daniel Ehrenberg Jeff Morrison Kevin Smith Kevin Gibbons |
||
Static class fields and private static methods | Daniel Ehrenberg Kevin Gibbons Jeff Morrison Kevin Smith |
Shu-Yu Guo and Daniel Ehrenberg | ||
String.prototype.{trimStart,trimEnd} |
Sebastian Markbåge | Sebastian Markbåge | ||
String.prototype.matchAll |
Jordan Harband | Jordan Harband | ||
Symbol.prototype.description |
Michael Ficarra | Michael Ficarra | ||
Object.fromEntries |
Darien Maillet Valentine | Jordan Harband Kevin Gibbons |
||
Well-formed JSON.stringify |
Richard Gibson | Mathias Bynens |
Stage 2
Proposal | Author | Champion | |
---|---|---|---|
Numeric separators | Sam Goto Rick Waldron |
Sam Goto Rick Waldron |
|
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 |
|
Hashbang Grammar | Bradley Farias | Bradley Farias | |
WeakRefs | Dean Tribble | Dean Tribble | |
Top-level await |
Myles Borins | Myles Borins | |
Function.prototype.toString() censorship |
Domenic Denicola | Domenic Denicola | |
New Set methods | Michał Wadas | Sathya Gunasekaran | |
Realms | Caridy Patiño Jean-Francois Paradis |
Dave Herman Mark Miller Caridy Patiño |
|
ArrayBuffer.prototype.transfer |
Domenic Denicola | Domenic Denicola | |
RegExp Match array offsets | Ron Buckton | Ron Buckton | |
Sequence properties in Unicode property escapes | Mathias Bynens | Mathias Bynens | |
InterpreterDirective |
Bradley Farias | Bradley Farias | |
Temporal | Maggie Pint Matt Johnson |
Maggie Pint Brian Terlson |
Stage 1
Proposal | Author | Champion | |
---|---|---|---|
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 | |
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 | |
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 | |
Maximally minimal mixins | Justin Fagnani | Justin Fagnani | |
Getting last element of Array | Keith Cirkel | Keith Cirkel | |
Collection methods | Michał Wadas | Sathya Gunasekaran | |
Richer Keys | Bradley Farias | Bradley Farias | |
Slice notation | Sathya Gunasekaran | Sathya Gunasekaran | |
Logical Assignment Operators | Justin Ridgewell | Justin Ridgewell | |
Module Keys | Mike Samuel | Mike Samuel | |
Class Static Block | Ron Buckton | Ron Buckton | |
class Access Expressions | Ron Buckton | Ron Buckton | |
Pattern Matching | Kat Marchán Brian Terlson |
Kat Marchán Brian Terlson Sebastian Markbåge |
|
Explicit Resource Management | Ron Buckton | Ron Buckton | |
Dynamic Modules | Bradley Farias | Bradley Farias | |
JavaScript Standard Library | Michael Saboff Mattijs Hoitink |
Michael Saboff Mattijs Hoitink |
|
"use module" |
Dave Herman | Dave Herman | |
for-in mechanics |
Kevin Gibbons | ||
uniform parsing of quasi-standard Date.parse input |
Richard Gibson | Richard Gibson | |
JSON.parse source text access | Richard Gibson | Richard Gibson | |
Promise.allSettled | Jason Williams | Mathias Bynens | |
IDL for ECMAScript | Daniel Ehrenberg | Daniel Ehrenberg |
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:
- Transfer your repository to the @tc39-transfer organization
- if you are a TC39 delegate, but not an admin in that organization, please contact @LJHarb
- @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 as long as you never create a fork, or a new repository, with the same name - although Github Pages redirects will be broken (please update your links!).