# What changed in dependency-cruiser

> 41 changes in dependency-cruiser 17 to 18 from its official release notes, upgrade guides and advisories: 3 breaking, 1 deprecations, 8 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/dependency-cruiser/

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

## dependency-cruiser 18

### Breaking changes

- The dot-webpage reporter is no longer experimental and replaces the name x-dot-webpage. (18.3.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.3.0)
- Support for Node.js 20 and 25 was dropped, so projects using those versions must upgrade. (18.0.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.0.0)

### Deprecations

- The depcruise-baseline command is deprecated in favor of dependency-cruiser --baseline. (18.3.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.3.0)

### New APIs and options

- The new baseline-mode value format sorts the baseline so future diffs are easier to read after manual edits. (18.4.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.4.0)
- Set baseline.staleEntriesSeverity to error to make the err, null, azure-devops and teamcity reporters exit with a non-zero code when the baseline contains stale entries. (18.4.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.4.0)
- Exposes baseline functionality as a regular dependency-cruiser option, with the same functionality as depcruise-baseline. (18.3.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.3.0)
- Updating the baseline can now remove fixed violations without adding new ones. (18.3.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.3.0)
- Configurations can now be written in TypeScript. (18.2.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.2.0)

### Behavior and default changes

- Import extraction now supports imports inside module and namespace blocks. (18.5.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.5.0)
- The err, err-html and markdown reporters now show the number of stale entries in the baseline. (18.4.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.4.0)
- Baseline updates now show how many violations are new, unchanged, or removed. (18.3.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.3.0)
- Nested .gitignore files are now taken into account. (18.2.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.2.0)
- dependency-cruiser now warns at runtime when TypeScript, Babel, or SWC is needed but a usable compiler is not present. (18.1.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.1.0)
- The report's table heads are now sticky. (18.1.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.1.0)

### Tooling

- The markdown report adds a baseline stale table. (18.5.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.5.0)
- The swc compiler can now parse tsx and jsx. (18.3.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.3.0)
- The swc compiler now recognizes type-only imports. (18.3.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.3.0)

### Fixes and other changes

- Svelte components that use top-level await can now be compiled. (18.6.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.6.0)
- Finds the SWC Visitor when Bun hands over the default export, fixing extraction in that case. (18.3.1) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.3.1)
- The graph summary is now more deterministic. (18.0.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v18.0.0)

## dependency-cruiser 17

### Breaking changes

- AJV is no longer a runtime dependency, reducing dependency management and making installation faster. (17.3.3) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.3)

### New APIs and options

- Adds a configuration option for err-* and markdown reporters to show unresolved module names in the to-part of violations. (17.4.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.4.0)
- Adds the ancestor matcher for dependency-cruiser configuration. (17.2.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.2.0)
- Adds a suffix option for clickable links. (17.1.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.1.0)

### Performance

- The reachables algorithm runs 1.3–1.5x faster, potentially improving runs with reachables in the rule set. (17.3.3) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.3)
- Regex compilations are cached throughout dependency-cruiser, making validation 1.5–2.5x faster. (17.3.3) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.3)
- JSON schemas are pre-compiled at build time, making the validation step 10x faster. (17.3.3) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.3)
- Performance optimizations make runs on TypeScript sources faster. (17.3.3) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.3)
- Algorithm updates improve performance. (17.3.1) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.1)

### Behavior and default changes

- Enriches violations with the unresolved module name and the dependency types. (17.4.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.4.0)
- Dependents are now analyzed when --reaches or --focus are the only reason to do so. (17.3.7) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.7)
- The ndjson listener output now includes runId and user and system totals. (17.3.6) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.6)

### Tooling

- Adds a basic consistency check for TypeScript and Babel features against transpiler availability. (17.4.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.4.0)
- Dependency-cruiser can now be used with TypeScript v6. (17.3.9) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.9)
- Dependency-cruiser now detects imports done with process.getBuiltinModule. (17.3.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.0)
- Working with bun modules is easier; bun modules were already supported. (17.1.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.1.0)

### Fixes and other changes

- Retains Svelte 5+ dependencies used exclusively outside <script> sections during extraction. (17.3.8) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.8)
- The flat dot reporter now respects collapse patterns. (17.3.6) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.6)
- Extraction works again when TypeScript is not installed. (17.3.4) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.4)
- Fixes tsconfig not working when using the API. (17.3.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.3.0)
- Calls ITranspilerWrapper.isAvailable() correctly in the Svelte pre process. (17.2.0) — [release notes](https://github.com/sverweij/dependency-cruiser/releases/tag/v17.2.0)
