github reduxjs/redux-toolkit v2.4.0

15 hours ago

This feature release includes multiple tweaks and fixes to RTK Query functionality, additional exported TS types, and drops support for TS versions earlier than 5.0.

Changelog

RTK Query Improvements

Lazy query hooks can now be reset.

retry.fail now accepts meta as a second argument.

Tag invalidation arrays now ignore nullish values.

We did some small internal refactoring around Maps and default values that shrank bundle size slightly.

Bugfixes

Passing skipToken to a query hook now bails out before running any other logic, which fixes cases where serializeQueryArgs previously threw an error because there were no args to process.

The autoBatchEnhancer now reads window.requestAnimationFrame later, which it to work properly with Jest fake timers.

We fixed cases where the hook result isSuccess flag would briefly flicker to false when switched to a different cache entry that was uninitialized, and would briefly flicker to true when refetching a query that previously errored.

The listener middleware previously had inconsistent logic checks for comparing against existing listener entries (effect + type, vs effect only). It now always checks both effect + type.

Additional TS Types

We now export Typed[Query|Mutation]OnQueryStarted helpers to let you define onQueryStarted callbacks outside of createApi if desired.

We also now export a CreateAsyncThunkFunction type that can be used to type userland wrappers around createAsyncThunk.

TS Support Matrix Updates

We've historically tried to maintain TS backwards compatibility as long as possible, and made occasional updates to our TS support matrix in minor versions over time. As of RTK 2.3.0, we officially supported back through TS 4.7.

As of this release, we're tweaking that support policy to match the policy used by DefinitelyTyped:

Definitely Typed only tests packages on versions of TypeScript that are less than 2 years old
image

Given that, we've dropped official support for TS versions earlier than 5.0. (RTK may work with those versions, but we no longer test against them and won't try to fix issues with those versions.)

We'll continue to update our TS support matrix over time based on that 2-year rolling window.

What's Changed

  • add example to reproduce defect of serializeQueryArgs with skipToken by @Themezv in #4708
  • Read window.rAF later to allow fake timers to work correctly by @ensconced in #4701
  • Add type helpers for OnQueryStarted callbacks by @aryaemami59 in #4713
  • Add a type for createAsyncThunk without the withTypes method by @EskiMojo14 in #4667
  • Add ability to reset lazy query hooks by @alexmotoc in #4689
  • Ignore nullish values in tag invalidations by @pierroberto in #4671
  • Allow passing meta to retry.fail, and passing baseQuery to ensure types match by @EskiMojo14 in #4723
  • Keep isSuccess: true when switching to an uninitialized cache entry by @markerikson in #4731
  • Keep isSuccess consistent when refetching after an error by @markerikson in #4732
  • Update to new version of upsert proposal, and fix listener equality checks by @EskiMojo14 in #4735

Full Changelog: v2.3.0...v2.4.0

Don't miss a new redux-toolkit release

NewReleases is sending notifications on new releases.