# What changed in syrupy

> 15 changes in syrupy 6 from its official release notes, upgrade guides and advisories: 3 breaking, 5 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/pypi/syrupy/

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

## syrupy 6

### Breaking changes

- The separate DataclassPlugin has been removed; remove its imports and plugin wiring because stdlib dataclasses are serialized natively by the Amber serializer. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)
- The JSON extension serializes dates as YYYY-MM-DD instead of repr strings, so existing JSON snapshots containing dates need updating. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)
- The Amber serializer now serializes stdlib dataclasses natively; without the former plugin, snapshots may change from repr-style strings to structured Amber form. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)

### New APIs and options

- Experimental opt-in for pytest-xdist that uses an exclusive file lock and atomic replace around amber writes to prevent workers from dropping snapshots. (6.1.1) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.1.1)
- Sets the maximum wait for the snapshot file lock; defaults to 60s. (6.1.1) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.1.1)
- Experimental option to write Amber snapshots in pytest collection/declaration order, including parametrize/ids order, instead of alphabetical snapshot name order. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)
- snapshot(diff=...) accepts an in-memory baseline object, so tests can diff against data without writing a separate base snapshot. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)
- Skips unused-snapshot discovery, reporting, and deletion, providing an escape hatch for very large Amber suites where unused detection dominates runtime. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)

### Performance

- Single-file extensions write updates immediately instead of buffering large payloads until session end, improving memory use; multi-entry Amber files still batch writes. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)
- Under partial selection, unused detection considers only plausible test files, reducing its cost with sharding plugins such as pytest-split. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)
- Worker-to-controller snapshot collection payloads are compressed, cutting transfer size for large suites. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)

### Tooling

- Tests that use the snapshot fixture, directly or indirectly, are marked automatically, allowing snapshot updates to target only those tests. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)

### Fixes and other changes

- With regex=False, path_value now replaces values at nested paths such as user.token; previously, default-mode lookup missed escaped path keys. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)
- Sorting values such as homogeneous frozensets with partial ordering no longer depends on PYTHONHASHSEED, preventing flaky snapshots. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)
- Skipped sibling single-file snapshots are no longer reported as unused or deleted during --snapshot-update. (6.0.0) — [release notes](https://github.com/syrupy-project/syrupy/releases/tag/v6.0.0)
