# What changed in reselect

> 9 changes in reselect 5 from its official release notes, upgrade guides and advisories: 3 breaking, 2 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/reselect/

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

## reselect 5

### Breaking changes

- An all-optional selector result is no longer widened to any. (5.3.0) — [release notes](https://github.com/reduxjs/reselect/releases/tag/v5.3.0)
- The supported TypeScript version range is now 5.6 and up, matching DefinitelyTyped. (5.3.0) — [release notes](https://github.com/reduxjs/reselect/releases/tag/v5.3.0)
- The experimental export was removed; switch to weakMapMemoize or lruMemoize. (5.3.0) — [release notes](https://github.com/reduxjs/reselect/releases/tag/v5.3.0)

### New APIs and options

- Adds a globally configurable development-mode check that warns when a memoized function accumulates over 1000 values for the same args. (5.3.0) — [release notes](https://github.com/reduxjs/reselect/releases/tag/v5.3.0)
- Accepts maxSize to bound cache growth using generational swaps; use lruMemoize for LRU-style eviction. (5.3.0) — [release notes](https://github.com/reduxjs/reselect/releases/tag/v5.3.0)

### Performance

- Simplifies cache lookup to eliminate unnecessary allocations, modestly improving performance. (5.3.0) — [release notes](https://github.com/reduxjs/reselect/releases/tag/v5.3.0)
- Returns early on a cache hit instead of continuing through bookkeeping, modestly improving performance. (5.3.0) — [release notes](https://github.com/reduxjs/reselect/releases/tag/v5.3.0)
- Internals were restructured to improve tree-shaking of build artifacts. (5.2.0) — [release notes](https://github.com/reduxjs/reselect/releases/tag/v5.2.0)

### Fixes and other changes

- Fixed a rare case that could cause weakMapMemoize to leak a WeakRef. (5.2.0) — [release notes](https://github.com/reduxjs/reselect/releases/tag/v5.2.0)
