chore(deps): update dependency @reduxjs/toolkit to v2.9.1#397
Conversation
|
|
View your CI Pipeline Execution ↗ for commit 7b750f7
☁️ Nx Cloud last updated this comment at |
Codecov Report✅ All modified and coverable lines are covered by tests. ❌ Your project status has failed because the head coverage (18.75%) is below the target coverage (40.00%). You can increase the head coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #397 +/- ##
=========================================
+ Coverage 0 18.75% +18.75%
=========================================
Files 0 138 +138
Lines 0 27368 +27368
Branches 0 951 +951
=========================================
+ Hits 0 5132 +5132
- Misses 0 22236 +22236 🚀 New features to boost your workflow:
|
|
Deployed 243c03d to https://ForgeRock.github.io/ping-javascript-sdk/pr-397/243c03dbf6503eae65b742a937735acf7a2a4887 branch gh-pages in ForgeRock/ping-javascript-sdk |
📦 Bundle Size Analysis📦 Bundle Size Analysis🚨 Significant Changes🔻 @forgerock/journey-client - 0.0 KB (-82.0 KB, -100.0%) 📊 Minor Changes📈 @forgerock/journey-client - 82.0 KB (+0.0 KB) ➖ No Changes➖ @forgerock/device-client - 9.2 KB 13 packages analyzed • Baseline from latest Legend🆕 New package ℹ️ How bundle sizes are calculated
🔄 Updated automatically on each push to this PR |
3adf9c8 to
db6c5b8
Compare
db6c5b8 to
4178501
Compare
4178501 to
c00f15b
Compare
c00f15b to
ce3103a
Compare
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the Comment |
31a31a7 to
c0f0948
Compare
c0f0948 to
3998ef2
Compare
3998ef2 to
b92894b
Compare
b92894b to
df78746
Compare
df78746 to
3e08718
Compare
3e08718 to
6d8a539
Compare
6d8a539 to
ad7f3bb
Compare
ad7f3bb to
fb01521
Compare
@forgerock/davinci-client
@forgerock/oidc-client
@forgerock/protect
@forgerock/sdk-types
@forgerock/sdk-utilities
@forgerock/iframe-manager
@forgerock/sdk-logger
@forgerock/sdk-oidc
@forgerock/sdk-request-middleware
@forgerock/storage
commit: |
fb01521 to
b06b110
Compare
There was a problem hiding this comment.
Nx Cloud has identified a possible root cause for your failed CI:
The PR changes involve upgrading @reduxjs/toolkit from version 2.8.2 to 2.9.1 across the workspace and adding immer to the catalog. The failing lint task for @forgerock/oidc-client reports that "@reduxjs/toolkit" is not used by the project according to the @nx/dependency-checks rule.
However, investigation reveals this is a false positive:
- The package is declared as a dependency in packages/oidc-client/package.json:37
- Grep search confirms @reduxjs/toolkit is actually imported in 5 source files within the oidc-client package
The failure classification is 'code_change' because the issue was introduced by the dependency version update in the PR. The @nx/dependency-checks rule may have issues detecting usage after the version bump, or the package might actually be available transitively.
Two potential fixes exist:
- Remove the direct dependency declaration since @reduxjs/toolkit appears to be available through workspace dependencies that already depend on it
- Update the eslint configuration for oidc-client to downgrade this check from 'error' to 'warn' (similar to what was done for sdk-request-middleware in this PR)
The first approach is preferred as it reduces dependency duplication, but the second approach would maintain the explicit dependency declaration if that's architecturally required.
A code change would likely not resolve this issue, so no action was taken.
🎓 To learn more about Self Healing CI, please visit nx.dev
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
This PR contains the following updates:
2.8.2->2.9.1Release Notes
reduxjs/redux-toolkit (@reduxjs/toolkit)
v2.9.1Compare Source
This bugfix release fixes how sorted entity adapters handle duplicate IDs, tweaks the TS types for RTKQ query state cache entries to improve how the
datafield is handled, and adds better cleanup for long-running listener middleware effects.What's Changed
dataon isSuccess withexactOptionalPropertyTypesby @CO0Ki3 in #5088listenerMiddleware.clearListenersby @chris-chambers in #5102Full Changelog: reduxjs/redux-toolkit@v2.9.0...v2.9.1
v2.9.0Compare Source
This feature release rewrites RTK Query's internal subscription and polling systems and the
useStableQueryArgshook for better perf, adds automaticAbortSignalhandling to requests still in progress when a cache entry is removed, fixes a bug with thetransformResponseoption for queries, adds a newbuilder.addAsyncThunkmethod, and fixes assorted other issues.Changelog
RTK Query Performance Improvements
We had reports that RTK Query could get very slow when there were thousands of subscriptions to the same cache entry. After investigation, we found that the internal polling logic was attempting to recalculate the minimum polling time after every new subscription was added. This was highly inefficient, as most subscriptions don't change polling settings, and it required repeated O(n) iteration over the growing list of subscriptions. We've rewritten that logic to debounce the update check and ensure a max of one polling value update per tick for the entire API instance.
Related, while working on the request abort changes, testing showed that use of plain
Records to hold subscription data was inefficient because we have to iterate keys to check size. We've rewritten the subscription handling internals to useMaps instead, as well as restructuring some additional checks around in-flight requests.These two improvements drastically improved runtime perf for the thousands-of-subscriptions-one-cache-entry repro, eliminating RTK methods as visible hotspots in the perf profiles. It likely also improves perf for general usage as well.
We've also changed the implementation of our internal
useStableQueryArgshook to avoid callingserializeQueryArgson its value, which can avoid potential perf issues when a query takes a very large object as its cache key.Abort Signal Handling on Cleanup
We've had numerous requests over time for various forms of "abort in-progress requests when the data is no longer needed / params change / component unmounts / some expensive request is taking too long". This is a complex topic with multiple potential use cases, and our standard answer has been that we don't want to abort those requests - after all, cache entries default to staying in memory for 1 minute after the last subscription is removed, so RTKQ's cache can still be updated when the request completes. That also means that it doesn't make sense to abort a request "on unmount".
However, it does then make sense to abort an in-progress request if the cache entry itself is removed. Given that, we've updated our cache handling to automatically call the existing
resPromise.abort()method in that case, triggering theAbortSignalattached to thebaseQuery. The handling at that point depends on your app -fetchBaseQueryshould handle that, a custombaseQueryorqueryFnwould need to listen to theAbortSignal.We do have an open issue asking for further discussions of potential abort / cancelation use cases and would appreciate further feedback.
New Options
The builder callback used in
createReducerandcreateSlice.extraReducersnow hasbuilder.addAsyncThunkavailable, which allows handling specific actions from a thunk in the same way that you could define a thunk insidecreateSlice.reducers:createApiand individual endpoint definitions now accept askipSchemaValidationoption with an array of schema types to skip, ortrueto skip validation entirely (in case you want to use a schema for its types, but the actual validation is expensive).Bug Fixes
The infinite query implementation accidentally changed the query internals to always run
transformResponseif provided, including if you were usingupsertQueryData(), which then broke. It's been fixed to only run on an actual query request.The internal changes to the structure of the
state.api.providedstructure broke our handling ofextractRehydrationInfo- we've updated that to handle the changed structure.The infinite query status fields like
hasNextPageare now a looser type ofbooleaninitially, rather than strictlyfalse.TS Types
We now export Immer's
WritableDrafttype to fix another non-portable types issue.We've added an
api.endpoints.myEndpoint.types.RawResultTypetypes-only field to match the other available fields.What's Changed
transformResponsewhen aqueryis used by @markerikson in #5049Full Changelog: reduxjs/redux-toolkit@v2.8.2...v2.9.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 becomes conflicted, 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.