This feature release adds a new RTK Query upsertQueryEntries util to batch-upsert cache entries more efficiently, passes through additional values for use in prepareHeaders, and exports additional TS types around query options and selectors.
Changelog
upsertQueryEntries
RTK Query already had an upsertQueryData thunk that would upsert a single cache entry. However, some users wanted to upsert many cache entries (potentially hundreds or thousands), and found that upsertQueryData had poor performance in those cases. This is because upsertQueryData runs the full async request handling sequence, including dispatching both pending and fulfilled actions, each of which run the main reducer and update store subscribers. That means there's 2N store / UI updates per item, so upserting hundreds of items becomes extremely perf-intensive.
RTK Query now includes an api.util.upsertQueryEntries action that is meant to handle the batched upsert use case more efficiently. It's a single synchronous action that accepts an array of many {endpointName, arg, value} entries to upsert. This results in a single store update, making this vastly better for performance vs many individual upsertQueryData calls.
We see this as having two main use cases. The first is prefilling the cache with data retrieved from storage on app startup (and it's worth noting that upsertQueryEntries can accept entries for many different endpoints as part of the same array).
The second is to act as a "pseudo-normalization" tool. RTK Query is not a "normalized" cache. However, there are times when you may want to prefill other cache entries with the contents of another endpoint, such as taking the results of a getPosts list endpoint response and prefilling the individual getPost(id) endpoint cache entries, so that components that reference an individual item endpoint already have that data available.
Currently, you can implement the "pseudo-normalization" approach by dispatching upsertQueryEntries in an endpoint lifecycle, like this:
// Pre-fill the individual post entries with the results
// from the list endpoint query
dispatch(
api.util.upsertQueryEntries(
posts.map((post) => ({
endpointName: 'getPost',
arg: { id: post.id },
value: post,
})),
),
)
},
}),
getPost: build.query<Post, Pick<Post, 'id'>>({
query: (post) => `post/${post.id}`,
}),
}),
})
Down the road we may add a new option to query endpoints that would let you provide the mapping function and have it automatically update the corresponding entries.
feat(nextjs/vercel-edge/cloudflare): Switch to OTEL for performance monitoring (#13889)
With this release, the Sentry Next.js, and Cloudflare SDKs will now capture performance data based on OpenTelemetry.
Some exceptions apply in cases where Next.js captures inaccurate data itself.
NOTE: You may experience minor differences in transaction names in Sentry.
Most importantly transactions for serverside pages router invocations will now be named GET /[param]/my/route instead of /[param]/my/route.
This means that those transactions are now better aligned with the OpenTelemetry semantic conventions.
Other Changes
deps: Bump bundler plugins and CLI to 2.22.6 and 2.37.0 respectively (#14050)
feat(deps): bump @opentelemetry/instrumentation-aws-sdk from 0.44.0 to 0.45.0 (#14099)
feat(deps): bump @opentelemetry/instrumentation-connect from 0.39.0 to 0.40.0 (#14101)
feat(deps): bump @opentelemetry/instrumentation-express from 0.43.0 to 0.44.0 (#14102)
feat(deps): bump @opentelemetry/instrumentation-fs from 0.15.0 to 0.16.0 (#14098)
feat(deps): bump @opentelemetry/instrumentation-kafkajs from 0.3.0 to 0.4.0 (#14100)
feat(nextjs): Add method and url to route handler request data (#14084)
feat(node): Add breadcrumbs for child_process and worker_thread (#13896)
fix(core): Ensure standalone spans are not sent if SDK is disabled (#14088)
feat(nextjs/vercel-edge/cloudflare): Switch to OTEL for performance monitoring (#13889)
With this release, the Sentry Next.js, and Cloudflare SDKs will now capture performance data based on OpenTelemetry.
Some exceptions apply in cases where Next.js captures inaccurate data itself.
NOTE: You may experience minor differences in transaction names in Sentry.
Most importantly transactions for serverside pages router invocations will now be named GET /[param]/my/route instead of /[param]/my/route.
This means that those transactions are now better aligned with the OpenTelemetry semantic conventions.
Other Changes
deps: Bump bundler plugins and CLI to 2.22.6 and 2.37.0 respectively (#14050)
feat(deps): bump @opentelemetry/instrumentation-aws-sdk from 0.44.0 to 0.45.0 (#14099)
feat(deps): bump @opentelemetry/instrumentation-connect from 0.39.0 to 0.40.0 (#14101)
feat(deps): bump @opentelemetry/instrumentation-express from 0.43.0 to 0.44.0 (#14102)
feat(deps): bump @opentelemetry/instrumentation-fs from 0.15.0 to 0.16.0 (#14098)
feat(deps): bump @opentelemetry/instrumentation-kafkajs from 0.3.0 to 0.4.0 (#14100)
feat(nextjs): Add method and url to route handler request data (#14084)
feat(node): Add breadcrumbs for child_process and worker_thread (#13896)
fix(core): Ensure standalone spans are not sent if SDK is disabled (#14088)
perf(otel): Only calculate current timestamp once (#14094)
test(browser-integration): Add sentry DSN route handler by default (#14095)
8.35.0
Beta release of the official Nuxt Sentry SDK
This release marks the beta release of the @sentry/nuxt Sentry SDK. For details on how to use it, check out the
Sentry Nuxt SDK README. Please reach out on
GitHub if you have any feedback or concerns.
feat(nuxt): Make dynamic import() wrapping default
(#13958) (BREAKING)
feat(nuxt): Add Rollup plugin to wrap server entry with import()
(#13945)
**It is no longer required to add a Node --import flag. Please update your start command to avoid initializing Sentry
Bumps the safe group with 42 updates in the / directory:
3.19.0
3.21.0
6.12.5
6.16.1
6.6.8
6.8.1
7.5.7
7.7.1
4.0.0
4.2.1
8.10.3
8.14.1
5.2.14
5.3.1
11.2.14
11.4.1
2.2.7
2.3.0
8.32.0
8.36.0
9.1.0
9.1.1
1.4.1
1.5.0
6.7.0
6.8.4
5.8.1
5.8.2
7.25.6
7.25.9
7.25.2
7.26.0
7.25.1
7.25.9
7.24.7
7.25.9
7.25.4
7.25.9
7.24.7
7.25.9
7.24.7
7.25.9
7.25.4
7.26.0
7.24.7
7.25.9
7.24.6
7.25.9
7.25.6
7.26.0
7.0.0
7.0.1
8.3.4
8.4.0
8.3.4
8.4.0
8.3.4
8.4.0
8.3.4
8.4.0
8.3.4
8.4.0
8.3.4
8.4.0
13.15.0
13.15.1
2.30.0
2.31.0
50.3.0
50.4.3
7.37.0
7.37.2
5.6.0
5.6.3
2.9.1
2.9.2
8.13.0
8.13.1
16.9.0
16.10.0
0.63.0
0.64.0
5.95.0
5.96.0
Updates
@tabler/icons-react
from 3.19.0 to 3.21.0Release notes
Sourced from
@tabler/icons-react
's releases.Commits
69752f4
Release 3.21.0537602d
Release 3.20.0Updates
@formatjs/intl-datetimeformat
from 6.12.5 to 6.16.1Release notes
Sourced from
@formatjs/intl-datetimeformat
's releases.Commits
abb9230
build: publish930c3e8
fix: relax tslib req to 2 instead of 2.72420100
chore(eslint-plugin-formatjs): rm typescript req32d8f3e
chore: dep++, pin eslint to 9.4.01db97e1
build: publish76d8638
chore: bump pnpm version858d995
chore(deps): update dependency typescript to v5.6.3 (#4631)46e3cb4
chore: mark all .generated.json files as generated1ece9c9
chore: mark all .generated files as generateddaafb44
feat: upgrade cldr to v46Updates
@formatjs/intl-displaynames
from 6.6.8 to 6.8.1Release notes
Sourced from
@formatjs/intl-displaynames
's releases.Commits
abb9230
build: publish930c3e8
fix: relax tslib req to 2 instead of 2.72420100
chore(eslint-plugin-formatjs): rm typescript req32d8f3e
chore: dep++, pin eslint to 9.4.01db97e1
build: publish76d8638
chore: bump pnpm version858d995
chore(deps): update dependency typescript to v5.6.3 (#4631)46e3cb4
chore: mark all .generated.json files as generated1ece9c9
chore: mark all .generated files as generateddaafb44
feat: upgrade cldr to v46Updates
@formatjs/intl-listformat
from 7.5.7 to 7.7.1Release notes
Sourced from
@formatjs/intl-listformat
's releases.Commits
abb9230
build: publish930c3e8
fix: relax tslib req to 2 instead of 2.72420100
chore(eslint-plugin-formatjs): rm typescript req32d8f3e
chore: dep++, pin eslint to 9.4.01db97e1
build: publish76d8638
chore: bump pnpm version858d995
chore(deps): update dependency typescript to v5.6.3 (#4631)46e3cb4
chore: mark all .generated.json files as generated1ece9c9
chore: mark all .generated files as generateddaafb44
feat: upgrade cldr to v46Updates
@formatjs/intl-locale
from 4.0.0 to 4.2.1Release notes
Sourced from
@formatjs/intl-locale
's releases.Commits
abb9230
build: publish930c3e8
fix: relax tslib req to 2 instead of 2.72420100
chore(eslint-plugin-formatjs): rm typescript req32d8f3e
chore: dep++, pin eslint to 9.4.01db97e1
build: publish76d8638
chore: bump pnpm version858d995
chore(deps): update dependency typescript to v5.6.3 (#4631)46e3cb4
chore: mark all .generated.json files as generated1ece9c9
chore: mark all .generated files as generateddaafb44
feat: upgrade cldr to v46Updates
@formatjs/intl-numberformat
from 8.10.3 to 8.14.1Release notes
Sourced from
@formatjs/intl-numberformat
's releases.Commits
abb9230
build: publish930c3e8
fix: relax tslib req to 2 instead of 2.72420100
chore(eslint-plugin-formatjs): rm typescript req32d8f3e
chore: dep++, pin eslint to 9.4.01db97e1
build: publish76d8638
chore: bump pnpm version858d995
chore(deps): update dependency typescript to v5.6.3 (#4631)46e3cb4
chore: mark all .generated.json files as generated1ece9c9
chore: mark all .generated files as generateddaafb44
feat: upgrade cldr to v46Updates
@formatjs/intl-pluralrules
from 5.2.14 to 5.3.1Release notes
Sourced from
@formatjs/intl-pluralrules
's releases.Commits
abb9230
build: publish930c3e8
fix: relax tslib req to 2 instead of 2.72420100
chore(eslint-plugin-formatjs): rm typescript req32d8f3e
chore: dep++, pin eslint to 9.4.01db97e1
build: publish76d8638
chore: bump pnpm version858d995
chore(deps): update dependency typescript to v5.6.3 (#4631)46e3cb4
chore: mark all .generated.json files as generated1ece9c9
chore: mark all .generated files as generateddaafb44
feat: upgrade cldr to v46Updates
@formatjs/intl-relativetimeformat
from 11.2.14 to 11.4.1Release notes
Sourced from
@formatjs/intl-relativetimeformat
's releases.Commits
abb9230
build: publish930c3e8
fix: relax tslib req to 2 instead of 2.72420100
chore(eslint-plugin-formatjs): rm typescript req32d8f3e
chore: dep++, pin eslint to 9.4.01db97e1
build: publish76d8638
chore: bump pnpm version858d995
chore(deps): update dependency typescript to v5.6.3 (#4631)46e3cb4
chore: mark all .generated.json files as generated1ece9c9
chore: mark all .generated files as generateddaafb44
feat: upgrade cldr to v46Updates
@reduxjs/toolkit
from 2.2.7 to 2.3.0Release notes
Sourced from
@reduxjs/toolkit
's releases.... (truncated)
Commits
77fb33d
Release 2.3.0fa0906e
Merge pull request #4291 from reduxjs/pr/fetchBaseQuery-extraOptions896e4df
Drop generic and make extraOptions unknown41487fd
Fix arguments type1918f13
fix bad inference with an overload?6ef362f
fixup test3e77381
fetchBaseQuery: expose extraOptions to prepareHeaders7b50a61
Merge pull request #4561 from reduxjs/feature/4106-rtkq-normalization3358c13
Fix Parameters headersd38ff98
Merge pull request #4638 from kyletsang/prepareheaders-argsUpdates
@sentry/react
from 8.32.0 to 8.36.0Release notes
Sourced from
@sentry/react
's releases.... (truncated)
Changelog
Sourced from
@sentry/react
's changelog.... (truncated)
Commits
13e6c8e
release: 8.36.0a566681
Merge pull request #14136 from getsentry/prepare-release/8.36.009c8577
meta(changelog): Update changelog for 8.36.0b6dbde8
Merge pull request #14135 from getsentry/master472c228
ref(nuxt): Revert Sentry Pinia plugin (#14134)a9cedf9
Merge pull request #14120 from getsentry/prepare-release/8.36.0c98377b
fix(aws-serverless): Remove possible prototype pollution source (#14110)a091bdd
feat(replay): ExposerecordingMode
in public API (#14085)8d9322c
meta(changelog): Update changelog for 8.36.006ef628
feat(nextjs): Add method and url to route handler request data (#14084)Updates
query-string
from 9.1.0 to 9.1.1Release notes
Sourced from query-string's releases.
Commits
9fce3f9
9.1.119c43d4
FixarrayFormat
bracket-separator
with a URL encoded value (#392)4287e77
Meta tweaksUpdates
react-apexcharts
from 1.4.1 to 1.5.0Commits
Updates
react-intl
from 6.7.0 to 6.8.4Release notes
Sourced from react-intl's releases.
Commits
abb9230
build: publish930c3e8
fix: relax tslib req to 2 instead of 2.72420100
chore(eslint-plugin-formatjs): rm typescript req32d8f3e
chore: dep++, pin eslint to 9.4.01db97e1
build: publish76d8638
chore: bump pnpm version858d995
chore(deps): update dependency typescript to v5.6.3 (#4631)46e3cb4
chore: mark all .generated.json files as generated1ece9c9
chore: mark all .generated files as generateddaafb44
feat: upgrade cldr to v46Updates
react-select
from 5.8.1 to 5.8.2Release notes
Sourced from react-select's releases.
Commits
28251dc
Version Packages (#5968)1e5a069
Update README.md, fix a typo (#5966)781284a
Fix for calling non-cancellable scroll events (#5771)Updates
@babel/cli
from 7.25.6 to 7.25.9Release notes
Sourced from
@babel/cli
's releases.