# What changed in @pinia/testing

> 17 changes in @pinia/testing 3 to 4 from its official release notes, upgrade guides and advisories: 2 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/@pinia/testing/

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

## @pinia/testing 4

### Breaking changes

- Pinia 4 is ESM only, which affects how projects can load the package. (4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0)
- The devtools API is upgraded to v8 and must be installed alongside pinia. (4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0)

### New APIs and options

- piniaSymbol is now exported for use by developers. (2.0.0, 4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0), [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.0)

### Tooling

- Errors and development warnings are refactored with Nostics to make detected problems easier to fix. (4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0)
- Settable getters (computed) are now editable in devtools. (2.0.0, 4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0), [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.0)
- Invalid properties passed to storeToRefs now produce a diagnostic. (2.0.0, 4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0), [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.0)

### Fixes and other changes

- Shallow refs are now notified when applying the initial state in testing. (2.0.2, 4.1.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.1.0), [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.2)
- During hydration, reactive Set and Map state is replaced instead of unioned. (4.0.3) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.3)
- Types avoid treating a name ending in .vue as reserved. (4.0.3) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.3)
- The missing types exports field was re-added, restoring the package’s type exports. (2.0.1, 4.0.1) — [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.1), [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.1)
- Incorrect values in plugins now produce a diagnostic. (2.0.0, 4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0), [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.0)
- HMR now preserves runtime-added properties of setup store refs. (2.0.0, 4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0), [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.0)
- shouldHydrate now respects the skipHydrate marker on non-plain objects. (2.0.0, 4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0), [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.0)
- Nullish values are now skipped when using storeToRefs. (2.0.0, 4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0), [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.0)
- Subscribing the same callback twice no longer creates a duplicate watcher. (2.0.0, 4.0.0) — [release notes](https://github.com/vuejs/pinia/releases/tag/%40pinia/testing%402.0.0), [release notes](https://github.com/vuejs/pinia/releases/tag/v4.0.0)

## @pinia/testing 3

### Behavior and default changes

- Pinia now detects global context on the server side and warns about it. (3.0.4) — [release notes](https://github.com/vuejs/pinia/releases/tag/v3.0.4)

### Fixes and other changes

- Corrects incorrect supported values in package.json. (3.0.4) — [release notes](https://github.com/vuejs/pinia/releases/tag/v3.0.4)
