Skip to content

v1.8.5

Compare
Choose a tag to compare
@markerikson markerikson released this 19 Aug 21:13
· 2438 commits to master since this release

This bugfix releas fixes an issue with large keepUnusedDataFor values overflowing JS timers, exports the types for the Redux DevTools Extension option, and and improves behavior of URL string generation.

Changelog

keepUnusedDataFor Timer Fix

keepUnusedDataFor accepts a value in seconds. When there are no more active subscriptions for a piece of data, RTKQ will set a timer using setTimeout, and keepUnusedDataFor * 1000 as the timer value.

We've been advising users that if they want to keep data in the cache forever that they should use a very large value for keepUnusedDataFor, such as 10 years in seconds.

However, it turns out that JS engines use a 32-bit signed int for timers, and 32-bits in milliseconds is only 24.8 days. If a timer is given a value larger than that, it triggers immediately.

We've updated the internal logic to clamp the keepUnusedDataFor value to be between 0 and THIRTY_TWO_BIT_MAX_TIMER_SECONDS - 1.

Note that in RTK 1.9 (coming soon), RTKQ will also accept Infinity as a special keepUnusedDataFor value to indicate cached data should never be expired.

Other Changes

RTK inlines the TS types for the Redux DevTools Extension options to avoid an extra dependency, but the TS type for the options object wasn't exported publicly. We now export the DevToolsEnhancerOptions type.

The logic for generating a final URL has been updated to avoid adding an extra trailing /.

What's Changed

  • Prevent keepUnusedDataFor values from overflowing setTimeout counter by @markerikson in #2595
  • remove typeof undefined checks where not necessary 🐃🪒 by @phryneas in #1726
  • Update RDT options types, and export those + AnyListenerPredicate by @markerikson in #2596
  • Ensures there is no unexpected slash in url before query params by @ygrishajev in #2470

Full Changelog: v1.8.4...v1.8.5