This PR was automatically created by Snyk using the credentials of a real user.
Snyk has created this PR to upgrade redux from 4.0.5 to 4.2.1.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
- The recommended version is **7 versions** ahead of your current version.
- The recommended version was released **3 months ago**, on 2023-01-28.
Release notes Package name: redux
This bugfix release removes the isMinified internal check to fix a compat issue with Expo. That check has added in early 2016, soon after Redux 3.0 was released, at a time when it was still less common to use bundlers with proper production build settings. Today that check is irrelevant, so we've removed it.
</li>
<li>
<b>4.2.0</b> - <a href="https://snyk.io/redirect/github/reduxjs/redux/releases/tag/v4.2.0">2022-04-18</a></br><p>This release marks the original <code>createStore</code> API as <code>@ deprecated</code> to encourage users to migrate to Redux Toolkit, and adds a new <code>legacy_createStore</code> API as an alias without the deprecation warning.</p>
Goal
Redux Toolkit (the @ reduxjs/toolkit package) is the right way for Redux users to write Redux code today:
Unfortunately, many tutorials are still showing legacy "hand-written" Redux patterns, which result in a much worse experience for users. New learners going through a bootcamp or an outdated Udemy course just follow the examples they're being shown, don't know that RTK is the better and recommended approach, and don't even think to look at our docs.
Given that, the goal is to provide them with a visual indicator in their editor, like createStore . When users hover over the createStore import or function call, the doc tooltip recommends using configureStore from RTK instead, and points them to that docs page. We hope that new learners will see the strikethrough, read the tooltip, read the docs page, learn about RTK, and begin using it.
To be extremely clear:
WE ARE NOT GOING TO ACTUALLY REMOVE THE createStore API, AND ALL YOUR EXISTING CODE WILL STILL CONTINUE TO WORK AS-IS!
"the discouragement of use of some feature or practice, typically because it has been superseded or is no longer considered efficient or safe, without completely removing it or prohibiting its use"
For additional details, see the extensive discussion in #4325 .
Rationale
RTK provides a vastly improved Redux usage experience, with APIs that simplify standard usage patterns and eliminate common bugs like accidental mutations
We've had suggestions to merge all of RTK into the redux core package, or fully deprecate the entire redux package and rename it to @ reduxjs/core. Unfortunately, those bring up too many complexities:
We already had a package rename from redux-starter-kit to @ reduxjs/toolkit, and all of our docs and tutorials have pointed to it for the last three years. I don't want to put users through another whiplash package transition for no real benefit
Merging or rearranging our packages would effectively require merging all of the Redux repos into a single monorepo. That would require hundreds of hours of effort from us maintainers, including needing to somehow merge all of our docs sites together. We don't have the time to do that.
I don't want to add runtime warnings that would be really annoying
So, this is the minimum possible approach we can take to reach out to users who otherwise would never know that they are following outdated patterns, while avoiding breaking running user code or having to completely rewrite our package and repo structure.
Results
When a user imports createStore in their editor, they will see a visual strikethrough. Hovering over it will show a doc tooltip that encourages them to use configureStore from RTK, and points to an explanatory docs page:
Again, no broken code, and no runtime warnings.
If users do not want to see that strikethrough, they have three options:
Follow our suggestion to switch over to Redux Toolkit and configureStore
Do nothing. It's just a visual strikethrough, and it doesn't affect how your code behaves. Ignore it.
Switch to using the legacy_createStore API that is now exported, which is the exact same function but with no @ deprecation tag. The simplest option is to do an aliased import rename:
What's Changed
Mark createStore as deprecated, and add legacy_createStore alias by @ markerikson in #4336
</li>
<li>
<b>4.2.0-alpha.0</b> - <a href="https://snyk.io/redirect/github/reduxjs/redux/releases/tag/v4.2.0-alpha.0">2021-10-30</a></br><p>4.2.0-alpha.0</p>
</li>
<li>
<b>4.1.2</b> - <a href="https://snyk.io/redirect/github/reduxjs/redux/releases/tag/v4.1.2">2021-10-28</a></br><p>This release fixes a small specific TS types issue where state types that had a nested <code>unknown</code> field inside would cause compilation failures when used as the <code>preloadedState</code> argument.</p>
</li>
<li>
<b>4.1.1</b> - <a href="https://snyk.io/redirect/github/reduxjs/redux/releases/tag/v4.1.1">2021-08-03</a></br><p>Just a small fix for Safari users in development mode.</p>
Move miniKindOf out of if scope to fix ES5 compatibility issue (#4090 by @ embeddedt)
</li>
<li>
<b>4.1.0</b> - <a href="https://snyk.io/redirect/github/reduxjs/redux/releases/tag/v4.1.0">2021-04-24</a></br><p>This release shrinks our bundle size via error message extraction, updates several error messages for clarity, and optimizes our list of runtime dependencies.</p>
Overall, version 4.1 shrinks from 2.6K min+gz to 1.6K min+gz thanks to these changes.
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.
The error code extraction saves about 800 bytes out of a production build.
Thanks to @ andrewmcgivery for doing all the hard work on implementing the error extraction!
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:
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" expect(() => store.dispatch(() => {})).toThrow(
/the actual type was: 'function'/
)
We've updated the list of runtime dependencies for Redux:
We inlined the symbol-observable polyfill. This shrinks bundle size by a few bytes,
We've removed the legacy loose-envify dependency, which was only ever needed by Browserify users. If you still happen to be using Browserify, please review your build settings and see if you need to make any updates.
We now explicitly depend on @ babel/runtime to extract some additional helpers out of our bundle. It's likely that your app already is pulling in those helpers anyway, so that removes some potential duplication.
Typing Tweaks
We've merged fixes for a couple edge cases in the 4.x TS typings related to state types.
Only apply mapped types to un-branded types (#3805 - @ invliD)
</li>
<li>
<b>4.1.0-alpha.0</b> - <a href="https://snyk.io/redirect/github/reduxjs/redux/releases/tag/v4.1.0-alpha.0">2021-04-04</a></br><p>This pre-release for 4.1.0 shrinks our bundle size via tooling updates, and updates several error messages for clarity. This is all the changes we plan to have for 4.1, so if feedback looks good, we'll release 4.1.0 shortly.</p>
Changelog Summary
The 4.1.0 release will have a more complete changelog, but summarizing:
Shrinks our bundle sizes by extracting error messages from production builds and replacing them with error codes (similar to React). Thanks to @ andrewmcgivery for implementing this!
Inlines the symbol-observable polyfill
Drops the legacy loose-envify dependency
Externalizes the @ babel/runtime helpers
Fixed a TS typedef to work better with TS 4.3
We've also updated the error messages to clarify what's happening, provide more details when runtime type checks fail, and link to relevant documentation.
Changes
Merge pull request #4058 from reduxjs/feature/4x-remove-legacy-deps 9a1d065
This PR was automatically created by Snyk using the credentials of a real user.
Snyk has created this PR to upgrade redux from 4.0.5 to 4.2.1.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.- The recommended version is **7 versions** ahead of your current version. - The recommended version was released **3 months ago**, on 2023-01-28.
Release notes
Package name: redux
This bugfix release removes the
isMinified
internal check to fix a compat issue with Expo. That check has added in early 2016, soon after Redux 3.0 was released, at a time when it was still less common to use bundlers with proper production build settings. Today that check is irrelevant, so we've removed it.What's Changed
Full Changelog: v4.2.0...v4.2.1
Goal
Redux Toolkit (the
@ reduxjs/toolkit
package) is the right way for Redux users to write Redux code today:https://redux.js.org/introduction/why-rtk-is-redux-today
Unfortunately, many tutorials are still showing legacy "hand-written" Redux patterns, which result in a much worse experience for users. New learners going through a bootcamp or an outdated Udemy course just follow the examples they're being shown, don't know that RTK is the better and recommended approach, and don't even think to look at our docs.
Given that, the goal is to provide them with a visual indicator in their editor, like
createStore. When users hover over thecreateStore
import or function call, the doc tooltip recommends usingconfigureStore
from RTK instead, and points them to that docs page. We hope that new learners will see the strikethrough, read the tooltip, read the docs page, learn about RTK, and begin using it.To be extremely clear:
WE ARE NOT GOING TO ACTUALLY REMOVE THE
createStore
API, AND ALL YOUR EXISTING CODE WILL STILL CONTINUE TO WORK AS-IS!We are just marking
createStore
as "deprecated":For additional details, see the extensive discussion in #4325 .
Rationale
redux
core package, or fully deprecate the entireredux
package and rename it to@ reduxjs/core
. Unfortunately, those bring up too many complexities:redux-starter-kit
to@ reduxjs/toolkit
, and all of our docs and tutorials have pointed to it for the last three years. I don't want to put users through another whiplash package transition for no real benefitSo, this is the minimum possible approach we can take to reach out to users who otherwise would never know that they are following outdated patterns, while avoiding breaking running user code or having to completely rewrite our package and repo structure.
Results
When a user imports
createStore
in their editor, they will see a visual strikethrough. Hovering over it will show a doc tooltip that encourages them to useconfigureStore
from RTK, and points to an explanatory docs page:Again, no broken code, and no runtime warnings.
If users do not want to see that strikethrough, they have three options:
configureStore
legacy_createStore
API that is now exported, which is the exact same function but with no@ deprecation
tag. The simplest option is to do an aliased import rename:What's Changed
createStore
as deprecated, and addlegacy_createStore
alias by @ markerikson in #4336Full Changelog: v4.1.2...v4.2.0
What's Changed
Full Changelog: v4.1.1...v4.1.2
Changes
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: https://redux.js.org/errors?code=5 , which shows the "can't subscribe while reducers are executing" error.
The error code extraction saves about 800 bytes out of a production build.
Thanks to @ andrewmcgivery for doing all the hard work on implementing the error extraction!
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
orfunction
:<div class="highlight highlight-source-js notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" expect(() => store.dispatch(() => {})).toThrow( /the actual type was: 'function'/ )
Dependency Updates
We've updated the list of runtime dependencies for Redux:
symbol-observable
polyfill. This shrinks bundle size by a few bytes,loose-envify
dependency, which was only ever needed by Browserify users. If you still happen to be using Browserify, please review your build settings and see if you need to make any updates.@ babel/runtime
to extract some additional helpers out of our bundle. It's likely that your app already is pulling in those helpers anyway, so that removes some potential duplication.Typing Tweaks
We've merged fixes for a couple edge cases in the 4.x TS typings related to state types.
Changes
Changelog Summary
The 4.1.0 release will have a more complete changelog, but summarizing:
symbol-observable
polyfillloose-envify
dependency@ babel/runtime
helpersWe've also updated the error messages to clarify what's happening, provide more details when runtime type checks fail, and link to relevant documentation.
Changes
v4.0.5...v4.1.0-alpha.0
Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:![](https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJlNDFkOWYxMy0zMWEzLTRkZTItOWFiMy1jNTZlZDA0OThlNzYiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImU0MWQ5ZjEzLTMxYTMtNGRlMi05YWIzLWM1NmVkMDQ5OGU3NiJ9fQ==)
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs