-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(deps): update dependency redux to v5 - autoclosed #739
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
⚠ Artifact update problemRenovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
The artifact failure details are included below: File name: package-lock.json
|
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
5 times, most recently
from
March 8, 2024 15:24
43738e9
to
ff73558
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
3 times, most recently
from
March 11, 2024 09:20
b7bbe03
to
a7546da
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
4 times, most recently
from
March 25, 2024 00:05
eca1160
to
4e5a953
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
4 times, most recently
from
April 1, 2024 07:06
9239144
to
9e54a2f
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
3 times, most recently
from
April 8, 2024 11:35
d3418a6
to
cba154f
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
3 times, most recently
from
April 22, 2024 00:05
bccdf5d
to
f528e26
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
3 times, most recently
from
April 29, 2024 00:05
00e065e
to
e27e956
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
4 times, most recently
from
May 6, 2024 00:05
4f4da8c
to
1354ec9
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
from
June 24, 2024 10:37
cb97123
to
6438f42
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
3 times, most recently
from
July 8, 2024 09:35
6a822c3
to
36957ca
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
from
July 15, 2024 06:03
36957ca
to
ef2bf62
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
2 times, most recently
from
July 23, 2024 15:47
dfbf2dd
to
bb06a07
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
3 times, most recently
from
August 5, 2024 10:35
81e964d
to
a525792
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
from
August 12, 2024 07:37
a525792
to
2abd9fa
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
2 times, most recently
from
August 26, 2024 07:18
a662ae5
to
bfd0938
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
from
September 2, 2024 08:25
bfd0938
to
46e4cda
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
from
September 9, 2024 08:28
46e4cda
to
c5c3da6
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
2 times, most recently
from
September 23, 2024 09:59
513f579
to
10ff2ae
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
2 times, most recently
from
October 7, 2024 06:22
e0fe259
to
bc5fcb2
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
2 times, most recently
from
October 21, 2024 09:03
a40b6b0
to
aba78ee
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
from
October 22, 2024 23:21
aba78ee
to
0cce94f
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
2 times, most recently
from
November 18, 2024 09:54
52f550d
to
c2c365e
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
from
November 25, 2024 10:05
c2c365e
to
a0f7d4e
Compare
renovate
bot
force-pushed
the
renovate/redux-5.x
branch
from
December 2, 2024 06:51
a0f7d4e
to
062dced
Compare
renovate
bot
changed the title
fix(deps): update dependency redux to v5
fix(deps): update dependency redux to v5 - autoclosed
Dec 8, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
None yet
0 participants
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
4.2.1
->5.0.1
Release Notes
reduxjs/redux (redux)
v5.0.1
Compare Source
This patch release adjusts the
isPlainObject
util to allow objects created viaObject.create(null)
, and fixes a type issue which accidentally made the store state type non-nullable.What's Changed
Store['getState']
by @exuanbo in https://github.com/reduxjs/redux/pull/4638Full Changelog: reduxjs/redux@v5.0.0...v5.0.1
v5.0.0
Compare Source
This major release:
action.type
must be a stringcreateStore
as deprecatedAnyAction
type in favor of anUnknownAction
type that is used everywherePreloadedState
type in favor of a new generic argument for theReducer
type.This release has breaking changes.
This release is part of a wave of major versions of all the Redux packages: Redux Toolkit 2.0, Redux core 5.0, React-Redux 9.0, Reselect 5.0, and Redux Thunk 3.0.
For full details on all of the breaking changes and other significant changes to all of those packages, see the "Migrating to RTK 2.0 and Redux 5.0" migration guide in the Redux docs.
Changelog
ESM/CJS Package Compatibility
The biggest theme of the Redux v5 and RTK 2.0 releases is trying to get "true" ESM package publishing compatibility in place, while still supporting CJS in the published package.
The primary build artifact is now an ESM file,
dist/redux.mjs
. Most build tools should pick this up. There's also a CJS artifact, and a second copy of the ESM file namedredux.legacy-esm.js
to support Webpack 4 (which does not recognize theexports
field inpackage.json
). Additionally, all of the build artifacts now live under./dist/
in the published package.Modernized Build Output
We now publish modern JS syntax targeting ES2020, including optional chaining, object spread, and other modern syntax. If you need to
Build Tooling
We're now building the package using https://github.com/egoist/tsup. We also now include sourcemaps for the ESM and CJS artifacts.
Dropping UMD Builds
Redux has always shipped with UMD build artifacts. These are primarily meant for direct import as script tags, such as in a CodePen or a no-bundler build environment.
We've dropped those build artifacts from the published package, on the grounds that the use cases seem pretty rare today.
There's now a
redux.browser.mjs
file in the package that can be loaded from a CDN like Unpkg.If you have strong use cases for us continuing to include UMD build artifacts, please let us know!
createStore
Marked DeprecatedIn Redux 4.2.0, we marked the original
createStore
method as@deprecated
. Strictly speaking, this is not a breaking change, nor is it new in 5.0, but we're documenting it here for completeness.This deprecation is solely a visual indicator that is meant to encourage users to migrate their apps from legacy Redux patterns to use the modern Redux Toolkit APIs.
The deprecation results in a visual strikethrough when imported and used, like
, but with no runtime errors or warnings.createStore
createStore
will continue to work indefinitely, and will not ever be removed. But, today we want all Redux users to be using Redux Toolkit for all of their Redux logic.To fix this, there are three options:
configureStore
legacy_createStore
API that is now exported, which is the exact same function but with no@deprecated
tag. The simplest option is to do an aliased import rename, likeimport { legacy_createStore as createStore } from 'redux'
Action types must be strings
We've always specifically told our users that actions and state must be serializable, and that
action.type
should be a string. This is both to ensure that actions are serializable, and to help provide a readable action history in the Redux DevTools.store.dispatch(action)
now specifically enforces thataction.type
must be a string and will throw an error if not, in the same way it throws an error if the action is not a plain object.In practice, this was already true 99.99% of the time and shouldn't have any effect on users (especially those using Redux Toolkit and
createSlice
), but there may be some legacy Redux codebases that opted to use Symbols as action types.TypeScript Changes
We've dropped support for TS 4.6 and earlier, and our support matrix is now TS 4.7+.
Typescript rewrite
In 2019, we began a community-powered conversion of the Redux codebase to TypeScript. The original effort was discussed in #3500: Port to TypeScript, and the work was integrated in PR #3536: Convert to TypeScript.
However, the TS-converted code sat around in the repo for several years, unused and unpublished, due to concerns about possible compatibility issues with the existing ecosystem (as well as general inertia on our part).
Redux core v5 is now built from that TS-converted source code. In theory, this should be almost identical in both runtime behavior and types to the 4.x build, but it's very likely that some of the changes may cause types issues.
Please report any unexpected compatibility issues!!
AnyAction
deprecated in favour ofUnknownAction
The Redux TS types have always exported an
AnyAction
type, which is defined to have{type: string}
and treat any other field asany
. This makes it easy to write uses likeconsole.log(action.whatever)
, but unfortunately does not provide any meaningful type safety.We now export an
UnknownAction
type, which treats all fields other thanaction.type
asunknown
. This encourages users to write type guards that check the action object and assert its specific TS type. Inside of those checks, you can access a field with better type safety.UnknownAction
is now the default any place in the Redux source that expects an action object.AnyAction
still exists for compatibility, but has been marked as deprecated.Note that Redux Toolkit's action creators have a
.match()
method that acts as a useful type guard:You can also use the new
isAction
util to check if an unknown value is some kind of action object.Middleware
type changed - Middlewareaction
andnext
are typed asunknown
Previously, the
next
parameter is typed as theD
type parameter passed, andaction
is typed as theAction
extracted from the dispatch type. Neither of these are a safe assumption:next
would be typed to have all of the dispatch extensions, including the ones earlier in the chain that would no longer apply.next
as the default Dispatch implemented by the base redux store, however this would causenext(action)
to error (as we cannot promiseaction
is actually anAction
) - and it wouldn't account for any following middlewares that return anything other than the action they're given when they see a specific action.action
is not necessarily a known action, it can be literally anything - for example a thunk would be a function with no.type
property (soAnyAction
would be inaccurate)We've changed
next
to be(action: unknown) => unknown
(which is accurate, we have no idea whatnext
expects or will return), and changed theaction
parameter to beunknown
(which as above, is accurate).In order to safely interact with values or access fields inside of the
action
argument, you must first do a type guard check to narrow the type, such asisAction(action)
orsomeActionCreator.match(action)
.This new type is incompatible with the v4
Middleware
type, so if a package's middleware is saying it's incompatible, check which version of Redux it's getting its types from!PreloadedState
type removed in favour ofReducer
genericWe've made tweaks to the TS types to improve type safety and behavior.
First, the
Reducer
type now has aPreloadedState
possible generic:Per the explanation in #4491:
Why the need for this change? When the store is first created by
createStore
/configureStore
, the initial state is set to whatever is passed as thepreloadedState
argument (orundefined
if nothing is passed). That means that the first time that the reducer is called, it is called with thepreloadedState
. After the first call, the reducer is always passed the current state (which isS
).For most normal reducers,
S | undefined
accurately describes what can be passed in for thepreloadedState
. However thecombineReducers
function allows for a preloaded state ofPartial<S> | undefined
.The solution is to have a separate generic that represents what the reducer accepts for its preloaded state. That way
createStore
can then use that generic for itspreloadedState
argument.Previously, this was handled by a
$CombinedState
type, but that complicated things and led to some user-reported issues. This removes the need for$CombinedState
altogether.This change does include some breaking changes, but overall should not have a huge impact on users upgrading in user-land:
Reducer
,ReducersMapObject
, andcreateStore
/configureStore
types/function take an additionalPreloadedState
generic which defaults toS
.combineReducers
are removed in favor of a single function definition that takes theReducersMapObject
as its generic parameter. Removing the overloads was necessary with these changes, since sometimes it was choosing the wrong overload.Other Changes
Internal Listener Implementation
The Redux store has always used an array to track listener callbacks, and used
listeners.findIndex
to remove listeners on unsubscribe. As we found in React-Redux, that can have perf issues when many listeners are unsubscribing at once.In React-Redux, we fixed that with a more sophisticated linked list approach. Here, we've updated the
listeners
to be stored in aMap
instead, which has better delete performance than an array.In practice this shouldn't have any real effect, because React-Redux sets up a subscription in
<Provider>
, and all nested components subscribe to that. But, nice to fix it here as well.isAction
PredicateWe recently added an
isAction
predicate to RTK, then realized it's better suited for the Redux core. This can be used anywhere you have a value that could be a Redux action object, and you need to check if it is actually an action. This is specifically useful for use with the updated Redux middleware TS types, where the default value is nowunknown
and you need to use a type guard to tell TS that the current value is actually an action:We've also exported the
isPlainObject
util that's been in the Redux codebase for years as well.What's Changed
Entirely too many PRs to list here, as it's been a few years since 4.2 was released :) See the diff below.
Full Changelog: reduxjs/redux@v4.2.1...v5.0.0
Configuration
📅 Schedule: Branch creation - "* 0-3 * * 1" in timezone America/New_York, Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.