unstale

npm / @babel/core

@babel/core

What changed in @babel/core 8, from its official release notes, upgrade guides and advisories. Also covers @babel/eslint-parser, @babel/preset-env. Sources checked 2026-10-23.

47 breaking3 new APIs and options1 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/core 851 changes

Breaking changes 47

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

    8.0.0upgrade guide

  • The default export no longer accepts the third parameter; behavior matches Babel 7's default, includeUpdateExpression: true.

    8.0.0upgrade guide

  • When transforming ESM through @babel/preset-env, explicitly use one of the module transform plugins.

    8.0.0upgrade guide

  • The bugfixes option has been removed; Babel now compiles broken syntax to the closest non-broken modern syntax supported by target browsers.

    8.0.0upgrade guide

  • The corejs option must specify the minor version of core-js 3 so Babel can polyfill features available in the version you use.

    8.0.0upgrade guide

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

    8.0.0upgrade guide

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

    8.0.0upgrade guide

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

    8.0.0upgrade guide

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

    8.0.0upgrade guide

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

    8.0.0upgrade guide

  • The exclude option respects renamed package names; update entries to the new package names.

    8.0.0upgrade guide

  • Removed syntax plugins can no longer be used in exclude; remove any such plugins from the option.

    8.0.0upgrade guide

  • The include option respects renamed package names; update entries to the new package names.

    8.0.0upgrade guide

  • Removed syntax plugins can no longer be used in include; remove any such plugins from the option.

    8.0.0upgrade guide

  • The loose and spec options have been removed; use the top-level assumptions option instead.

    8.0.0upgrade guide

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

    8.0.0release notesupgrade guide

  • BigIntLiteral.value is a bigint rather than a string, aligning it with NumericLiteral.

    8.0.0upgrade guide

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

    8.0.0upgrade guide

  • Exported TSImportEqualsDeclaration is wrapped in an ExportNamedDeclaration; its isExport field is removed.

    8.0.0upgrade guide

  • Use forceAllTransforms if you relied on the removed uglify target to make @babel/preset-env transform down to ES5.

    8.0.0upgrade guide

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

    8.0.0upgrade guide

  • The method is removed from the plugin pass; use pass.file.getModuleName instead.

    8.0.0upgrade guide

  • Dynamic import() is represented by an ImportExpression node instead of a CallExpression with an Import callee.

    8.0.0upgrade guide

  • Importing internal files is disallowed; use exported APIs instead.

    8.0.0upgrade guide

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

    8.0.0upgrade guide

  • The loose and spec options have been removed from @babel/preset-env; migrate their equivalent settings to the top-level assumptions option.

    8.0.0upgrade guide

  • A TS qualified name in TSClassImplements or TSInterfaceHeritage expressions is parsed as a MemberExpression.

    8.0.0upgrade guide

  • @babel/plugin-transform-runtime replaces package.json#browser with package.json#imports using a browser condition; browser bundling requires configuring that condition and imports support.

    8.0.0upgrade guide

  • The parameters field is renamed to params on TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSFunctionType, TSConstructorType, and TSMethodSignature.

    8.0.0upgrade guide

  • Plugins can no longer expose fields as named exports; use a default export of a plugin object or factory function.

    8.0.0upgrade guide

  • The typeAnnotation field is renamed to returnType on TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSFunctionType, TSConstructorType, and TSMethodSignature.

    8.0.0upgrade guide

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

    8.0.0upgrade guide

  • The loose and spec options have been removed from @babel/preset-env; migrate their equivalent settings to the top-level assumptions option.

    8.0.0upgrade guide

  • Stage 4 plugin entries are renamed from proposal-* to transform-*; use the new names when referring to these plugins.

    8.0.0upgrade guide

  • ClassDeclaration and ClassExpression rename superTypeParameters to superTypeArguments.

    8.0.0upgrade guide

  • The default compilation target changes from all browsers to browserslist's defaults; set targets explicitly if you need to support legacy browsers.

    8.0.0upgrade guide

  • Setting targets.esmodules to true now intersects with browser or browserslist targets instead of overriding them.

    8.0.0upgrade guide

  • Class implements entries use TSClassImplements instead of TSExpressionWithTypeArguments.

    8.0.0upgrade guide

  • TSEnumDeclaration members are wrapped in a TSEnumBody node.

    8.0.0upgrade guide

  • TSImportType.argument is renamed to source.

    8.0.0upgrade guide

  • Interface extends entries use TSInterfaceHeritage instead of TSExpressionWithTypeArguments.

    8.0.0upgrade guide

  • TSMappedType flattens typeParameter into key and constraint properties on the node.

    8.0.0upgrade guide

  • A namespace X.Y declaration is represented by one TSModuleDeclaration with a TSQualifiedName, rather than nested declarations.

    8.0.0upgrade guide

  • TSParenthesizedType is generated only when createParenthesizedExpression is enabled; parentheses can otherwise be detected with node.extra.parenthesized.

    8.0.0upgrade guide

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

    8.0.0upgrade guide

  • The typeParameters field is renamed to typeArguments on CallExpression, JSXOpeningElement, NewExpression, OptionalCallExpression, TSImportType, TSInstantiationExpression, TSTypeQuery, and TSTypeReference.

    8.0.0upgrade guide

  • preset-env's useBuiltIns option was removed, so it can no longer be configured.

    8.0.0release notesupgrade guide

New APIs and options 3

  • The upgrade guidance recommends enabling bugfixes in @babel/preset-env when modernizing a Babel 7 configuration.

    8.0.0upgrade guide

  • When both estree and typescript parser plugins are enabled, the parser creates TSAbstractMethodDefinition and TSPropertyDefinition nodes.

    8.0.0upgrade guide

  • A template literal type with at least one interpolated position produces a TSTemplateLiteralType node.

    8.0.0upgrade guide

Fixes and other changes 1

  • TSTypeQuery.exprName can be a ThisExpression for typeof this instead of an Identifier named this.

    8.0.0upgrade guide