chore(deps): update all non-major dependencies - #509
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
|
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
November 22, 2025 08:38
fd0cdb1 to
a2b708c
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
3 times, most recently
from
December 6, 2025 08:32
c560d6f to
6ae5c88
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
3 times, most recently
from
December 14, 2025 01:10
4f16b33 to
77d04ea
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
from
December 16, 2025 18:27
77d04ea to
fb5ffba
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
6 times, most recently
from
January 12, 2026 09:35
f12a8b1 to
3b1bf37
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
5 times, most recently
from
January 16, 2026 03:31
5084e98 to
0672726
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
5 times, most recently
from
January 24, 2026 16:27
9f95286 to
be0fda1
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
3 times, most recently
from
February 1, 2026 21:06
3687736 to
ff3270b
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
4 times, most recently
from
March 12, 2026 12:48
9ef3049 to
241f092
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
6 times, most recently
from
March 16, 2026 10:04
919ff14 to
8b6cb41
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
4 times, most recently
from
March 25, 2026 17:34
72ac0e0 to
deee592
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
3 times, most recently
from
April 3, 2026 13:49
db3c0e6 to
42ff948
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
5 times, most recently
from
April 15, 2026 05:14
39bc410 to
41ae426
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
3 times, most recently
from
April 23, 2026 23:11
ecc606f to
7e081a4
Compare
renovate
Bot
force-pushed
the
renovate/all-minor-patch
branch
4 times, most recently
from
May 12, 2026 02:11
c98e6ba to
1e0b683
Compare
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.0.9→4.3.00.5.1→0.7.02.29.7→2.31.120.19.17→20.19.4316.11.0→16.14.22.12.6→2.12.722.20.0→22.23.23.6.2→3.9.629.4.4→29.4.125.9.2→5.9.37.29.0→7.29.13.17.0→3.19.0Release Notes
apollographql/apollo-client (@apollo/client)
v4.3.0Compare Source
Minor Changes
#13447
24133feThanks @jerelmiller! - Field policies andinputObjectscan now tell the cache whether a field is a list of scalars or a scalar whose value is an array. Previously all arrays were iterated and only the inner type was provided to the scalarparse/serializefunctions.This required some breaking changes from previous prerelease versions:
scalaroption andinputObjectstype string now use GraphQL list syntax to mark a field as a list of scalarscache.getScalarForFieldis nowcache.getScalarTypeForFieldand is expected to return the string representing the scalar type rather than theScalarinstanceNow it's possible to handle scalars that are represented by arrays:
#13324
0abd8deThanks @jerelmiller! - Fix the accuracy ofdataStatein complex incremental streaming scenarios, especially when combined withreturnPartialData: true.Prior to this change, all intermediate chunks used for both
@deferand@streamdirectives returned adataStateofstreaming, regardless of whether the actual data shape fit the definition of thestreamingdata state. Thestreamingdata state represents an incomplete incremental response where the only holes in the data occur at@deferboundaries.Let's use the following example of where the previous
dataStatefell down when combined withreturnPartialData.@deferboundary written to the cacheLet's say the cache contained the following partial data:
After the first chunk arrives from the server, the data looks like the following:
This data is not
completebecauserecipient.emailis missing. This data is also notstreamingbecause the data requirements in the@deferboundary are partially fulfilled due to the existence ofrecipient. This could lead to runtime crashes onrecipient.emailif you use the existence ofrecipientto detect whether data in the@deferboundary has streamed in or not. This change now accurately reports this aspartialto ensure the field is marked as a partial field inrecipient.@deferboundaryLet's say the cache contained the following partial data:
After the first chunk arrives from the server, the data looks like the following:
In this case, the combination of the first chunk and the partial data in the cache now fulfills the data requirements of the query. Even though the server is still streaming data (
NetworkStatus.streaming), we can report this asdataState: "complete"since it is safe to access data on all fields.This change also means
@streamqueries by definition fulfill the data requirements of the query after the first chunk arrives since@streamoperates on lists and contains no data holes.@streamqueries now accurately reportdataStateascompleteorpartial, depending on whether the list mixes partial data with streamed list items.As a result of this change, some cases where you'd previously see
dataStatereported as"streaming"are now reported aspartialorcomplete.If you use
dataStateto determine whether an incremental request is still in-flight, please usenetworkStatusinstead to check forNetworkStatus.streaming.dataStateis type narrowing feature and not intended to report the network status.#13274
7b10078Thanks @jerelmiller! - AddsScalar.fromGraphQLScalarTypehelper to create aScalarinstance from an existing graphql.jsGraphQLScalarType.#13421
d6197a4Thanks @jerelmiller! - The minimum supported TypeScript version is now 5.9.x.#13270
d080f11Thanks @jerelmiller! - Adds the plumbing and types implementation for declaring custom scalars and configuring custom scalars inInMemoryCache.You can declare custom scalar types with declaration merging on the
ApolloCache.Scalarsinterface:This enables the
scalarsoption inInMemoryCache:#13250
bad7035Thanks @jerelmiller! - Add the ability to define the cache type for the client.client.cachecurrently returnsApolloCacheas the cache type regardless of what cache you've provided toApolloClient.Declare the cache type using the
cacheproperty in theTypeOverridesinterface to set the cache implementation used for the client.Now anywhere
cacheis accessible, the type is the declared cache type:#13406
bd74ccbThanks @jerelmiller! - Emit a development-only warning when a feud is detected between queries that overwrite each other's data. This should make it easier to detect when you need to select a key field or add amergefunction to a field policy.#13390
90e338cThanks @jerelmiller! - Fix issue where sibling@deferfragments were pruned incorrectly when at least one of the@deferfragments wasn't delivered.As a result of this change, a
labelargument is now added to all outgoing@deferdirectives when using theGraphQL17Alpha9Handlerin order to disambiguate the@deferfragments from each other.#13426
a9beaffThanks @jerelmiller! - Version bump only torc.#13416
f2d5d5aThanks @jerelmiller! - AddGraphQLCodegenIncrementaltype overrides that assemble GraphQL Codegen@deferoperation types whendataStateis"complete".#13372
e4cde69Thanks @jerelmiller! - Parse scalar fields forno-cachequeries.#13386
0be8fd8Thanks @atharv-sys32! - SupportskipTokenwithuseSubscriptionto provide a more type-safe way to skip subscription execution with required variables.#13337
2df711fThanks @jcostello-atlassian! - Allow overriding thefrominput ofuseFragment,useSuspenseFragment,readFragment,writeFragmentand related fragment APIs via a newFromOptionValuekey on theTypeOverridesinterface.By default,
fromcontinues to acceptStoreObject | Reference | FragmentType<TData> | string. Apps can now supply a stricter policy (for example, requiring__typenameand disallowing nullish identifier values) without affectingStoreObject,cache.identify,cache.modifyor optimistic writes.#13405
f923ab4Thanks @jerelmiller! - Field policyreadandmergefunctions are now ignored when the field policy configures thescalaroption. If areadormergefunction is provided alongsidescalar, a development-only warning is emitted.#13393
434d25fThanks @jerelmiller! - Change when@deferfragments and@streamfields are pruned forcache-firstandcache-and-networkfetch policies to better match the network when the initial value contained a partial result:cache-first: prune undelivered@deferfragments or@streamitems when the result is fetched from the network due to a partial resultcache-and-network: prune undelivered@deferfragments or@streamitems if the initial cache value was partial. If the first value emitted from the cache is complete, the results will not be pruned.This makes the emitted results more predictable by following what the network has delivered and avoids some ambiguity in other edge cases.
For example, with a
cache-firstfetch policy where all@deferfields are written to the cache, but a non-deferred field is partial, the values emitted from the client previously looked like the following:Here the result is confusing because the initial value returned from the query was
undefined, yet a complete result was returned after the initial chunk from the network returned (which did not containemail).The cache values are now pruned if the network hasn't delivered them yet:
This is especially helpful in situations where
@deferboundaries that are never delivered due to errors prevent an awkward situation where the client would otherwise have to choose whether to serve the stale cache result from the cache, or prune the undelivered fragment on the final chunk.#13270
6031987Thanks @jerelmiller! - Adds ascalaroption toInMemoryCachefield policies that tells the cache which scalar to use when parsing or serializing the field value.This scalar definition is now used to properly parse or serialize the field value for cache reads and writes as well as
cache.extract()andcache.restore().#13273
0886de1Thanks @jerelmiller! - Automatically serialize variables that include custom scalar values. This includes cache reads and writes as well as requests to the network.For more complex input objects, a new
inputObjectsoption is available toInMemoryCachethat specifies where nested scalar fields are found.#13424
d2bca2eThanks @jerelmiller! - Remove the customNoInfertype utility in favor of the nativeNoInferintroduced in TypeScript 5.4.#13270
d080f11Thanks @jerelmiller! - Adds thegetScalarabstract method toApolloCachethat cache subclasses override to provide scalar behavior to Apollo Client. Defaults to unconditionally returnundefinedif not specified.#13406
bd74ccbThanks @jerelmiller! - Fixes an issue where cache feuds between queries selecting incompatible non-normalized data could return untransformed network values.Apollo Client now always writes network results to the cache before delivering them, ensuring custom scalars and field
readfunctions are applied. To prevent repeated refetches when competing queries repeatedly make each other's cache results incomplete, Apollo Client stops automatically refetching a query after it sees the same incomplete result again.This may add one network request in these cache-feud scenarios.
Patch Changes
#13408
7a5164dThanks @jerelmiller! - FixdataStateto report"streaming"instead of"partial"whenreturnPartialDataistrueand the cache result is missing only@deferfields.#13381
9c73762Thanks @jerelmiller! - Fix an issue where anetwork-onlyquery leaked partial cache data for@deferfragments that were not delivered by the network due to an error that bubbled to the@deferfragment boundary.#13390
90e338cThanks @jerelmiller! - Fix an issue where a sibling non-deferred fragment might be accidentally pruned when the@deferfragment hadn't been delivered.#13442
ed033d4Thanks @jerelmiller! - Remove the optional modifier from thevariablesproperty provided to theupdatefunction inclient.mutateanduseMutation.variablesis always a defined object, even when variables are not provided to the mutation.#13324
0abd8deThanks @jerelmiller! - Fix an issue where fieldreadfunctions were not applied to intermediate results while streaming@deferresponses.cache.diffran thereadfunctions, but the transformed values were only applied to the emitted result when the updated cache result was considered complete. Intermediate chunks whose only holes were at@deferboundaries now correctly return the result of fieldreadfunctions.#13403
aaff7a8Thanks @jerelmiller! - Fix issue where the wrongdataStatewas returned when there was nothing written to the cache and a@deferfragment was marked pending.#13347
7d543d6Thanks @jerelmiller! - Fix an issue wherenetwork-onlyincremental queries could cause cache data to leak into the emitted result when a@deferor@streamboundary already had complete data in the cache. Cache data inside pending@deferobjects and@streamarrays are now pruned so that only completed@deferor@streamboundaries are returned.NOTE: This change only applies to
InMemoryCachewhen usingGraphQL17Alpha9Handler.#13329
1d581d2Thanks @AmariahAK! - Cache diffs for incomplete queries no longer pay the cost of building a fullMissingFieldErrorwhen themissingproperty is not accessed. The error object is now only constructed when themissingproperty is accessed the first time. This improves performance by avoiding a V8 stack capture whenmissingis ignored entirely.As an additional small performance improvement,
JSON.stringifyis no longer used in the error message on objects whose cache ID is known.JSON.stringifyis only used for non-normalized objects.#13381
9c73762Thanks @jerelmiller! - Fix an issue where a@deferquery reported thedataStateascompleteinstead ofstreamingwhen an error occurs on a deferred field that bubbled to the defer boundary.#13324
0abd8deThanks @jerelmiller! - Fix an issue with@streamqueries when usingreturnPartialData: truewhere the streamed list was truncated after the first incremental chunk when the list contained partial cache data. The list is no longer truncated and partial list items are now retained as incremental chunks arrive. ThedataStateis now reported aspartialuntil the server has streamed enough of the list so that each list item fully satisfies the query.This change also updates
@streamqueries so that they reported withdataState: "completeinstead of"streaming"since it is safe to access all fields in the response.#13373
2551937Thanks @jerelmiller! - Fix an issue where a cache write in the middle of polling would remain as the query value if future poll requests returned deep equal results to previous polling results.#13448
77e1e35Thanks @jerelmiller! - Markskipas deprecated inuseQueryanduseSubscriptionnow that both of these hooks supportskipToken.#13403
aaff7a8Thanks @jerelmiller! - Fix issue where settingreturnPartialData: truemight report the wrongdataStatewhen partial data was written to the cache and@deferfragments were pending.#13347
7d543d6Thanks @jerelmiller! - Fix an issue where partial cache data could leak into intermediate incremental results. This could cause runtime crashes if you relied on the presence of values to determine whether the@deferdata had streamed in or not.#13381
9c73762Thanks @jerelmiller! - Fix an invariant error thrown when a@deferboundary received a payload after it had already been marked complete.#13268
419e2b5Thanks @DaleSeo! - Align the remaining cache generic constraints withCache.Implementation. The deprecated React mutation types (MutationHookOptions,MutationFunctionOptions,MutationTuple) and the internalInternalRefetchQueriesOptionsandQueryInfotypes still constrained their cache type parameter toApolloCache, so they now match the rest of the overridable cache API.v4.2.12Compare Source
Patch Changes
56ca81bThanks @QiRaining! - Preserve multi-byte UTF-8 characters split across multipart response chunks.v4.2.11Compare Source
Patch Changes
#13398
3dd3e9aThanks @phryneas! - Fix type signature of someDocumentationTypesto fix their display in our documentation.#13392
d4f0771Thanks @jerelmiller! - Add a development-only warning when a network result is written to the cache but reading the query back from the cache returns a partial result. This usually points at amergeorreadfunction that did not repair missing fields in the cache, which prevents Apollo Client from applying the cache result to the data received by the network.v4.2.10Compare Source
Patch Changes
#13385
bfb674eThanks @jerelmiller! - Fix accidental widening of theclient.mutatereturn type whenoptimisticResponsewas present.#13382
365373eThanks @jerelmiller! - Fix result types widened when a query's variables had constant types (e.g.TypedDocumentNode<Data, { type: "main" }>). This caused options such asreturnPartialDataorerrorPolicyto be reported as their widened types (e.g.boolean,ErrorPolicy) instead of the value that was passed which returned the wrongdataanddataStatetypes.#13382
365373eThanks @jerelmiller! - Fix issue where unknown options were permitted by TypeScript when passed alongside a valid option to APIs with modern signatures.#13383
5840f50Thanks @jerelmiller! - Update the return type ofrefetch,fetchMoreanduseLazyQuery'sexecutefunction on the providederrorPolicy. Previously these APIs all used the default type which typeddataasTData | undefinedanderrorasErrorLike | undefined.v4.2.9Compare Source
Patch Changes
#13364
2f383e7Thanks @atharv-sys32! - Fix a bug where GraphQL variable default values were not applied during cache reads when variables with defaults were explicitly set toundefined. This caused@include/@skipdirectives to throw "Invalid variable referenced" errors when the variable was passed asundefinedinstead of being omitted entirely.#13367
2b39cc8Thanks @jerelmiller! - Fix an issue where some@exportqueries would not react to cache updates when the fields keyed by exported variables were updated.v4.2.8Compare Source
Patch Changes
501a33bThanks @jerelmiller! - Prevent thesetTimeoutinconnectToDevtoolsthat shows the devtools suggestion from firing when the user agent does not match Chrome or Firefox. This check was previously done inside thesetTimeoutwhich meant the timer was scheduled for environments where we'd never show the message anyways. For test environments, this could cause flaky tests when thatsetTimeoutoutlived the tests and ran after any virtual DOM was torn down and removed.v4.2.7Compare Source
Patch Changes
538c906Thanks @jerelmiller! - Cleanup some unused internals. Please file an issue if you notice anything change.v4.2.6Compare Source
Patch Changes
#13315
a406cc9Thanks @fallintoplace! - Prevent relay multipart subscriptions from issuing a fetch request after serializing the request body fails.#13307
abd0781Thanks @wolfie! - Speed up cache writes by avoiding a full ASTvisitof every written field to detect@stream. The check now runs only when the result carries stream info, and only inspects the field node's own directives. As a result, fields that merely contain@streamon a nested field are no longer treated as streamed themselves and now overwrite existing lists like regular fields instead of merging chunk-wise.v4.2.5Compare Source
Patch Changes
bb75dd3Thanks @tpict! - ExportKeyArgsFunctionandRelayFieldPolicytypes from public entrypoints.v4.2.4Compare Source
Patch Changes
e4df809Thanks @jerelmiller! - Fixes an issue whereclient.readFragmentandclient.readQueryignored theoptimisticoption when passed in the options object.v4.2.3Compare Source
Patch Changes
66e9dfcThanks @jerelmiller! - Add support forgraphqlv17 as a valid peer dependency.v4.2.2Compare Source
Patch Changes
c207b88Thanks @audrius-savickas! - Preserve referential equality of masked data on refetch when the result is deeply equal to the previous result.v4.2.1Compare Source
Patch Changes
062ffe3Thanks @jerelmiller! - Fixes an issue whereuseLazyQuerywould not apply a changedpollIntervalbetween renders.v4.2.0Compare Source
Minor Changes
#13132
f3ce805Thanks @phryneas! - Introduce "classic" and "modern" method and hook signatures.Apollo Client 4.2 introduces two signature styles for methods and hooks. All signatures previously present are now "classic" signatures, and a new set of "modern" signatures are added alongside them.
Classic signatures are the default and are identical to the signatures before Apollo Client 4.2, preserving backward compatibility. Classic signatures still work with manually specified TypeScript generics (e.g.,
useSuspenseQuery<MyData>(...)). However, manually specifying generics has been discouraged for a long time—instead, we recommend usingTypedDocumentNodeto automatically infer types, which provides more accurate results without any manual annotations.Modern signatures automatically incorporate your declared
defaultOptionsinto return types, providing more accurate types. Modern signatures infer types from the document node and do not support manually passing generic type arguments; TypeScript will produce a type error if you attempt to do so.Methods and hooks automatically switch to modern signatures the moment any non-optional property is declared in
DeclareDefaultOptions. The switch happens across all methods and hooks globally:Users can also manually switch to modern signatures without declaring any
defaultOptions, for example when wanting accurate type inference without relying on globaldefaultOptions:Users can do a global
DeclareDefaultOptionstype augmentation and then manually switch back to "classic" for migration purposes:Note that this is not recommended for long-term use. When combined with
DeclareDefaultOptions, switching back to classic results in the same incorrect types as before Apollo Client 4.2—methods and hooks will not reflect thedefaultOptionsyou've declared.#13130
dd12231Thanks @jerelmiller! - Improve the accuracy ofclient.queryreturn type to better detect the currenterrorPolicy. Thedataproperty is no longer nullable when theerrorPolicyisnone. This makes it possible to remove theundefinedchecks or optional chaining in most cases.#13210
1f9a428Thanks @jerelmiller! - Add support for automatic event-based refetching, such as window focus.The
RefetchEventManagerclass handles automatic refetches in response to events. Apollo Client provides built-in sources for window focus and network reconnect aswindowFocusSourceandonlineSource.Event refetching is fully opt-in. Create and pass a
RefetchEventManagerinstance to theApolloClientconstructor to activate the event listeners.By default, all active queries refetch when the events fire. Queries can opt out per-event or disable all event refetches:
To enable per-query opt-in rather than opt-out, set
defaultOptions.watchQuery.refetchOntofalseand enable it per-query instead.When
defaultOptions.watchQuery.refetchOnand per-queryrefetchOnoptions are provided, the objects are merged together.Custom events
You can also add your own custom events that trigger refetches. Register your event name and payload type using TypeScript module augmentation, then provide a source function that returns an Observable. The source's emitted value becomes the event's
payload.Manually trigger an event refetch
Refetches can be triggered imperatively by calling
emitwith the event name and its payload (if any).Sourceless events
A source that has no automatic detection logic but still wants imperative
emitsupport can be declared astrue. Type the event asvoidto omit the payload argument.Note: Calling
emiton an event without a registered source will log a warning and result in a no-op.Custom handlers
When an event fires, the default handler calls
client.refetchQueries({ include: "active" })filtered by each query'srefetchOnsetting. You can override the handler for an event to add your own custom filtering. For example, to refetch all queries, includingstandbyqueries, define a handler for the event:Handlers must return either a
RefetchQueriesResultorvoid. Returningvoidskips refetching for the event.Configuration
📅 Schedule: (in timezone America/Los_Angeles)
🚦 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.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.