chore(deps): update dependency @apollo/client to v4#3298
Conversation
|
✅ Docs preview has no changesThe preview was not built because there were no changes. Build ID: ac490aa57d3b640484be89fb ✅ AI Style Review — No Changes DetectedNo MDX files were changed in this pull request. Review Log: View detailed log
|
|
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. |
930d5ef to
98cd5ce
Compare
1f71963 to
58f0397
Compare
952f2e2 to
a7fc34f
Compare
2beff86 to
3bc7f00
Compare
0ebc66b to
e85b3b3
Compare
bc89364 to
2a80999
Compare
91ed65b to
98b2b4f
Compare
1af96a0 to
702b03f
Compare
702b03f to
4bd8f26
Compare
f9df693 to
71f3592
Compare
71f3592 to
d8585cd
Compare
73ab6e4 to
48cebac
Compare
871194e to
88d580e
Compare
ab08054 to
8668982
Compare
8668982 to
074aa24
Compare
a4921f4 to
f8127b2
Compare
46d6977 to
09c6ceb
Compare
09c6ceb to
a1346a3
Compare
a1346a3 to
e7f0644
Compare
This PR contains the following updates:
3.8.8→4.2.2Release Notes
apollographql/apollo-client (@apollo/client)
v4.2.2Compare Source
graphqlfunction can now be configured to ignore@includeand@skipdirectives (useful when walking a fragment to generate prop typesor filter result data).
@GreenGremlin in #4373
v4.2.1Compare Source
graphql-anywhere/lib/asyncentry point.@benjamn in #4503
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.#13232
f1b541fThanks @jerelmiller! - Version bump torc.#13206
08fccabThanks @jerelmiller! - Extend thedefaultOptionstype-safety work toclient.mutateanduseMutation.The
errorPolicyoption now flows through to the result types for mutations in the same way it already does for queries:ApolloClient.MutateResult<TData, TErrorPolicy>mapserrorPolicyto the concrete shape ofdataanderror:"none"→{ data: TData; error?: never }"all"→{ data: TData | undefined; error?: ErrorLike }"ignore"→{ data: TData | undefined; error?: never }client.mutateanduseMutationpick up the declareddefaultOptions.mutate.errorPolicyand the expliciterrorPolicyon each call to narrow return types accordingly.useMutation.Result.erroris narrowed toundefinedwhenerrorPolicyis"ignore", sinceclient.mutatenever resolves with an error in that case.DeclareDefaultOptions.Mutatealready acceptederrorPolicy; the new behavior is that once you declare it, hook and method return types reflect it:Setting
errorPolicyon an individual call overrides the default for that call's return type.#13222
b93c172Thanks @jerelmiller! - Extend thedefaultOptionstype-safety work topreloadQuery(returned fromcreateQueryPreloader). Defaults declared inDeclareDefaultOptions.WatchQuerynow work withpreloadQueryto ensure thePreloadedQueryRef's data states are correctly set.#13132
f3ce805Thanks @phryneas! - Synchronize method and hook return types withdefaultOptions.Prior to this change, the following code snippet would always apply:
While these types are generally correct, if you were to set
errorPolicy: 'all'as a default option, the type ofresult.datafor the first query would remainTDatainstead of changing toTData | undefinedto match the runtime behavior.We are now enforcing that certain
defaultOptionstypes need to be registered globally. This means that if you want to useerrorPolicy: 'all'as a default option for a query, you will need to register its type like this:Once this type declaration is in place, the type of
result.datain the above example will correctly be changed toTData | undefined, reflecting the possibility that if an error occurs,datamight beundefined. Manually specifyinguseSuspenseQuery(MY_QUERY, { errorPolicy: "none" });changesresult.datatoTDatato reflect the local override.This change means that you will need to declare your default options types in order to use
defaultOptionswithApolloClient, otherwise you will see a TypeScript error.Without the type declaration, the following (previously valid) code will now error:
If you are creating multiple instances of Apollo Client with conflicting default options and you cannot register a single
defaultOptionsvalue as a result, you can relax the constraints by declaring those options as union types covering all values used by all clients. The properties can be required (to enforce them indefaultOptions) or optional (if some constructor calls won't pass a value):With this declaration, the
ApolloClientconstructor accepts any of those values indefaultOptions. The tradeoff is that hook and method return types become more generic. For example, callinguseSuspenseQuerywithout an expliciterrorPolicywill return a result typed as if all error policies are possible, since TypeScript can't know which specific value your instance uses at runtime.Note that making a property optional (
errorPolicy?:) is equivalent to adding the TypeScript default value ("none") to the union. SoerrorPolicy?: "all" | "ignore"has the same effect on return types aserrorPolicy: "none" | "all" | "ignore", because TypeScript assumes the option could also be absent (i.e.,"none").You can also use a partial union that only lists the values you actually use. For example, if you only ever use
"all"or"ignore", declareerrorPolicy: "all" | "ignore"(required) to keep the union narrow and avoid unused values broadening your signatures unnecessarily.Patch Changes
#13217
790f987Thanks @jerelmiller! - Fix the deprecation for the classic signatures for function overloads that rely on type inference from aTypedDocumentNode. The deprecation now only applies to classic signatures that provide explicit type arguments to encourage the use ofTypedDocumentNode.#13166
0537d97Thanks @jerelmiller! - Release changes in 4.1.5 and 4.1.6.#13215
54c9eb7Thanks @jerelmiller! - Ensure the options object for theuseQuery,useSuspenseQuery, anduseBackgroundQueryhooks provide proper IntelliSense suggestions.#13229
9a7f65aThanks @jerelmiller! - FixrefetchOnmerging whendefaultOptions.watchQuery.refetchOnis set to a non-object value (false,true, or a function) and the per-queryrefetchOnis an object. Previously the per-query object completely replaced the default so unspecified events fell back to "enabled" regardless of the default.The
defaultOptionsvalue now applies to any event the per-query object does not explicitly configure:false- unspecified events stay disabledtrue- unspecified events refetch#13230
b25b659Thanks @jerelmiller! - Add the ability to override the default event handler onRefetchEventManager. The default handler runs when no per-source handler is configured for an event. Provide a custom handler via thedefaultHandlerconstructor option or thesetDefaultEventHandlerinstance method.v4.1.9Compare Source
Patch Changes
099954bThanks @copilot-swe-agent! - Remove theworkspacesfield from the publishedpackage.jsonindistto avoid Yarn v1 warnings about workspaces requiring private packages.v4.1.8Compare Source
Patch Changes
8a51ea6Thanks @phryneas! - Ship agent skill for usage with @tanstack/intent — the skill is now bundled in the npm package underskills/apollo-client/and discoverable byintent list.For more context, see the TanStack Intent QuickStart.
v4.1.7Compare Source
v4.1.6Compare Source
v4.1.5Compare Source
v4.1.4Compare Source
v4.1.3Compare Source
v4.1.2Compare Source
v4.1.1Compare Source
v4.1.0Compare Source
v4.0.13Compare Source
v4.0.12Compare Source
v4.0.11Compare Source
v4.0.10Compare Source
v4.0.9Compare Source
v4.0.8Compare Source
v4.0.7Compare Source
Patch Changes
5b4f36aThanks @jerelmiller! - Don't sendoperationTypein the payload sent byGraphQLWsLink.v4.0.6Compare Source
Patch Changes
3b0d89bThanks @phryneas! - Fix a problem withfetchMorewhere the loading state wouldn't reset if the result wouldn't result in a data update.v4.0.5Compare Source
Patch Changes
e2fc385Thanks @phryneas! - Fix an invariance type error in theMockedResponsetype.v4.0.4Compare Source
Patch Changes
#12892
db8a04bThanks @jerelmiller! - Prevent unhandled rejections from the promise returned by calling themutatefunction from theuseMutationhook.#12899
5352c12Thanks @phryneas! - Fix an issue wheninvariantis called by external libraries when no dev error message handler is loaded.#12895
71f2517Thanks @jerelmiller! - SupportskipTokenwithuseQueryto provide a more type-safe way to skip query execution.Note: this change is provided as a patch within the 4.0 minor version because the changes to TypeScript validation with required variables in version 4.0 made using the
skipoption more difficult.#12900
c0d5be7Thanks @phryneas! - Use named exportequalinstead of default from"@​wry/equality"v4.0.3Compare Source
Patch Changes
#12887
6f6ca47Thanks @phryneas! - Fix accidental deep re-export from/reactout of/react/internals#12890
019b422Thanks @jerelmiller! - Ensure thevariablesoption foruseMutationprovides proper IntelliSense suggestions.v4.0.2Compare Source
Patch Changes
56fac52Thanks @phryneas! - restoregetMemoryInternalsaccess in dev buildsv4.0.1Compare Source
Patch Changes
#12876
b00f231Thanks @phryneas! - Fix CJS build output forinvariantErrorCodes#12866
0d1614aThanks @jerelmiller! - ExportisNetworkStatusInFlightfrom@apollo/client/utilities. AddisNetworkStatusSettledto@apollo/client/utilitiesand re-export it from@apollo/clientwith a deprecation.v4.0.0Compare Source
v3.14.1Compare Source
Patch Changes
#13168
6b84ec0Thanks @jerelmiller! - Fix issue where muting a deprecation from one entrypoint would not mute the warning when checked in a different entrypoint. This caused some rogue deprecation warnings to appear in the console even though the warnings should have been muted.#12970
f91fab5Thanks @acemir! - Add a deprecation message for thevariableMatcheroption inMockLink.#13168
6b84ec0Thanks @jerelmiller! - Ensure deprecation warnings are properly silenced in React hooks when globally disabled.v3.14.0Compare Source
Minor Changes
#12752
8b779b4Thanks @jerelmiller! - Add deprecations and warnings to remaining APIs changed in Apollo Client 4.0.#12746
0bcd2f4Thanks @jerelmiller! - Add warnings and deprecations for options and methods for all React APIs.#12751
567cad8Thanks @jerelmiller! - Add@deprecatedtags to all properties returned from any query API (e.g.client.query,observableQuery.refetch, etc.),client.mutate, andclient.subscribethat are no longer available in Apollo Client 4.0.#12746
0bcd2f4Thanks @jerelmiller! - AddpreloadQuery.toPromise(queryRef)as a replacement forqueryRef.toPromise().queryRef.toPromise()has been removed in Apollo Client 4.0 in favor ofpreloadQuery.toPromiseand is now considered deprecated.#12736
ea89440Thanks @jerelmiller! - Add deprecations and deprecation warnings forApolloClientoptions and methods.#12763
5de6a3dThanks @jerelmiller! - Version bump only to release latest asrc.#12459
1c5a031Thanks @jerelmiller! - ResetaddTypenameTransformandfragmentscaches when callingcache.gc()only whenresetResultCacheistrue.#12743
92ad409Thanks @jerelmiller! - Add deprecations and warnings foraddTypenameinInMemoryCacheandMockedProvider.#12743
92ad409Thanks @jerelmiller! - Add deprecations and warnings forcanonizeResults.#12751
567cad8Thanks @jerelmiller! - Warn when using astandbyfetch policy withclient.query.Patch Changes
ecf3de1Thanks @phryneas! - Prevent field policies from overwriting/merging into supertype field policies.v3.13.9Compare Source
Patch Changes
32c9aa9Thanks @phryneas! - Fix a possible race condition on queries that were reobserved before they were subscribed to the first time.v3.13.8Compare Source
Patch Changes
c19d415Thanks @thearchitector! - Fix in-flight multipart urql subscription cancellationv3.13.7Compare Source
Patch Changes
#12540
0098932Thanks @phryneas! - Refactor: Move notification scheduling logic fromQueryInfotoObservableQuery#12540
0098932Thanks @phryneas! - Refactored cache emit logic for ObservableQuery. This should be an invisible change.v3.13.6Compare Source
Patch Changes
cdc55ffThanks @phryneas! - keep ObservableQuery created by useQuery non-active before it is first subscribedv3.13.5Compare Source
Patch Changes
12c8d06Thanks @jerelmiller! - Fix an issue where acache-firstquery would return the result for previous variables when a cache update is issued after simultaneously changing variables and skipping the query.v3.13.4Compare Source
Patch Changes
fee9368Thanks @jorenbroekema! - Use import star fromrehacktto prevent issues with importing named exports from external CJS modules.v3.13.3Compare Source
Patch Changes
#12362
f6d387cThanks @jerelmiller! - Fixes an issue where callingobservableQuery.getCurrentResult()when theerrorPolicywas set toallwould return thenetworkStatusasNetworkStatus.readywhen there were errors returned in the result. This has been corrected to reportNetworkStatus.error.This bug also affected the
useQueryanduseLazyQueryhooks and may affect you if you check fornetworkStatusin your component.v3.13.2Compare Source
Patch Changes
#12409
6aa2f3eThanks @phryneas! - To mitigate problems when Apollo Client ends up more than once in the bundle, some unique symbols were converted intoSymbol.forcalls.#12392
644bb26Thanks @Joja81! - Fixes an issue where the DeepOmit type would turn optional properties into required properties. This should only affect you if you were using the omitDeep or stripTypename utilities exported by Apollo Client.#12404
4332b88Thanks @jerelmiller! - ShowNaNrather than converting tonullin debug messages fromMockLinkfor unmatchedvariablesvalues.v3.13.1Compare Source
Patch Changes
#12369
bdfc5b2Thanks @phryneas! -ObervableQuery.refetch: don't refetch withcache-and-network, swich tonetwork-onlyinstead#12375
d3f8f13Thanks @jerelmiller! - Export theUseSuspenseFragmentOptionstype.v3.13.0Compare Source
Minor Changes
#12066
c01da5dThanks @jerelmiller! - Adds a newuseSuspenseFragmenthook.useSuspenseFragmentsuspends untildatais complete. It is a drop-in replacement foruseFragmentwhen you prefer to use Suspense to control the loading state of a fragment. See the documentation for more details.#12174
ba5cc33Thanks @jerelmiller! - Ensure errors thrown in theonCompletedcallback fromuseMutationdon't callonError.#12340
716d02eThanks @phryneas! - Deprecate theonCompletedandonErrorcallbacks ofuseQueryanduseLazyQuery.For more context, please see the related issue on GitHub.
#12276
670f112Thanks @Cellule! - Provide a more type-safe option for the previous data value passed toobservableQuery.updateQuery. Using it could result in crashes at runtime as this callback could be called with partial data even though its type reported the value as a complete result.The
updateQuerycallback function is now called with a new type-safepreviousDataproperty and a newcompleteproperty in the 2nd argument that determines whetherpreviousDatais a complete or partial result.As a result of this change, it is recommended to use the
previousDataproperty passed to the 2nd argument of the callback rather than using the previous data value from the first argument since that value is not type-safe. The first argument is now deprecated and will be removed in a future version of Apollo Client.#12174
ba5cc33Thanks @jerelmiller! - Reject the mutation promise if errors are thrown in theonCompletedcallback ofuseMutation.Patch Changes
#12276
670f112Thanks @Cellule! - Fix the return type of theupdateQueryfunction to allow forundefined.updateQueryhad the ability to bail out of the update by returning a falsey value, but the return type enforced a query value.#12296
2422df2Thanks @Cellule! - Deprecate optionignoreResultsinuseMutation.Once this option is removed, existing code still using it might see increase in re-renders.
If you don't want to synchronize your component state with the mutation, please use
useApolloClientto get your ApolloClient instance and callclient.mutatedirectly.#12338
67c16c9Thanks @phryneas! - In case of a multipart response (e.g. with@defer), query deduplication willnow keep going until the final chunk has been received.
#12276
670f112Thanks @Cellule! - Fix the type of thevariablesproperty passed as the 2nd argument to thesubscribeToMorecallback. This was previously reported as thevariablestype for the subscription itself, but is now properly typed as the queryvariables.v3.12.11Compare Source
Patch Changes
#12351
3da908bThanks @jerelmiller! - Fixes an issue where the wrongnetworkStatusandloadingvalue was emitted fromobservableQuerywhen callingfetchMorewith ano-cachefetch policy. ThenetworkStatusnow properly reports asreadyandloadingasfalseafter the result is returned.#12354
a24ef94Thanks @phryneas! - Fix missingmain.d.ctsfilev3.12.10Compare Source
Patch Changes
#12341
f2bb0b9Thanks @phryneas! -useReadQuery/useQueryRefHandlers: Fix a "hook order" warning that might be emitted in React 19 dev mode.#12342
219b26bThanks @phryneas! - Addgraphql-ws^6.0.3as a validpeerDependencyv3.12.9Compare Source
Patch Changes
#12321
daa4f33Thanks @jerelmiller! - Fix type ofextensionsinprotocolErrorsforApolloErrorand theonErrorlink. According to the multipart HTTP subscription protocol, fatal tranport errors follow the GraphQL error format which requireextensionsto be a map as its value instead of an array.#12318
b17968bThanks @jerelmiller! - AllowRetryLinkto retry an operation when fatal transport-level errors are emitted from multipart subscriptions.v3.12.8Compare Source
Patch Changes
#12292
3abd944Thanks @phryneas! - Remove unused dependencyresponse-iterator#12287
bf313a3Thanks @phryneas! - Fixes an issue whereclient.watchFragment/useFragmentwith@includescrashes when a separate cache update writes to the conditionally included fields.v3.12.7Compare Source
Patch Changes
d638ec3Thanks @jerelmiller! - Make fatal [tranport-level erroConfiguration
📅 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.
🔕 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.