# What changed in cssnano

> 13 changes in cssnano 9 from its official release notes, upgrade guides and advisories: 5 breaking, 1 deprecations. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/cssnano/

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

## cssnano 9

### Breaking changes

- Projects that require this package directly must declare it as a dependency or switch to the default preset configuration. (9.9.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.9.0)
- Overrides that pin an individual plugin no longer apply. (9.9.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.9.0)
- Resolutions that pin an individual plugin no longer apply. (9.9.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.9.0)
- The presets no longer run postcss-svgo; run it before cssnano or optimize SVG assets with the SVGO cli instead. (9.8.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.8.0)
- The svgo option is now ignored, so it no longer configures SVG optimization through the preset. (9.8.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.8.0)

### Deprecations

- An installed preset package takes precedence over the built-in preset and prints a one-time warning; pass the imported preset function to avoid it. (9.9.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.9.0)

### Behavior and default changes

- Full preset names fall back to the built-in preset when the corresponding package is not installed. (9.9.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.9.0)
- Always converts between cm and mm, and converts q to cm or mm; q is never the output unit. (9.8.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.8.0)
- Merges at-rules separated by unrelated rules. (9.7.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.7.0)
- Drops a min-* or max-* already implied in another range in the same media query. (9.7.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.7.0)

### Tooling

- cssnano ships its presets and plugins in one package, reducing the dependency tree from about thirty packages to one. (9.9.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.9.0)

### Fixes and other changes

- The lite and advanced presets work without installing another package. (9.9.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.9.0)
- Only the url() token is normalized; URLs remain byte-identical, and whitespace inside quoted @namespace URLs is preserved. (9.8.0) — [release notes](https://github.com/cssnano/cssnano/releases/tag/cssnano%409.8.0)
