How to use experimental ES7 features.

Babel also has experimental support for ES7 proposals.

Subject to change

These proposals are subject to change so use with extreme caution. Babel may update without warning in order to track spec changes.

The TC39 categorises proposals into 4 stages:

  • Stage 0 - Strawman
  • Stage 1 - Proposal
  • Stage 2 - Draft
  • Stage 3 - Candidate
  • Stage 4 - Finished

Proposals that are stage 2 or above are enabled by default. Now this does not mean that they're guaranteed to be included in future ECMAScript specifications or maintained in Babel itself. Stage 2 is considered a good point for inclusion by default in Babel due to their relative maturity and need for critical proposal feedback.


Stage 0

Stage 1

Stage 2

NOTE: Stage 2 and above are enabled by default.

Stage 3

NOTE: Stage 2 and above are enabled by default.


Enable by stage

$ babel --stage 0
babel.transform("code", { stage: 0 });

Enable by transformer

$ babel --optional es7.decorators
babel.transform("code", { optional: ["es7.decorators"] });