Skip to content
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

Update dependency redux-thunk to v3 #45

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented May 22, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
redux-thunk ^2.3.0 -> ^3.0.0 age adoption passing confidence

Release Notes

reduxjs/redux-thunk (redux-thunk)

v3.1.0

Compare Source

This major release:

  • Updates the packaging for better ESM/CJS compatibility
  • Changes the package to use named exports instead of a default export

This release has breaking changes. (Note: this actually points to v3.1.0, which includes a hotfix that was meant for 3.0.0.)

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.

[!NOTE]
The Redux core, Reselect, and Redux Thunk packages are included as part of Redux Toolkit, and RTK users do not need to manually upgrade them - you'll get them as part of the upgrade to RTK 2.0. (If you're not using Redux Toolkit yet, please start migrating your existing legacy Redux code to use Redux Toolkit today!)

### RTK
npm install @​reduxjs/toolkit
yarn add @​reduxjs/toolkit

### Standalone
npm install redux-thunk
yarn add redux-thunk

Changelog

Named Exports Instead of Default Exports

The redux-thunk package previously used a single default export that was the thunk middleware, with an attached field named withExtraArgument that allowed customization.

The default export has been removed. There are now two named exports: thunk (the basic middleware) and withExtraArgument.

If you are using Redux Toolkit, this should have no effect, as RTK already handles this inside of configureStore.

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-thunk.mjs. Most build tools should pick this up. There's also a CJS artifact, and a second copy of the ESM file named redux-thunk.legacy-esm.js to support Webpack 4 (which does not recognize the exports field in package.json).

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.

The repo has been updated to use Yarn 3 for dependencies and Vitest for running tests.

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.

For now, we're dropping those build artifacts from the published package, on the grounds that the use cases seem pretty rare today.

Since the code is so simple, the ESM artifact can be used directly in the browser via Unpkg.

If you have strong use cases for us continuing to include UMD build artifacts, please let us know!

extend-redux Typedefs Removed

Redux Thunk 2.x included a redux-thunk/extend-redux TS-only entry point, which extended the types of dispatch and bindActionCreators to globally give them knowledge of the thunk types. We feel that global overrides from a library are an anti-pattern, and we've removed this entry point. (Note: this ended up being released in 3.1.0, as it was missed in the original 3.0.0 release.)

Please follow our TS setup guidelines to infer the correct type of dispatch for your store.

What's Changed

Full Changelog: reduxjs/redux-thunk@v2.4.2...v3.1.0

v3.0.1

Compare Source

v3.0.0

Compare Source

v2.4.2

Compare Source

This release removes an unused TS type that caused errors when users were type-checking libraries in node_modules.

What's Changed

Full Changelog: reduxjs/redux-thunk@v2.4.1...v2.4.2

v2.4.1

Compare Source

This release adds an explicit plain action overload to the ThunkDispatch TS type to better handle inference of the return value in some cases.

What's Changed

Full Changelog: reduxjs/redux-thunk@v2.4.0...v2.4.1

v2.4.0

Compare Source

This very overdue release makes several major improvements to the TypeScript types, and converts the actual source to TypeScript. Sorry for the delay!

Changelog

TypeScript Improvements

This release fixes several outstanding issues that had been reported with the types. An extra overload has been added to let TS correctly understand some generically-typed values being passed to dispatch, and the overloads have been reworked for additional compatibility.

There's also a new ThunkActionDispatch type that can be used to represent how bindActionCreators turns bound thunks into (arg) => thunkReturnValue.

Additionally, all of the generic args have been giving meaningful names instead of one-letter abbreviations (S -> State, E -> ExtraArgument, etc), and we've added descriptive comments in the type definitions for clarity.

Optional Global Dispatch Type Extension

Most Redux apps have the thunk middleware enabled, but the default Dispatch and bindActionCreator types only know about the standard behavior of a basic Redux store without any middleware. The thunk middleware types add to that type behavior, so that Dispatch knows dispatching a thunk can actually return a value such as a Promise.

We generally recommend inferring the type of dispatch and using that to create reusable types, including creating pre-typed hooks. However, some users may prefer to globally augment the Dispatch type to always use the additional thunk behavior.

You can now import 'redux-thunk/extend-redux' to globally augment the Dispatch type as an opt-in change in behavior.

Codebase Converted to TypeScript

We've gone ahead and converted the actual source to TS. Since the source was only 15-ish lines to begin with, most of the "conversion" time was just trying to convince TS that assigning thunk.extraArgument = createThunkMiddleware was a legal operation :)

We also updated the build tooling:

  • Babel updates
  • Rollup for the UMDs instead of Webpack
  • Github Actions for CI instead of Travis

Finally, the README has been updated with newer instructions and usage information.

What's Changed

New Contributors

Full Changelog: reduxjs/redux-thunk@v2.3.0...v2.4.0


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 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor Author

renovate bot commented May 22, 2024

⚠️ Artifact update problem

Renovate 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:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: package-lock.json
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: mern-react-times@0.1.0
npm ERR! Found: redux@4.2.1
npm ERR! node_modules/redux
npm ERR!   redux@"^4.0.5" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer redux@"^5.0.0" from redux-thunk@3.1.0
npm ERR! node_modules/redux-thunk
npm ERR!   redux-thunk@"^3.0.0" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR! 
npm ERR! See /tmp/renovate/cache/others/npm/eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     /tmp/renovate/cache/others/npm/_logs/2024-05-22T23_49_30_728Z-debug-0.log

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants