# What changed in @babel/runtime

> 37 changes in @babel/runtime 8 from its official release notes, upgrade guides and advisories: 32 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-23. HTML: https://unstale.sh/npm/@babel/runtime/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @babel/runtime 8

### Breaking changes

- Removed from the plugin pass; use addNamed or addDefault from @babel/helper-module-imports instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The default export no longer accepts the third parameter; behavior matches Babel 7's default, with includeUpdateExpression true. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- This undocumented sub-export is removed; use core-js-compat/data.json instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- This undocumented sub-export is removed; use @babel/compat-data/native-modules instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- This undocumented sub-export is removed; use core-js-compat/data.json instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- This undocumented sub-export is removed; use @babel/compat-data/plugins instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- This undocumented sub-export is removed; use the unreleasedLabels export from @babel/helper-compilation-targets instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The package is discontinued; migrate to core-js@3 and babel-plugin-polyfill-corejs3. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration)
- BigIntLiteral.value is a bigint rather than a string, aligning it with NumericLiteral; JSON.stringify cannot serialize bigint. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The named export is removed from @babel/helper-replace-supers; import it from @babel/helper-environment-visitor instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The function is removed; add chalk to your dependencies if you need to use it. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Removed from the plugin pass; use pass.file.getModuleName instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Dynamic import() is represented by an ImportExpression node instead of a CallExpression with an Import callee. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Importing internal files is disallowed; use the exported API only. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The undocumented API is removed; use isRequired from @babel/helper-compilation-targets instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Plugin fields can no longer be named exports; export a plugin object or factory function as the default export. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Babel 8 packages require Node.js ^22.18.0 or >=24.11.0; Babel itself will not run on older versions. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration)
- Bundling @babel/plugin-transform-runtime now uses package.json#imports with a browser condition instead of package.json#browser; configure the browser condition and ensure bundler support for imports. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The parameters field is renamed to params on TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSFunctionType, TSConstructorType, and TSMethodSignature. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The typeAnnotation field is renamed to returnType on TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSFunctionType, TSConstructorType, and TSMethodSignature. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The named export is removed; use requeueComputedKeyAndDecorators from @babel/helper-environment-visitor instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The superTypeParameters field is renamed to superTypeArguments in ClassDeclaration and ClassExpression. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Class implements entries use TSClassImplements instead of TSExpressionWithTypeArguments; qualified expressions are parsed as MemberExpression. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- TSEnumDeclaration members are wrapped within a TSEnumBody node. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- An exported TSImportEqualsDeclaration is parsed inside an ExportNamedDeclaration, and its isExport field is removed. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The TSImportType argument field is renamed to source. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Interface extends entries use TSInterfaceHeritage instead of TSExpressionWithTypeArguments. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- TSMappedType flattens typeParameter into key and constraint properties on the node. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- A dotted namespace name is represented by one TSModuleDeclaration whose name is a TSQualifiedName, rather than nested TSModuleDeclaration nodes. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Interpolated template literal types produce a TSTemplateLiteralType node; non-interpolated template literal types are unchanged. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- TSTypeParameter.name is an Identifier node rather than a plain string. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The typeParameters field is renamed to typeArguments on CallExpression, JSXOpeningElement, NewExpression, OptionalCallExpression, TSImportType, TSInstantiationExpression, TSTypeQuery, and TSTypeReference. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)

### New APIs and options

- When both estree and typescript parser plugins are enabled, the parser creates TSAbstractMethodDefinition and TSPropertyDefinition nodes. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)

### Behavior and default changes

- @babel/runtime now automatically exposes ES modules when needed through package.json exports, so the useESModules option is no longer needed. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration)
- TSParenthesizedType is not generated unless createParenthesizedExpression is enabled; node.extra.parenthesized can indicate parentheses when it is false. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)

### Fixes and other changes

- Fixes the helper so it does not bypass a custom Symbol.iterator on array-backed Proxies. (8.0.8) — [release notes](https://github.com/babel/babel/blob/17cb59e303efbc20c42b9a1b20e242c581d1b8f6/CHANGELOG.md#v808-2026-10-23)
- TSTypeQuery.exprName can be a ThisExpression rather than a `this` Identifier. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
