@reduxjs/toolkit
2.13.0 · 29 Sep 2026MIT45.8M / weekRepositoryHomepagenpmAtom feed
Where each line stands
Plan an upgrade- 2.x2.13.0No known advisoryLatest line
- 1.x1.9.7No known advisoryTo 2.13.0
Latest releases
All 72 releases2.13.0
29 Sep 2026Additional publishing hardening
codegen: Migrate to oazapfts v7
combineSlices: Scope stateProxyMap per instance to prevent cross-instance proxy collisions
This feature release updates our build tooling to TSDown and PNPM, adds official TypeScript 7 support, and includes a long list of bugfixes across RTK Query,
createAsyncThunk,createEntityAdapter, andcombineSlices.Changelog
Build Tooling Updates
We've fully modernizing modernized our build tooling across all of the Redux repos. That included switching from Yarn to PNPM, ESLint to Oxlint, Prettier to Oxfmt, and TSUp to TSDown.
The part that matters for users is that we now build the package with TSDown instead of
tsup. The package layout,exportsdefinitions, and exported APIs are all unchanged from 2.12. We've checked the new build withattw, and verified that CJS and ESM entry points load in both dev and prod builds, and that thelegacy-esmartifacts still target ES2017. The contents of the bundles do look a bit different (smaller CJS artifacts, slightly different helper output in thelegacy-esmfiles). If you see any behavior differences that look build-related, please file an issue!This is also our first release published via the updated PNPM-based workflow, still using NPM Trusted Publishing. We've also added
pkg.pr.newpreviews for every commit, so you can try out a PR build before it's released.Docs Updates
We've shipped a new combined Redux libraries docs site! The core docs site at redux.js.org now contains the docs for all of our libraries: Redux core and usage guides, Redux Toolkit, React Redux, and Reselect. The prior standalone docs sites for RTK, R-R, and Reselect now redirect to their respective sections of the combined docs. We've also done a major cleanup pass on the docs, deduplicating pages that had similarities (like the Next.js or RTK2 migration pages that lived in both the core and RTK docs), and updating outdated content (modernizing example code snippets, deleting dead links, and making RTK and hooks the default patterns shown). The RTK content now lives at redux.js.org/toolkit/ .
TypeScript 7 Support
TS 7.0 (the native Go port) is now out! We fixed the remaining type errors in RTK when checked by TS 7.0 and 7.1, and TS 7.0 is now part of our CI test matrix.
Per our TS support policy of matching DefinitelyTyped's support window, we've also updated our support matrix to TS 5.6+. As always, RTK may still work with earlier versions, but we no longer test against them.
RTK Query Fixes
useQueryState(and thususeQuery) was passing a new inline selector touseSelectoron every render, and also reading the store directly during render. The selector is now memoized, and the direct store read is gone. This also fixes a bug whereisSuccesscould flip fromfalsetotrueon an unrelated re-render while a query was refetching after an error.isSuccessnow correctly staysfalsein that case.datanow reflects cache updates made viaupdateQueryDatawhile a refetch is in flight, instead of showing the previous result.Polling now reads the current cache state when each poll fires, rather than the state at the time the poll was scheduled. This means
skipPollingIfUnfocusedrespects focus loss that happens after scheduling, and polls stop if their cache entry was removed.We fixed a race where a duplicate query request rejected by the thunk condition could cause queued tag invalidations to run too early and be lost, leaving stale data in the cache.
Tags with falsy ids like
0now invalidate and clean up correctly.Lazy query hooks now re-subscribe correctly when effects restart while the hook state is preserved, such as with Fast Refresh or
<Activity>.Infinite queries no longer trigger
onQueryStartedwhen fetching past the end of the list, and the infinite query hook result type now includes the page error flags.fetchBaseQueryonly treats a URL as absolute if it starts with a scheme.We also fixed an error when rehydrating state for an endpoint name that has no definition.
Other Fixes
createAsyncThunkno longer swallows aborts that happen before thependingaction is dispatched, and now correctly setsrejectedWithValuewhenrejectWithValueis called with a falsy payload.createEntityAdapter'ssetAllnow keeps the last item when given duplicate IDs, matchingsetMany. The sorted adapter'supdateManynow merges multiple updates for the same ID before applying them.combineSlicesnow keeps its internal state proxy cache per instance, so multiple combined reducers no longer interfere with each other.The immutability check middleware now handles circular references in state.
The dynamic middleware now caches its composed middleware chains when the list of middleware hasn't changed.
What's Changed
Additional publishing hardening
codegen: Migrate to oazapfts v7
combineSlices: Scope stateProxyMap per instance to prevent cross-instance proxy collisions
entityAdapter: pre-merge same-ID updates in sorted adapter's updateMany
entityAdapter:setAllwith duplicate IDs keeps last occurrence (consistent withsetMany)query: Reflect cache updates in hook data
Don't swallow
createAsyncThunkaborts that happen before pendingSimplify
useRef<T | undefined>(undefined)usages in RTK Query hooksquery: Prevent
onQueryStartedfrom triggering at end-of-listtypes: Fix tsgo (TS 7.0) type errors and re-enable the native-preview CI job
Modernize CI examples
rtk-query: Only treat a url as absolute when it starts with a scheme
Modern Tooling, Part 1: Oxlint
Modern Tooling, Part 2: Oxfmt
Modern Tooling, Part 3: TSDown and TS6
Modern Tooling, Part 4: Vitest type assertions
Modern Tooling, Part 5: PNPM
Modern Tooling, Part 6: TS7
Modern Tooling, Part 7: vendor
remark-typescript-toolsand update to TS7Modern Tooling, Part 8: Vitest 5
Remove redundant RTK Query example projects
Type the reducer builder implementation explicitly for TS 7.1
toolkit: Flag
rejectedWithValuefor falsyrejectWithValuepayloadsCache unchanged dynamic middleware chains
Preserve delayed invalidations after duplicate query rejection
Read current query state when scheduled polls fire
toolkit: Prevent undefined endpoint reference
toolkit: Tag with a falsy id invalidation and cleanup
rtk-query: Add infinite query page error flags to hook result type
Reinstate lazy queries after preserved effects restart
toolkit: Handle circular references in
immutableStateInvariantMiddlewareFix TS7 errors and update TS matrix
Fix unstable selector reference inside of
useQueryStateandisSuccessduring refetch-after-error
2.12.0
15 May 2026- breaking
toolkit: Switch to native
NoInferutility type Export hook options types for RTK Query hooks
Add TanStack Intent skills for Redux Toolkit
This feature release adds RTK usage skills files (via TanStack Intent) exports the RTK Query hook options types for reusability, fixes issues with infinite query status flags and batching handling, and makes some small TS improvements.
Changelog
Skills Files
We've generated agent skill files that are now included in the RTK package itself in a
skillsfolder. They cover using and migrating to modern RTK, client and server state management, and handling side effects. You can point your agent at these skills yourself, or use TanStack Intent to pick them up.TypeScript Improvements
The types for our RTK Query hook options are now exported, which lets you stop using
Parametersto extract those types for use in your own code.The types for listener middleware matchers were tweaked to allow
interface-based type guards, not justtype-based definitions.The internal
IgnorePathstype was renamed toIgnoredPathsfor consistency.We now use the built-in
NoInferutil that comes with TS 5.4+.Fixes
We fixed handling of the
isSuccessstatus flag when switching infinite query cache entries. This should prevent accidental UI flashes that were occurring due to this flag accidentally flipping.We've added a 100ms timeout fallback to the
autoBatchenhancer'srequestAnimationFrametimer. We had several reports thatrAFdidn't work correctly when used in background tabs / opened windows, and that RTK never updated the UI. This should ensure that the updates flush correctly.What's Changed
Export hook options types for RTK Query hooks
Add TanStack Intent skills for Redux Toolkit
Keep isSuccess: true when switching infinite query cache entries
Allow interface-based type guards as listener matcher
Add setTimeout fallback to raf autoBatch strategy for background tabs
- breaking
toolkit: Switch to native
NoInferutility type
2.11.2
14 Dec 2025Use a normal Error when DOMException isn't available
Include page functions in
TypedUseInfiniteQueryHookResult
This bugfix release updates the
AbortSignalhandling to fall back ifDOMExceptionisn't available (such as RN environments), and updates theTypedUseInfiniteQueryHookResulttype to correctly includefetchNextPage/fetchPreviousPagefields.Changelog
Bugfixes
The
AbortSignalchanges in 2.11.1 usedDOMExceptionin a couple places to match the expected behavior ofAbortSignal, but turns out that's not available in environments like React Native. We've updated the logic to fall back to a plainErrorifDOMExceptionisn't available.The
TypedUseInfiniteQueryHookResulttype wasn't correctly including thefetchNextPage/fetchPreviousPagefields, and now it does.What's Changed
Use a normal Error when DOMException isn't available
Include page functions in
TypedUseInfiniteQueryHookResult
Dependency tracking · free for 3 projects
Know when your own dependencies move
@reduxjs/toolkit published 5 releases in the last 12 months. inlinr folds the routine ones into a line and keeps the few that need you.
Advisories reach you
An email when a critical or high advisory affects a project, before the next install.
Upgrades checked first
Peer ranges, Node, ESM-only and types changes read before you bump.
Only what matters
Majors and breaking notes stay; patches and sibling bumps fold into one line.
Reading releases, release notes and advisories…
Registry facts last checked 3 Nov 2026. Releases and advisories last read 3 Nov 2026.