Babel
  • Docs
  • Setup
  • Try it out
  • Videos
  • Blog
  • Donate
  • Team
  • GitHub

›Misc

Guides

  • What is Babel?
  • Usage Guide
  • Configure Babel
  • Learn ES2015
  • Upgrade to Babel 7

Config Reference

  • Config Files
  • Config Options
  • Presets
  • Plugins
  • Plugins List
  • Compiler assumptions

Presets

  • @babel/preset-env
  • @babel/preset-react
  • @babel/preset-typescript
  • @babel/preset-flow

Misc

  • Roadmap
  • Caveats
  • Features Timeline
  • FAQ
  • Editors

Integration Packages

  • @babel/cli
  • @babel/polyfill
  • @babel/plugin-transform-runtime
  • @babel/register
  • @babel/standalone

Tooling Packages

  • @babel/parser
  • @babel/core
  • @babel/generator
  • @babel/code-frame
  • @babel/runtime
  • @babel/template
  • @babel/traverse
  • @babel/types

Helper Packages

  • helper-compilation-targets
  • helper-module-imports
Edit

Features Timeline

Which major new features did we introduce in each Babel version? This page includes a very short summary for each minor release, or you can read the full changelog on GitHub! Additionally, use this timeline to track some other important efforts, such as the babel-polyfills project.

  1. Babel 7.20.0

    blog post

    • TypeScript 4.9 support
    • Parser support for the explicit resource management Stage 2 proposal
      {
        using handle = openFile(name, "w+");
        write(handle, "Hi!\n");
        write(handle, ":)\n");
      } // Automatically close the file
      
    • Parser support for the import reflection Stage 2 proposal
      import module mod from "./mod.js";
      
      // later ...
      import(mod);
      

    babel-loader 9.0.0

    release

  2. Babel 7.19.0

    blog post

    • Support for the Stage 3 version of the decorators proposal
    • Transform support for the duplicate named capturing groups Stage 3 proposal
      /(?<year>\d\d\d\d)-(?<month>\d\d)|(?<month>\d\d)-(?<year>\d\d\d\d)/
      
  3. Babel 7.18.0

    blog post

    • TypeScript 4.7 support
    • Transform support for the Private destructuring Stage 2 proposal
      class A {
        #x = 2;
        method() {
          const { #x: x } = this;
        }
      }
      
    • No more need to manually include the regenerator-runtime helper when compiling generators
  4. Babel 7.17.0

    blog post

    • Support for the new version of the decorators Stage 2 proposal
      class A {
        @reactive #x = 2;
      
        @logger
        method() {
          this.#x++;
        }
      }
      
    • Support for the RegExp set notation and properties of strings Stage 2 proposal
      /[\p{RGI_Emoji}&&[\0-\uFFFF]]/v;
      
    • Parser support for the private destructuring Stage 2 proposal
      class A {
        #x = 2;
        method() {
          const { #x: x } = this;
        }
      }
      
  5. Babel 7.16.0

    blog post

    • Enable the class static blocks Stage 4 proposal by default
      class A {
        static {
          initialize(A);
        }
      }
      
    • TypeScript 4.5 support
    • Support ESLint 8 in @babel/eslint-parser.
  6. Babel 7.15.0

    blog post

    • Enable parsing for the top-level await Stage 4 proposal by default
      import db from "db";
      await db.connect();
      
    • Enable the Private Brand Checks Stage 4 proposal by default
      class A {
        static { initialize(A); } // static block
        #field;
        is(obj) {
          return #field in obj; // private brand check
        }
      }
      
    • Support the "Hack-style" pipeline operator Stage 2 proposal
      const result = "World" |> `Hello, ${%}!` |> alert(%);
      
    • TypeScript 4.4 support
  7. Babel 7.14.0

    blog post

    • Enable the Class Fields, Private Methods and Static Class Features Stage 4 proposals by default
    • Add the Private Brand Checks and Static Class Blocks proposals to @babel/preset-env's shippedProposals
      class A {
        static { initialize(A); } // static block
        #field;
        is(obj) {
          return #field in obj; // private brand check
        }
      }
      
    • Support for the async do expressions proposal
      let valP = async do {
        2 + await computeIt();
      };
      
    • Support for the importInterop: "node" option in @babel/plugin-transform-modules-commonjs, to aligh Babel with the Node.js behavior
    • TypeScript 4.3 support
  8. Babel 7.13.0

    blog post

    • Top-level targets option (RFC)
    • Granular compiler assumptions (docs, RFC)
    • Support for the Records and Tuples proposals
      let rec = #{ x: 1 };
      let tup = #[1, 2, 3];
      
    • TypeScript 4.2 support
  9. Babel 7.12.0

    blog post

    • Support for the class static blocks proposal
      class A {
        static { initialize(A); }
      }
      
    • Support for imports and exports string names
      let happy = "wooo!";
      export { happy as "😃" };
      
    • Parser support for the Import Assertions proposal
      import json from "./foo.json" assert { type: "json" };
      
    • TypeScript 4.1 support
  10. Babel 7.11.0

    blog post

    • Enable the Logical Assignment and Numeric Separator Stage 4 proposals by default
    • Parser support for the Decimal proposal
      console.assert(0.1m + 0.2m === 0.3m);
      
    • TypeScript 4.0 support
  11. @babel/eslint-parser

    blog post

  12. Babel 7.10.0

    blog post

    • Enable parser support for the import.meta Stage 4 proposal by default
    • Support for the Ergonomic brand checks for Private Fields proposal
      class Car {
        #plate;
        race(other) {
           if (#plate in other) console.log("Racing against another car!");
        }
      }
      
  13. babel-polyfills

    repository

  14. Babel 7.9.0

    blog post

    • bugfixes option in @babel/preset-env, to workaround browsers bugs rather than compiling whole Features
    • TypeScript 3.8 support
    • Support for Flow declare class fields
    • Support for the automatic JSX runtime
  15. Babel 7.8.0

    blog post

    • Enable the Optional Chaining and the Nullish Coalescing Stage 4 proposals by default
    • Support .mjs configuration files
  16. Babel 7.7.0

    blog post

    • Parser support for the top-level await proposal
      import db from "./database.js";
      
      await db.connect();
      
    • Add error recovery support for Early Errors in @babel/parser
    • Support .json and .cjs configuration files
    • TypeScript 3.7 support
  17. Babel 7.6.0

    blog post

    • Support for static private accessors, part of the static class features proposal
      class Dog {
        static get #className() { return "Dog"; }
      }
      
  18. Babel 7.5.0

    blog post

    • Support for the F# pipeline operator proposal
      num |> add(2) |> double
      
    • TypeScript namespace support
  19. Babel 7.4.0

    blog post

    • Support for injecting core-js@3 polyfills
    • Support for the Partial Application proposal
      strings.map(parseInt(?));
      
    • Support for static private methods, part of the static class features proposal
      class Dog {
        static #register() { /* ... */ }
      }
      
    • TypeScript 3.4 support
  20. Babel 7.3.0

    blog post

    • Support for instance private accessors, part of the private methods proposal
      class Dog {
        get #randomId() { return Math.random(); }
      }
      
    • Support for the smart pipeline operator proposal
      num |> add(2, #) |> double
      
    • Support for named capturing groups in regular expressions
      str.match({String.raw`/^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/`})
      
    • TypeScript 3.2 and 2.9 support
  21. Babel 7.2.0

    blog post

    • Support for instance private methods, part of the private methods proposal
      class Dog {
        #bark() { console.log("Mew!") }
      }
      
  22. Babel 7.1.0

    blog post

    • Support for the decorators proposal, as it was specified in September 2018
      class Person {
        @autoIncrement age;
      }
      
    • Support for static private fields, part of the static class features proposal
      class Person {
        static #classId = 3;
      }
      
  23. Babel 7

    blog post

    This has a lot more changes since it was 2 years of pre-releases.

    • Drop support for un-maintained Node versions: 0.10, 0.12, 4, 5
    • Switch to scoped packages (babel-core to @babel/core)
    • Remove yearly presets (@babel/preset-es2015) and Stage presets (@babel/preset-stage-0) (blog post).
    • Added "pure" (/*#__PURE__*/ ) annotation support in certain cases. (Implemented later as @babel/helper-annotate-as-pure
    • Add project-wide babel.config.js config file (docs) and overrides config option.
    • Added "useBuiltIns: "usage" to @babel/preset-env
    • Support TypeScript via @babel/preset-typescript
    • Support JSX Fragments <></>
    • Support a ton of TC39 proposals:
      • Unicode Property Regex
      • JSON Superset
      • new.target
      • Class Private Instance Fields (class A { #b = 2 })
      • Optional Catch Binding try { throw 0 } catch { do() }
      • BigInt (syntax only)
      • import.meta (syntax only) (import.meta.url)
      • Numeric Separators (1_000)
      • function.sent
      • Optional Chaining (a?.b)
      • Logical Assignment Operators (a &&= b; a ||= b)
      • Nullish Coalescing Operator (a ?? b)
      • Pipeline Operator (a |> b)
      • Throw Expressions (() => throw new Error("a"))
← CaveatsFAQ →
  • Babel 7.20.0
  • babel-loader 9.0.0
  • Babel 7.19.0
  • Babel 7.18.0
  • Babel 7.17.0
  • Babel 7.16.0
  • Babel 7.15.0
  • Babel 7.14.0
  • Babel 7.13.0
  • Babel 7.12.0
  • Babel 7.11.0
  • @babel/eslint-parser
  • Babel 7.10.0
  • babel-polyfills
  • Babel 7.9.0
  • Babel 7.8.0
  • Babel 7.7.0
  • Babel 7.6.0
  • Babel 7.5.0
  • Babel 7.4.0
  • Babel 7.3.0
  • Babel 7.2.0
  • Babel 7.1.0
  • Babel 7
Babel
Docs
Learn ES2015
Community
VideosUser ShowcaseStack OverflowSlack ChannelTwitter
More
BlogGitHub OrgGitHub RepoWebsite RepoOld 6.x SiteOld 5.x Site