# What changed in @babel/plugin-syntax-typescript

> 25 changes in @babel/plugin-syntax-typescript 8 from its official release notes, upgrade guides and advisories: 20 breaking, 3 new APIs and options. Each one cited. Sources checked 2026-10-26. HTML: https://unstale.sh/npm/@babel/plugin-syntax-typescript/

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

## @babel/plugin-syntax-typescript 8

### Breaking changes

- All presets and plugins require @babel/core@^8.0.0 as a peer dependency; Babel 7 combinations are not officially supported. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration)
- BigIntLiteral.value is a bigint instead of a string, aligning it with NumericLiteral; JSON.stringify cannot serialize bigint. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- TSParenthesizedType is no longer 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)
- Babel is shipped as native ECMAScript modules, affecting how projects load Babel packages. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration)
- Dynamic import() is represented by an ImportExpression node instead of a CallExpression; createImportExpressions: false retains the legacy AST. (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 isTSX option has been removed. Remove it from configuration and enable @babel/plugin-syntax-jsx when JSX syntax is needed. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration)
- Babel 8 packages require Node.js ^22.18.0 || >=24.11.0, so the plugin will not run on older Node versions. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration)
- 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)
- ClassDeclaration and ClassExpression use superTypeArguments instead of superTypeParameters. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Class implements entries use TSClassImplements instead of TSExpressionWithTypeArguments; type arguments use typeArguments. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- TSEnumDeclaration members are wrapped in 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)
- TSImportType.argument is renamed to source. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Interface extends entries use TSInterfaceHeritage instead of TSExpressionWithTypeArguments; type arguments use typeArguments. (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 such as namespace X.Y is represented by one TSModuleDeclaration whose name is a TSQualifiedName, rather than nested declarations. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- TSTypeParameter.name is an Identifier node instead of a plain string, aligning the AST with @typescript-eslint. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- typeParameters 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, Babel creates TSAbstractMethodDefinition nodes. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- When both estree and typescript parser plugins are enabled, Babel creates TSPropertyDefinition nodes. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Interpolated template literal types produce TSTemplateLiteralType nodes; types without interpolated positions retain their existing AST shape. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)

### Fixes and other changes

- Removes isTSX from the plugin's types, correcting the TypeScript declarations. (8.0.3) — [release notes](https://github.com/babel/babel/blob/b23345e2a905edb19e35371ec64fcd1a0ea7c8a2/CHANGELOG.md#v803-2026-06-27)
- TSTypeQuery.exprName can be a ThisExpression for typeof this, rather than an Identifier named this. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
