mcs-lite
mcs-lite copied to clipboard
chore(deps): update dependency redux to v4
This PR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
redux (source) | 3.7.2 -> 4.2.0 |
Release Notes
reduxjs/redux
v4.2.0
This release marks the original createStore
API as @deprecated
to encourage users to migrate to Redux Toolkit, and adds a new legacy_createStore
API as an alias without the deprecation warning.
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 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!
We are just marking createStore
as "deprecated":
"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 https://github.com/reduxjs/redux/issues/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 entireredux
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.
- We already had a package rename from
- 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 addlegacy_createStore
alias by @​markerikson in https://github.com/reduxjs/redux/pull/4336
Full Changelog: https://github.com/reduxjs/redux/compare/v4.1.2...v4.2.0
v4.1.2
This release fixes a small specific TS types issue where state types that had a nested unknown
field inside would cause compilation failures when used as the preloadedState
argument.
What's Changed
- Fix preloaded state type by @​phryneas in https://github.com/reduxjs/redux/pull/4078
Full Changelog: https://github.com/reduxjs/redux/compare/v4.1.1...v4.1.2
v4.1.1
Just a small fix for Safari users in development mode.
Changes
- Move miniKindOf out of if scope to fix ES5 compatibility issue (#​4090 by @​embeddedt)
v4.1.0
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: 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
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:
- 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.
Changes
- 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)
- feat: mangle error codes to error indexes (#​3920 - @​andrewmcgivery)
- fix: Declare "EmptyObject" interface to wrap $CombinedState (#​4031 - @​JacobLey)
- Only apply mapped types to un-branded types (#​3805 - @​invliD)
v4.0.5
This release includes a memory leak fix, and a fix for removing reducers with replaceReducer and combineReducers.
There are also some TypeScript changes, which require version 3.5 or higher. This also removes our DeepPartial
type, which wasn't intended to be a public API. If you need this type, you can find an equivalent of likely higher quality in the utility-types
package.
Speaking of TypeScript, we are done with converting the code to TypeScript on master
and are looking to get some TS improvements in before launching 5.0. If you're interested in helping, feel free to submit a PR with anything you'd like to contribute.
Changes
- Clear current listeners on store unsubscribe (#​3475 by @​dmitrysteblyuk)
- Fix for combineReducers when replaceReducers removes a reducer (#​3490 by @​anubhavgupta)
- TypeScript: Add strict type inference overload for combineReducers (#​3484 by @​ChrisAckerman)
- TypeScript: Preloaded state is now selectively partial (instead of deeply partial) (#​3485 by @​ChrisAckerman)
v4.0.4
This is a republish of 4.0.3 with an updated version of Babel to fix #​3468
Changes
v4.0.3
This is a quick revert of a change to our typings that broke compatibility. Apologies for the problems.
Also, if you are experiencing type errors related to [Symbol.observable]
, please ensure you have the same version of redux installed for all your dependencies with npm ls redux
.
Changes
- Reverts the change to
combineReducers
' type parameters (#​3467 by @​timdorr)
v4.0.2
This is a very minor release with some nice improvements to our TypeScript type definitions. Enjoy!
Changes
- Iterate in combineReducers using
for in
(#​3371 by @​pvorona) - Fix
DeepPartial
type (#​3369 by @​OliverJAsh) - Add types for Observable interface (#​3067 by @​pinyin)
- Make reducer optional in JSDocs (#​3408 by @​pingfengafei)
- Infer action types from
combineReducers
(#​3411 by @​appden)
v4.0.1
A very minor release. We've upgraded to Babel 7 internally and now provide a .mjs
file which you can import cleanly into browsers that support ES modules natively. Enjoy!
Changes
- Update mixed NODE_ENV message for Webpack 4 (
4a215fb
by @​timdorr) - Add unpkg field to package.json (#​3003 by @​andrewbridge)
- Use same return type for both StoreCreator signatures (#​2985 by @​reklawnos)
- Mark StoreCreator's preloadedState argument as optional (#​3080 by @​srittau)
- Add ES browser build (#​3143 by @​TimvdLippe)
- Throw an error if createStore is passed several enhancers (#​3151 by @​selbekk)
- Upgrade to Babel 7 (
b9ee1cf
by @​timdorr)
v4.0.0
Redux 4 is here! 🎉
If you're a React user, this is going to be a lot like going from 15 to 16. Not a lot of user-facing changes, but some interesting improvements under the hood.
The major changes (#​1342) are around our TypeScript definitions, bundled CommonJS and ES builds, throwing if you subscribe or getState from a reducer, and a bunch of other smaller things. The full changes are listed below.
Enjoy!
Changes
- Tons of docs updates. Thanks @​markerikson and the Redux community for all your PRs!
- Make middleware API dispatch pass through all call arguments (#​2560 by @​Asvarox)
- Refactor applyMiddleware to reduce confusion around createStore args (#​2201 by @​jimbolla)
- Make bindActionCreators transparently pass
this
(#​2641 by @​Parakleta) - Remove @​private flag on AnyAction type definition (#​2510 by @​alexmngn)
- Fixed quote types inconsistency in a warning message (#​2297 by @​Andarist)
- Move ActionTypes to a private export (
b62248b
by @​timdorr) - Throw if getState, subscribe, or unsubscribe called while dispatching (including inside a reducer) (#​1569 by @​mjw56)
- Warn when dispatching during Middleware setup (#​1485 by @​timdorr)
- Mapped type for combineReducers in index.d.ts (#​2182 by @​mkusher)
- Remove legacy jsnext entry (#​2284 by @​TrySound)
- Revamp TypeScript typing with more type safety (#​2563 by @​pelotom)
- Fix TS definitions test for new Dispatch typing (#​2674 by @​pelotom)
- Add DeepPartial type for preloaded state (#​2679 by @​aikoven)
- Bundle cjs and es formats (#​2358 by @​TrySound)
- REPLACE action for replaceReducers (#​2673 by @​timdorr)
- Update build to use babel-preset-env (#​2696 by @​hmillison)
- Optimize dispatch plain object check (#​2599 by @​timdorr)
- Update TypeScript typings (#​2773 by @​aikoven)
- Added prettier formatting (#​2676 by @​adityavohra7)
- Add a sideEffects: false flag for Webpack 4 (#​2865 by @​timdorr)
- Fix missed case in "observe" type check (#​2919 by @​zerobias)
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
â™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- [ ] If you want to rebase/retry this PR, click this checkbox.
This PR has been generated by Mend Renovate. View repository job log here.
Deploy preview for mcslite ready!
Built with commit 700d6efa3a10c19f31c475803cd500013a308d39
https://deploy-preview-627--mcslite.netlify.app
Deploy preview for mcs-lite-introduction ready!
Built with commit 972eabed04feb453b334fe2f00a707c6cf60445d
https://deploy-preview-627--mcs-lite-introduction.netlify.com
Warnings | |
---|---|
:warning: |
Please add a label to your PR. |
:warning: |
Please assign someone to merge this PR, and optionally include people who should review. |
:warning: |
Changes were made to package.json, but not to licenses.csv - Perhaps you need to run |
Generated by :no_entry_sign: dangerJS
Deploy preview for mcs-lite-ui ready!
Built with commit 700d6efa3a10c19f31c475803cd500013a308d39
https://deploy-preview-627--mcs-lite-ui.netlify.app
Codecov Report
Patch coverage has no change and project coverage change: -83.78
:warning:
Comparison is base (
ae921c2
) 83.77% compared to head (700d6ef
) 0.00%.
:exclamation: Current head 700d6ef differs from pull request most recent head 4313c58. Consider uploading reports for the commit 4313c58 to get more accurate results
Additional details and impacted files
@@ Coverage Diff @@
## master #627 +/- ##
=========================================
- Coverage 83.77% 0 -83.78%
=========================================
Files 326 0 -326
Lines 2694 0 -2694
Branches 174 0 -174
=========================================
- Hits 2257 0 -2257
+ Misses 372 0 -372
+ Partials 65 0 -65
see 326 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.