Babel 7.26.0blog post
Enable the regular expression modifiers Stage 4 proposal by default
Enable parsing of the import attributes Stage 4 proposal by default
Babel 7.25.0blog post
Enable the Stage 4 duplicated named capturing groups proposal by default
Babel 7.24.0blog post
Support for the JSON modules Stage 3 proposal
Babel 7.23.0blog post
Support for the Decorator Metadata Stage 3 proposal
Support for the Source Phase Import Stage 3 proposal
Support for the Deferred Import Evaluation Stage 2 proposal
Support for the Optional Chaining Assignment proposal
Support for rewriting .ts extensions in imports
Babel 7.22.0blog post
Enable the Stage 4 RegExp v flag proposal by default
Support for the explicit resource management proposal Stage 3 proposal, including the async version
JavaScript{ await using db = connect(databaseURL); let user = await db.getUserById(userId); await db.createPost(user.name, "Hi! :)");} // Automatically close the db
Support for the updates of the decorators proposal that reached consensus in the March 2023 and May 2023 TC39 meetings
Parsing support for the Stage 3 import attributes proposal, previously known as "import assertions"
JavaScriptimport data from "./data.json" with { type: "json" };
Babel 7.21.0blog post
TypeScript 5.0 support
Support for the updates of the decorators proposal that reached consensus in the January 2023 TC39 meeting
Support for the inline RegExp modifiers Stage 3 proposal
JavaScript/(?i-m:a.)/m.exec("a\nAb"); // ["Ab"]
Babel 7.20.0blog post
TypeScript 4.9 support
Parser support for the explicit resource management Stage 2 proposal
JavaScript{ 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
JavaScriptimport module mod from "./mod.js";// later ...import(mod);
babel-loader 9.0.0release
Babel 7.19.0blog post
Support for the Stage 3 version of the decorators proposal
Transform support for the duplicate named capturing groups Stage 3 proposal
JavaScript/(?
Babel 7.18.0blog post
TypeScript 4.7 support
Transform support for the Private destructuring Stage 2 proposal
JavaScriptclass A { #x = 2; method() { const { #x: x } = this; }}
No more need to manually include the regenerator-runtime helper when compiling generators
Babel 7.17.0blog post
Support for the new version of the decorators Stage 2 proposal
JavaScriptclass A { @reactive #x = 2; @logger method() { this.#x++; }}
Support for the RegExp set notation and properties of strings Stage 2 proposal
JavaScript/[\p{RGI_Emoji}&&[\0-\uFFFF]]/v;
Parser support for the private destructuring Stage 2 proposal
JavaScriptclass A { #x = 2; method() { const { #x: x } = this; }}
Babel 7.16.0blog post
Enable the class static blocks Stage 4 proposal by default
JavaScriptclass A { static { initialize(A); }}
TypeScript 4.5 support
Support ESLint 8 in @babel/eslint-parser.
Babel 7.15.0blog post
Enable parsing for the top-level await Stage 4 proposal by default
JavaScriptimport db from "db";await db.connect();
Enable the Private Brand Checks Stage 4 proposal by default
JavaScriptclass 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
JavaScriptconst result = "World" |> `Hello, ${%}!` |> alert(%);
TypeScript 4.4 support
Babel 7.14.0blog 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
JavaScriptclass A { static { initialize(A); } // static block #field; is(obj) { return #field in obj; // private brand check }}
Support for the async do expressions proposal
JavaScriptlet 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
Babel 7.13.0blog post
Top-level targets option (RFC)
Granular compiler assumptions (docs, RFC)
Support for the Records and Tuples proposals
JavaScriptlet rec = #{ x: 1 };let tup = #[1, 2, 3];
TypeScript 4.2 support
Babel 7.12.0blog post
Support for the class static blocks proposal
JavaScriptclass A { static { initialize(A); }}
Support for imports and exports string names
JavaScriptlet happy = "wooo!";export { happy as "😃" };
Parser support for the Import Assertions proposal
JavaScriptimport json from "./foo.json" assert { type: "json" };
TypeScript 4.1 support
Babel 7.11.0blog post
Enable the Logical Assignment and
Numeric Separator Stage 4 proposals by default
Parser support for the Decimal proposal
JavaScriptconsole.assert(0.1m + 0.2m === 0.3m);
TypeScript 4.0 support
@babel/eslint-parserblog post
Babel 7.10.0blog post
Enable parser support for the import.meta Stage 4 proposal by default
Support for the Ergonomic brand checks for Private Fields proposal
JavaScriptclass Car { #plate; race(other) { if (#plate in other) console.log("Racing against another car!"); }}
babel-polyfillsrepository
Babel 7.9.0blog 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
Babel 7.8.0blog post
Enable the Optional Chaining and the
Nullish Coalescing Stage 4 proposals by default
Support .mjs configuration files
Babel 7.7.0blog post
Parser support for the top-level await proposal
JavaScriptimport 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
Babel 7.6.0blog post
Support for static private accessors, part of the
static class features proposal
JavaScriptclass Dog { static get #className() { return "Dog"; }}
Babel 7.5.0blog post
Support for the F# pipeline operator proposal
JavaScriptnum |> add(2) |> double
TypeScript namespace support
Babel 7.4.0blog post
Support for injecting core-js@3 polyfills
Support for the Partial Application proposal
JavaScriptstrings.map(parseInt(?));
Support for static private methods, part of the
static class features proposal
JavaScriptclass Dog { static #register() { /* ... */ }}
TypeScript 3.4 support
Babel 7.3.0blog post
Support for instance private accessors, part of the
private methods proposal
JavaScriptclass Dog { get #randomId() { return Math.random(); }}
Support for the smart pipeline operator proposal
JavaScriptnum |> add(2, #) |> double
Support for
named capturing groups
in regular expressions
JavaScriptstr.match({String.raw`/^(?
TypeScript 3.2 and 2.9 support
Babel 7.2.0blog post
Support for instance private methods, part of the private methods proposal
JavaScriptclass Dog { #bark() { console.log("Mew!") }}
Babel 7.1.0blog post
Support for the decorators proposal, as it was specified in September 2018
JavaScriptclass Person { @autoIncrement age;}
Support for static private fields, part of the static class features proposal
JavaScriptclass Person { static #classId = 3;}
Babel 7blog 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"))