# What changed in @babel/traverse

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

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

## @babel/traverse 8

### Breaking changes

- path.evaluate no longer evaluates destructured bindings. (8.0.7) — [release notes](https://github.com/babel/babel/blob/b23345e2a905edb19e35371ec64fcd1a0ea7c8a2/CHANGELOG.md#v807-2026-10-07)
- Babel is shipped as native ECMAScript modules, affecting how developers load the package. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration)
- BigIntLiteral.value is now a bigint rather than a string, aligning with NumericLiteral; JSON.stringify cannot serialize the new value. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- TSParenthesizedType is no longer generated unless this parser option is enabled; node.extra.parenthesized can still indicate parentheses when disabled. (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)
- Babel 8 packages require Node.js ^22.18.0 || >=24.11.0; older Node.js versions cannot run Babel. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration)
- NodePath methods hoist, updateSiblingKeys, call, setScope, resync, popContext, pushContext, setup, setKey, and visit are removed. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The NodePath is, isnt, has, and equals methods are removed; compare properties of path.node directly instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- NodePath.prototype.toComputedKey and Scope.prototype.buildUndefinedNode are removed; use t.toComputedKey and t.buildUndefinedNode from @babel/types instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- NodePath#requeue() can now requeue a skipped NodePath; check NodePath#shouldSkip to preserve the previous behavior. (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)
- Methods starting with an underscore are removed from Scope and NodePath. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Scope.prototype.getAllBindingsOfKind and Scope.prototype.toArray are removed. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Scope.prototype.traverse, Scope#parentBlock, and Scope#hub are removed; use scope.path methods and properties instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The block argument is removed; call rename on the scope corresponding to that block instead. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Scope#uids and Scope#references become uidsSet and referencesSet Set objects, defined only on the program scope. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The field on ClassDeclaration and ClassExpression is renamed to superTypeArguments. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- Enum members are now wrapped in a TSEnumBody node under the declaration's body field. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- This node is split into TSClassImplements and TSInterfaceHeritage; the new nodes use typeArguments, and qualified expressions are parsed as MemberExpression. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- An exported TSImportEqualsDeclaration is now nested in an ExportNamedDeclaration, and its isExport field is removed; detect export status through the parent path. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The argument field is renamed to source. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- The typeParameter property is flattened into key and constraint properties on the TSMappedType node. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- A dotted namespace name is now 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 now produce TSTemplateLiteralType nodes; templates without interpolated positions retain their previous AST shape. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- TSTypeParameter.name is now an Identifier node rather than a plain string. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- For typeof this, exprName is now a ThisExpression rather than an Identifier named this. (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 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)

### Deprecations

- The Babel 7 import() AST can be requested by setting this parser option to false; the legacy AST is deprecated and the option will be removed in Babel 9. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)

### New APIs and options

- This node is created when both the estree and typescript parser plugins are enabled. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)
- This node is created when both the estree and typescript parser plugins are enabled. (8.0.0) — [upgrade guide](https://babel.dev/docs/v8-migration-api)

### Fixes and other changes

- Traversal now visits decorators of TSParameterProperty nodes. (8.0.8) — [release notes](https://github.com/babel/babel/blob/17cb59e303efbc20c42b9a1b20e242c581d1b8f6/CHANGELOG.md#v808-2026-10-23)
- NodePath#evaluate now evaluates TypeScript expression wrappers. (8.0.7) — [release notes](https://github.com/babel/babel/blob/b23345e2a905edb19e35371ec64fcd1a0ea7c8a2/CHANGELOG.md#v807-2026-10-07)
- Handles null when retrieving all next siblings. (8.0.5) — [release notes](https://github.com/babel/babel/blob/b23345e2a905edb19e35371ec64fcd1a0ea7c8a2/CHANGELOG.md#v805-2026-09-10)
- Handles null when retrieving all previous siblings. (8.0.5) — [release notes](https://github.com/babel/babel/blob/b23345e2a905edb19e35371ec64fcd1a0ea7c8a2/CHANGELOG.md#v805-2026-09-10)
- Removing a node now unwraps a single sequence expression. (8.0.5) — [release notes](https://github.com/babel/babel/blob/b23345e2a905edb19e35371ec64fcd1a0ea7c8a2/CHANGELOG.md#v805-2026-09-10)
- Calling replaceWith in Visitor#exit no longer stops traversal. (8.0.4) — [release notes](https://github.com/babel/babel/blob/b23345e2a905edb19e35371ec64fcd1a0ea7c8a2/CHANGELOG.md#v804-2026-07-09)
