redux
5.0.1 · 23 Dec 2023MIT62.6M / weekRepositoryHomepagenpmAtom feed
4.2.1 is the newest release of 4.x.
In short
1 new1 fixed5 changed3 internal
Release note
This release shrinks our bundle size via error message extraction, updates several error messages for clarity, and optimizes our list of runtime dependencies.
Overall, version 4.1 shrinks from 2.6K min+gz to 1.6K min+gz thanks to these changes.
Be sure to check out the Redux Toolkit 1.6 alpha containing our new "RTK Query" data fetching APIs! It also includes Redux 4.1 as a dependency.
Changelog
Error Message Extraction and Improvements
We now extract all of our error messages from production builds in order to save on bundle size, using a technique inspired from React's error code extraction. The error messages will still show as normal in development, but in production they will reference a specific numeric error code and provide a link to a Redux docs page that has the full error message.
An example of this is: redux.js.org/errors , which shows the "can't subscribe while reducers are executing" error.
The error code extraction saves about 800 bytes out of a production build.
We've also updated many of our error messages to provide additional details at runtime about what happened, especially runtime type checks such as "actions must be plain objects". They now provide a more specific type for the unexpected value, such as indicating promise or function:
expect(() => store.dispatch(() => {})).toThrow(
/the actual type was: 'function'/
)
expect(() => store.dispatch(new Date())).toThrow(
/the actual type was: 'date'/
)Dependency Updates
We've updated the list of runtime dependencies for Redux:
Typing Tweaks
We've merged fixes for a couple edge cases in the 4.x TS typings related to state types.
Remove symbol-observable and loose-envify deps (#4058 - @markerikson)
Port error extraction setup from master (#4057 - @markerikson)
Port build dependencies from master into 4.x (#4056 - @markerikson)
Rewrite Redux core error messages (#4055 - @markerikson)
Mangle error codes to error indexes (#3920 - @andrewmcgivery)
Declare "EmptyObject" interface to wrap $CombinedState (#4031 - @JacobLey)
Only apply mapped types to un-branded types (#3805 - @invliD)