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
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 thewithTypes
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