unstale

npm / @babel/cli

@babel/cli

What changed in @babel/cli 8, from its official release notes, upgrade guides and advisories. Also covers @babel/eslint-plugin, @babel/node, @babel/plugin-transform-typescript, @babel/register, @babel/types. Sources checked 2026-10-23.

59 breaking1 deprecations3 new APIs and options5 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.3 on npm

@babel/cli 868 changes

Breaking changes 59

  • Identifier definition is updated to Unicode 18, affecting which identifiers Babel accepts.

    8.0.6release notes

  • The parser now disallows this TypeScript syntax.

    8.0.4release notes

  • The parser now forbids let x! and let x! =.

    8.0.4release notes

  • The preset-env useBuiltIns option was removed.

    8.0.1release notes

  • The method was removed from plugin pass; use addNamed or addDefault from @babel/helper-module-imports instead.

    8.0.0upgrade guide

  • Babel is shipped as native ECMAScript modules, changing how the CLI package is loaded by Node.js.

    8.0.0upgrade guide

  • The CLI flag is no longer used for module transformation options; configure the relevant module transform plugin in a Babel config instead.

    8.0.0upgrade guide

  • The CLI flag is no longer used for module transformation options; configure the relevant module transform plugin in a Babel config instead.

    8.0.0upgrade guide

  • The CLI flag is no longer used for module transformation options; configure the relevant module transform plugin in a Babel config instead.

    8.0.0upgrade guide

  • The undocumented sub-export was removed; use core-js-compat/data.json instead.

    8.0.0upgrade guide

  • The undocumented sub-export was removed; use @babel/compat-data/native-modules instead.

    8.0.0upgrade guide

  • The undocumented sub-export was removed; use core-js-compat/data.json instead.

    8.0.0upgrade guide

  • The undocumented sub-export was removed; use @babel/compat-data/plugins instead.

    8.0.0upgrade guide

  • The undocumented sub-export was removed; use .unreleasedLabels from @babel/helper-compilation-targets instead.

    8.0.0upgrade guide

  • BigIntLiteral.value is now a bigint rather than a string; callers needing a string representation can use the bigint instance's toString() method.

    8.0.0upgrade guide

  • The typeParameters field is renamed to typeArguments.

    8.0.0upgrade guide

  • The superTypeParameters field is renamed to superTypeArguments.

    8.0.0upgrade guide

  • The superTypeParameters field is renamed to superTypeArguments.

    8.0.0upgrade guide

  • The named export was removed from @babel/helper-replace-supers; import it from @babel/helper-environment-visitor instead.

    8.0.0upgrade guide

  • The function was removed; add chalk to your dependencies if you need to use it.

    8.0.0upgrade guide

  • The plugin pass method was removed; use .file.getModuleName instead.

    8.0.0upgrade guide

  • Dynamic import() is represented by an ImportExpression node instead of a CallExpression, enabling support for new ES features such as Source Phrase Imports.

    8.0.0upgrade guide

  • The third parameter was removed from the default export; Babel 8 behavior matches Babel 7's default, where it is true.

    8.0.0upgrade guide

  • Importing internal files from @babel/cli is disallowed; use only the exported API.

    8.0.0upgrade guide

  • The undocumented API was removed; use isRequired from @babel/helper-compilation-targets instead.

    8.0.0upgrade guide

  • The typeParameters field is renamed to typeArguments.

    8.0.0upgrade guide

  • With modules: auto, Babel now falls back to assuming ESM support.

    8.0.0release notes

  • The typeParameters field is renamed to typeArguments.

    8.0.0upgrade guide

  • Babel 8 packages require Node.js ^22.18.0 || >=24.11.0; Babel itself will not run on older versions.

    8.0.0upgrade guide

  • The typeParameters field is renamed to typeArguments.

    8.0.0upgrade guide

  • Bundling @babel/plugin-transform-runtime now uses package.json#imports with a browser condition instead of package.json#browser; configure that condition and ensure your bundler supports imports.

    8.0.0upgrade guide

  • Plugin fields can no longer be provided as named exports; export a plugin object or factory function as the default instead.

    8.0.0upgrade guide

  • The named export was removed from @babel/helper-replace-supers; use requeueComputedKeyAndDecorators from @babel/helper-environment-visitor instead.

    8.0.0upgrade guide

  • The default compilation target changes from all browsers to browserslist's defaults; specify targets or a .browserslistrc if you need different support.

    8.0.0upgrade guide

  • The parameters field is renamed to params.

    8.0.0upgrade guide

  • The typeAnnotation field is renamed to returnType.

    8.0.0upgrade guide

  • Class implements clauses now use TSClassImplements nodes instead of TSExpressionWithTypeArguments; the new node uses typeArguments.

    8.0.0upgrade guide

  • The parameters field is renamed to params.

    8.0.0upgrade guide

  • The typeAnnotation field is renamed to returnType.

    8.0.0upgrade guide

  • The parameters field is renamed to params.

    8.0.0upgrade guide

  • The typeAnnotation field is renamed to returnType.

    8.0.0upgrade guide

  • Enum members are now wrapped in a TSEnumBody node in the body property.

    8.0.0upgrade guide

  • The parameters field is renamed to params.

    8.0.0upgrade guide

  • The typeAnnotation field is renamed to returnType.

    8.0.0upgrade guide

  • Exported declarations are now parsed as ExportNamedDeclaration nodes, and isExport is removed; detect export status through the parent path.

    8.0.0upgrade guide

  • The argument field is renamed to source.

    8.0.0upgrade guide

  • The typeParameters field is renamed to typeArguments.

    8.0.0upgrade guide

  • The typeParameters field is renamed to typeArguments.

    8.0.0upgrade guide

  • Interface heritage clauses now use TSInterfaceHeritage nodes instead of TSExpressionWithTypeArguments; the new node uses typeArguments.

    8.0.0upgrade guide

  • The typeParameter property is flattened into key and constraint properties on TSMappedType.

    8.0.0upgrade guide

  • The typeParameter property is flattened into key and constraint properties on TSMappedType.

    8.0.0upgrade guide

  • The parameters field is renamed to params.

    8.0.0upgrade guide

  • The typeAnnotation field is renamed to returnType.

    8.0.0upgrade guide

  • A qualified namespace name such as X.Y is represented as one TSModuleDeclaration with a TSQualifiedName, instead of nested declarations.

    8.0.0upgrade guide

  • TSParenthesizedType is no longer generated unless createParenthesizedExpression is enabled; parentheses can also be detected through node.extra.parenthesized.

    8.0.0upgrade guide

  • Interpolated template literal types now produce TSTemplateLiteralType nodes; non-interpolated template literal types are unchanged.

    8.0.0upgrade guide

  • TSTypeParameter.name is now an Identifier node rather than a plain string.

    8.0.0upgrade guide

  • The typeParameters field is renamed to typeArguments.

    8.0.0upgrade guide

  • The typeParameters field is renamed to typeArguments.

    8.0.0upgrade guide

Deprecations 1

  • The legacy import() AST is deprecated; set this parser option to false to retain it temporarily. The option will be removed in Babel 9.

    8.0.0upgrade guide

New APIs and options 3

  • Enable this parser option to retain parenthesized type information as TSParenthesizedType nodes.

    8.0.0upgrade guide

  • When both estree and typescript parser plugins are enabled, Babel creates TSAbstractMethodDefinition nodes to align with typescript-eslint.

    8.0.0upgrade guide

  • When both estree and typescript parser plugins are enabled, Babel creates TSPropertyDefinition nodes to align with typescript-eslint.

    8.0.0upgrade guide

Fixes and other changes 5

  • Fixes parsing of arrow function parameters inside ternaries when using Flow.

    8.0.6release notes

  • Polishes the error message reported for invalid binary literal 0b19.

    8.0.6release notes

  • The CLI no longer inherits the parent process's execArgv.

    8.0.5release notes

  • Calling replaceWith in Visitor#exit no longer stops traversal.

    8.0.4release notes

  • TSTypeQuery.exprName can now be a ThisExpression for typeof this, rather than an Identifier named this.

    8.0.0upgrade guide