Update 2019-01-29: The feature set of ECMAScript 2019 is now final (source) and described in this blog post.
A word on ECMAScript versions
Note that since the TC39 process was instituted, the importance of ECMAScript versions has much decreased. What really matters now is what stage a proposed feature is in: Once it has reached stage 4, it can be used safely. But even then, you still have to check if your engines of choice support it.
The features of ES2019
Major new features:
Array.prototype.{flat,flatMap}(Michael Ficarra, Brian Terlson, Mathias Bynens)Object.fromEntries(Darien Maillet Valentine)
Minor new features:
String.prototype.{trimStart,trimEnd}(Sebastian Markbåge)Symbol.prototype.description(Michael Ficarra)- Optional catch binding (Michael Ficarra)
Array.prototype.sort()is now required to be stable (ECMAScript spec) (Mathias Bynens).
Changes that are mostly internal:
- Well-formed
JSON.stringify(Richard Gibson) - JSON superset (Richard Gibson)
Function.prototype.toStringrevision (Michael Ficarra)
Quoting @v8js on Twitter:
As of V8 v7.3 / Chrome 73, all of these ES2019 features are available by default. Enjoy!
FAQ
What do the stages mean?
They refer to maturity stages of the so-called “TC39 process”. Check chapter “The TC39 process for ECMAScript features” in “Exploring ES2016 and ES2017” for more information.
How is [my favorite proposed feature] doing?
If you are wondering what stages various proposed features are in, consult the readme of the ECMA-262 GitHub repository.
Is there an official list of ECMAScript features?
Yes, the TC39 repo lists finished proposals and mentions in which ECMAScript versions they are introduced.
Further reading
The following books of mine are free to read online:
- ECMAScript 5: “Speaking JavaScript”
- ECMAScript 6: “Exploring ES6”
- ECMAScript 2016 & 2017: “Exploring ES2016 and ES2017”
- ECMAScript 2018 & 2019: “Exploring ES2018 and ES2019”