chore(deps-minor) Update Apollo GraphQL packages #1677
Merged
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:
3.8.1
->3.11.4
0.14.1
->0.15.0
Release Notes
apollographql/apollo-client (@apollo/client)
v3.11.4
Compare Source
Patch Changes
#11994
41b17e5
Thanks @jerelmiller! - Update theModifier
function type to allowcache.modify
to return deeply partial data.#11989
e609156
Thanks @phryneas! - Fix a potential crash when callingclearStore
while a query was running.Previously, calling
client.clearStore()
while a query was running had one of these results:useQuery
would stay in aloading: true
state.useLazyQuery
would stay in aloading: true
state, but also crash with a"Cannot read property 'data' of undefined"
error.Now, in both cases, the hook will enter an error state with a
networkError
, and the promise returned by theuseLazyQuery
execute
function will return a result in an error state.#11994
41b17e5
Thanks @jerelmiller! - Prevent accidental distribution oncache.modify
field modifiers when a field is a union type array.v3.11.3
Compare Source
Patch Changes
#11984
5db1659
Thanks @jerelmiller! - Fix an issue where multiple fetches with results that returned errors would sometimes set thedata
property with anerrorPolicy
ofnone
.#11974
c95848e
Thanks @jerelmiller! - Fix an issue wherefetchMore
would write its result data to the cache when using it with ano-cache
fetch policy.#11974
c95848e
Thanks @jerelmiller! - Fix an issue where executingfetchMore
with ano-cache
fetch policy could sometimes result in multiple network requests.#11974
c95848e
Thanks @jerelmiller! -Potentially disruptive change
When calling
fetchMore
with a query that has ano-cache
fetch policy,fetchMore
will now throw if anupdateQuery
function is not provided. This provides a mechanism to merge the results from thefetchMore
call with the query's previous result.v3.11.2
Compare Source
Patch Changes
38c0a2c
Thanks @jerelmiller! - Fix missinggetServerSnapshot
error when usinguseSubscription
on the server.v3.11.1
Compare Source
Patch Changes
#11969
061cab6
Thanks @jerelmiller! - Remove check forwindow.__APOLLO_CLIENT__
when determining whether to connect to Apollo Client Devtools whenconnectToDevtools
ordevtools.enabled
is not specified. This now simply checks to see if the application is in development mode.#11971
ecf77f6
Thanks @jerelmiller! - Prevent thesetTimeout
for suggesting devtools from running in non-browser environments.v3.11.0
Compare Source
Potentially Breaking Fixes
#11789
5793301
Thanks @phryneas! - Changes usages of theGraphQLError
type toGraphQLFormattedError
.This was a type bug - these errors were never
GraphQLError
instancesto begin with, and the
GraphQLError
class has additional properties that cannever be correctly rehydrated from a GraphQL result.
The correct type to use here is
GraphQLFormattedError
.Similarly, please ensure to use the type
FormattedExecutionResult
instead of
ExecutionResult
- the non-"Formatted" versions of these typesare for use on the server only, but don't get transported over the network.
#11626
228429a
Thanks @phryneas! - CallnextFetchPolicy
with "variables-changed" even if there is afetchPolicy
specified.Previously this would only be called when the current
fetchPolicy
was equal to thefetchPolicy
option or the option was not specified. If you usenextFetchPolicy
as a function, expect to see this function called more often.Due to this bug, this also meant that the
fetchPolicy
might be reset to the initialfetchPolicy
, even when you specified anextFetchPolicy
function. If you previously relied on this behavior, you will need to update yournextFetchPolicy
callback function to implement this resetting behavior.As an example, if your code looked like the following:
Update your function to the following to reimplement the resetting behavior:
Minor Changes
#11923
d88c7f8
Thanks @jerelmiller! - Add support forsubscribeToMore
function touseQueryRefHandlers
.#11854
3812800
Thanks @jcostello-atlassian! - Support extensions in useSubscription#11923
d88c7f8
Thanks @jerelmiller! - Add support forsubscribeToMore
function touseLoadableQuery
.#11863
98e44f7
Thanks @phryneas! - ReimplementuseSubscription
to fix rules of React violations.#11869
a69327c
Thanks @phryneas! - Rewrite big parts ofuseQuery
anduseLazyQuery
to be more compliant with the Rules of React and React Compiler#11936
1b23337
Thanks @jerelmiller! - Add the ability to specify a name for the client instance for use with Apollo Client Devtools. This is useful when instantiating multiple clients to identify the client instance more easily. This deprecates theconnectToDevtools
option in favor of a newdevtools
configuration.This option is backwards-compatible with
connectToDevtools
and will be used in the absense of adevtools
option.#11923
d88c7f8
Thanks @jerelmiller! - Add support forsubscribeToMore
function touseBackgroundQuery
.#11930
a768575
Thanks @jerelmiller! - Deprecates experimental schema testing utilities introduced in 3.10 in favor of recommending@apollo/graphql-testing-library
.Patch Changes
#11951
0de03af
Thanks @phryneas! - add React 19 RC topeerDependencies
#11927
2941824
Thanks @phryneas! - Addrestart
function touseSubscription
.#11949
4528918
Thanks @alessbell! - Remove deprecatedwatchFragment
option,canonizeResults
#11937
78332be
Thanks @phryneas! -createSchemaFetch
: simulate serialized errors instead of anApolloError
instance#11902
96422ce
Thanks @phryneas! - Addcause
field toApolloError
.#11806
8df6013
Thanks @phryneas! - MockLink: add query default variables if not specified in mock request#11926
3dd6432
Thanks @phryneas! -watchFragment
: forward additional options todiffOptions
#11946
7d833b8
Thanks @jerelmiller! - Fix issue where mutations were not accessible by Apollo Client Devtools in 3.11.0-rc.0.#11944
8f3d7eb
Thanks @sneyderdev! - AllowIgnoreModifier
to be returned from aoptimisticResponse
function when inferring from aTypedDocumentNode
when used with a generic argument.#11954
4a6e86a
Thanks @phryneas! - Document (and deprecate) the previously undocumentederrors
property on theuseQuery
QueryResult
type.#11719
09a6677
Thanks @phryneas! - Allow wrappingcreateQueryPreloader
#11921
70406bf
Thanks @phryneas! - addignoreResults
option touseSubscription
v3.10.8
Compare Source
Patch Changes
1f0460a
Thanks @jerelmiller! - Allowundefined
to be returned from acache.modify
modifier function when a generic type argument is used.v3.10.7
Compare Source
Patch Changes
#11901
10a8c0a
Thanks @phryneas! - updatecanUseLayoutEffect
check to also allow for layout effects in React Native#11861
1aed0e8
Thanks @henryqdineen! - Defend against non-serializable params ininvariantWrappers
#11905
29755da
Thanks @phryneas! - Add.d.cts
files for cjs bundles#11906
d104759
Thanks @phryneas! - chore: update TypeScript to 5.5v3.10.6
Compare Source
Patch Changes
f745558
Thanks @phryneas! -useMutation
: useuseIsomorphicLayoutEffect
instead ofuseLayoutEffect
v3.10.5
Compare Source
Patch Changes
#11888
7fb7939
Thanks @phryneas! - switchuseRenderGuard
to an approach not accessing React's internals#11511
6536369
Thanks @phryneas! -useLoadableQuery
: ensure thatloadQuery
is updated if the ApolloClient instance changes#11860
8740f19
Thanks @alessbell! - Fixes #11849 by reevaluatingwindow.fetch
each timeBatchHttpLink
uses it, if not configured viaoptions.fetch
. Takes the same approach as PR #8603 which fixed the same issue inHttpLink
.#11852
d502a69
Thanks @phryneas! - Fix a bug where calling theuseMutation
reset
function would point the hook to an outdatedclient
reference.#11329
3d164ea
Thanks @PaLy! - Fix graphQLErrors in Error Link if networkError.result is an empty string#11852
d502a69
Thanks @phryneas! - Prevent writing to a ref in render inuseMutation
.As a result, you might encounter problems in the future if you call the mutation's
execute
function during render. Please note that this was never supported behavior, and we strongly recommend against it.#11848
ad63924
Thanks @phryneas! - Ensure covariant behavior:MockedResponse<X,Y>
should be assignable toMockedResponse
#11851
45c47be
Thanks @phryneas! - Avoid usage of useRef in useInternalState to prevent ref access in render.#11877
634d91a
Thanks @phryneas! - Add missing name to tuple member (fix TS5084)#11851
45c47be
Thanks @phryneas! - Fix a bug whereuseLazyQuery
would not pick up a client change.v3.10.4
Compare Source
Patch Changes
#11838
8475346
Thanks @alex-kinokon! - Don’t prompt for DevTools installation for browser extension page#11839
6481fe1
Thanks @jerelmiller! - Fix a regression in 3.9.5 where a merge function that returned an incomplete result would not allow the client to refetch in order to fulfill the query.#11844
86984f2
Thanks @jerelmiller! - Honor the@nonreactive
directive when usingcache.watchFragment
or theuseFragment
hook to avoid rerendering when using these directives.#11824
47ad806
Thanks @phryneas! - Create brandedQueryRef
type without exposed properties.This change deprecates
QueryReference
in favor of aQueryRef
type that doesn't expose any properties.This change also updates
preloadQuery
to return a newPreloadedQueryRef
type, which exposes thetoPromise
function as it does today. This means that query refs produced byuseBackgroundQuery
anduseLoadableQuery
now returnQueryRef
types that do not have access to atoPromise
function, which was never meant to be used in combination with these hooks.While we tend to avoid any types of breaking changes in patch releases as this, this change was necessary to support an upcoming version of the React Server Component integration, which needed to omit the
toPromise
function that would otherwise have broken at runtime.Note that this is a TypeScript-only change. At runtime,
toPromise
is still present on all queryRefs currently created by this package - but we strongly want to discourage you from accessing it in all cases except for thePreloadedQueryRef
use case.Migration is as simple as replacing all references to
QueryReference
withQueryRef
, so it should be possible to do this with a search & replace in most code bases:#11845
4c5c820
Thanks @jerelmiller! - Remove@nonreactive
directives from queries passed toMockLink
to ensure they are properly matched.#11837
dff15b1
Thanks @jerelmiller! - Fix an issue where a polled query created in React strict mode may not stop polling after the component unmounts while using thecache-and-network
fetch policy.v3.10.3
Compare Source
Patch Changes
#11811
d67d7f9
Thanks @phryneas! - Adjust some types for React 19 compat#11834
7d8aad4
Thanks @psamim! - Fix error "Cannot convert object to primitive value"v3.10.2
Compare Source
Patch Changes
#11821
2675d3c
Thanks @jerelmiller! - Fix a regression where rerendering a component withuseBackgroundQuery
would recreate thequeryRef
instance when used with React's strict mode.#11821
2675d3c
Thanks @jerelmiller! - Revert the change introduced in3.9.10 via #11738 that disposed of queryRefs synchronously. This change caused too many issues with strict mode.
v3.10.1
Compare Source
Patch Changes
#11792
5876c35
Thanks @phryneas! - AutoCleanedCache: only schedule batched cache cleanup if the cache is full (fixes #11790)#11799
1aca7ed
Thanks @phryneas! -RenderPromises
: usecanonicalStringify
to serializevariables
to ensure query deduplication is properly applied even whenvariables
are specified in a different order.#11803
bf9dd17
Thanks @phryneas! - Update therehackt
dependency to^0.1.0
#11756
60592e9
Thanks @henryqdineen! - Fix operation.setContext() typev3.10.0
Compare Source
Minor Changes
#11605
e2dd4c9
Thanks @alessbell! - AddscreateMockFetch
utility for integration testing that includes the link chain#11760
acd1982
Thanks @alessbell! -createTestSchema
now uses graphql-toolsmergeResolvers
to merge resolvers instead of a shallow merge.#11764
f046aa9
Thanks @alessbell! - RenamecreateProxiedSchema
tocreateTestSchema
andcreateMockFetch
tocreateSchemaFetch
.#11777
5dfc79f
Thanks @alessbell! - CallcreateMockSchema
insidecreateTestSchema
.#11774
2583488
Thanks @alessbell! - Add ability to set min and max delay increateSchemaFetch
#11605
e2dd4c9
Thanks @alessbell! - Adds proxiedSchema and createMockSchema testing utilities#11465
7623da7
Thanks @alessbell! - AddwatchFragment
method to the cache and expose it on ApolloClient, refactoruseFragment
usingwatchFragment
.#11743
78891f9
Thanks @jerelmiller! - Remove alpha designation forqueryRef.toPromise()
to stabilize the API.#11743
78891f9
Thanks @jerelmiller! - Remove alpha designation forcreateQueryPreloader
to stabilize the API.#11783
440563a
Thanks @alessbell! - Moves new testing utilities to their own entrypoint,testing/experimental
Patch Changes
#11757
9825295
Thanks @phryneas! - AdjustuseReadQuery
wrapper logic to work with transported objects.#11771
e72cbba
Thanks @phryneas! - WrapuseQueryRefHandlers
inwrapHook
.#11754
80d2ba5
Thanks @alessbell! - ExportWatchFragmentOptions
andWatchFragmentResult
from main entrypoint and fix bug wherethis
wasn't bound to thewatchFragment
method onApolloClient
.v3.9.11
Compare Source
Patch Changes
04132af
Thanks @jerelmiller! - Fix an issue where usingskipToken
or theskip
option withuseSuspenseQuery
in React's strict mode would perform a network request.v3.9.10
Compare Source
Patch Changes
#11738
b1a5eb8
Thanks @jerelmiller! - Fix an issue where rerenderinguseBackgroundQuery
after thequeryRef
had been disposed, either via the auto dispose timeout or by unmountinguseReadQuery
, would cause thequeryRef
to be recreated potentially resulting in another network request.#11738
b1a5eb8
Thanks @jerelmiller! - Allow queryRefs to be disposed of synchronously when a suspense hook unmounts. This prevents some situations where using a suspense hook with the same query/variables as the disposed queryRef accidentally used the disposed queryRef rather than creating a new instance.#11670
cc5c03b
Thanks @phryneas! - Bail out ofexecuteSubSelectedArray
calls if the array has 0 elements.v3.9.9
Compare Source
Patch Changes
466ef82
Thanks @PiR1! - Immediately dispose of thequeryRef
ifuseBackgroundQuery
unmounts before the auto dispose timeout kicks in.v3.9.8
Compare Source
Patch Changes
#11706
8619bc7
Thanks @jerelmiller! - Fix issue in all suspense hooks where returning an empty array after callingfetchMore
would rerender the component with an empty list.#11694
835d5f3
Thanks @phryneas! - ExposesetErrorMessageHandler
from@apollo/client/dev
entrypoint.#11689
cb8ffe5
Thanks @jerelmiller! - Fix issue where passing a newfrom
option touseFragment
would first render with the previous value before rerendering with the correct value.#11713
642092c
Thanks @jerelmiller! - Fix issue where setting a defaultwatchQuery
option in theApolloClient
constructor could breakstartTransition
when used with suspense hooks.v3.9.7
Compare Source
Patch Changes
#11659
652a61e
Thanks @phryneas! - MakeuseRenderGuard
more resilient to changes in React internals.#11594
50b1097
Thanks @alessbell! - Adds a fix for multipart subscriptions that terminate with payload: nullv3.9.6
Compare Source
Patch Changes
#11617
f1d8bc4
Thanks @phryneas! - Allow Apollo Client instance to intercept hook functionality#11638
bf93ada
Thanks @jerelmiller! - Fix issue where callingfetchMore
from a suspense-enabled hook insidestartTransition
caused an unnecessary rerender.v3.9.5
Compare Source
Patch Changes
#11595
8c20955
Thanks @phryneas! - Bumps the dependencyrehackt
to 0.0.5#11592
1133469
Thanks @Stephen2! - StrengthenMockedResponse.newData
type#11579
1ba2fd9
Thanks @jerelmiller! - Fix issue where partial data is reported touseQuery
when usingnotifyOnNetworkStatusChange
after it errors while another overlapping query succeeds.#11579
1ba2fd9
Thanks @jerelmiller! - Fix an issue where a partial cache write for an errored query would result in automatically refetching that query.#11562
65ab695
Thanks @mspiess! - Mocks with an infinite delay no longer require result or errorv3.9.4
Compare Source
Patch Changes
#11403
b0c4f3a
Thanks @jerelmiller! - Fix issue inuseLazyQuery
that results in a double network call when calling the execute function with no arguments after having called it previously with another set of arguments.#11576
e855d00
Thanks @alessbell! - Revert PR #11202 to fix caching bug reported in #11560v3.9.3
Compare Source
Patch Changes
#11525
dce923a
Thanks @vezaynk! - Allows passing in client via options to useFragment#11558
8cba16f
Thanks @alessbell! - Fixunbound-method
linter error on ObservableQuery methods exposed on useQuery's QueryResult object.v3.9.2
Compare Source
Patch Changes
6ac2b0c
Thanks @jerelmiller! - Fix import inuseLazyRef
causing import issues in the nextjs package.v3.9.1
Compare Source
Patch Changes
#11516
8390fea
Thanks @phryneas! - Fix an incorrect string substitution in a warning message.#11515
c9bf93b
Thanks @vladar! - Avoid redundant refetchQueries call for mutation with no-cache policy (fixes #10238)#11545
84a6bea
Thanks @alessbell! - Remove error thrown byinFlightLinkObservables
intended to be removed before 3.9 release.v3.9.0
Compare Source
Minor Changes
Memory optimizations
#11424
62f3b6d
Thanks @phryneas! - Simplify RetryLink, fix potential memory leakHistorically,
RetryLink
would keep avalues
array of all previous values, in case the operation would get an additional subscriber at a later point in time.In practice, this could lead to a memory leak (#11393) and did not serve any further purpose, as the resulting observable would only be subscribed to by Apollo Client itself, and only once - it would be wrapped in a
Concast
before being exposed to the user, and thatConcast
would handle subscribers on its own.#11435
5cce53e
Thanks @phryneas! - DeprecatescanonizeResults
.Using
canonizeResults
can result in memory leaks so we generally do not recommend using this option anymore. A future version of Apollo Client will contain a similar feature without the risk of memory leaks.#11254
d08970d
Thanks @benjamn! - DecouplecanonicalStringify
fromObjectCanon
for better time and memory performance.#11356
cc4ac7e
Thanks @phryneas! - Fix a potential memory leak inFragmentRegistry.transform
andFragmentRegistry.findFragmentSpreads
that would hold on to passed-inDocumentNodes
for too long.#11370
25e2cb4
Thanks @phryneas! -parse
function: improve memory managementWeakCache
instead ofMap
to keep a limited number of parsed resultsparse.resetCache()
method#11389
139acd1
Thanks @phryneas! -documentTransform
: useoptimism
andWeakCache
instead of directly storing data on theTrie
#11358
7d939f8
Thanks @phryneas! - Fixes a potential memory leak inConcast
that might have been triggered whenConcast
was used outside of Apollo Client.#11344
bd26676
Thanks @phryneas! - Add aresetCache
method toDocumentTransform
and hookInMemoryCache.addTypenameTransform
up toInMemoryCache.gc
#11367
30d17bf
Thanks @phryneas! -print
: useWeakCache
instead ofWeakMap
#11387
4dce867
Thanks @phryneas! -QueryManager.transformCache
: useWeakCache
instead ofWeakMap
#11369
2a47164
Thanks @phryneas! - Persisted Query Link: improve memory managementWeakCache
instead ofWeakMap
to keep a limited number of hash resultspersistedLink.resetHashCache()
method#10804
221dd99
Thanks @phryneas! - use WeakMap in React Native with Hermes#11355
7d8e184
Thanks @phryneas! - InMemoryCache.gc now also triggers FragmentRegistry.resetCaches (if there is a FragmentRegistry)#11409
2e7203b
Thanks @phryneas! - Adds an experimentalApolloClient.getMemoryInternals
helper#11343
776631d
Thanks @phryneas! - Addreset
method toprint
, hook up toInMemoryCache.gc
Suspense-enabled data fetching on user interaction with
useLoadableQuery
#11300
a815873
Thanks @jerelmiller! - Introduces a newuseLoadableQuery
hook. This hook works similarly touseBackgroundQuery
in that it returns aqueryRef
that can be used to suspend a component via theuseReadQuery
hook. It provides a more ergonomic way to load the query during a user interaction (for example when wanting to preload some data) that would otherwise be clunky withuseBackgroundQuery
.Begin preloading outside of React with
createQueryPreloader
58db5c3
Thanks @jerelmiller! - Add the ability to start preloading a query outside React to begin fetching as early as possible. CallcreateQueryPreloader
to create apreloadQuery
function which can be called to start fetching a query. This returns aqueryRef
which is passed touseReadQuery
and suspended until the query is done fetching.Testing utility improvements
#11178
4d64a6f
Thanks @sebakerckhof! - Support re-using of mocks in the MockedProvider#6701
8d2b4e1
Thanks @prowe! - Ability to dynamically match mocksAdds support for a new property
MockedResponse.variableMatcher
: a predicate function that accepts avariables
param. Iftrue
, thevariables
will be passed into theResultFunction
to help dynamically build a response.New
useQueryRefHandlers
hook#11412
58db5c3
Thanks @jerelmiller! - Create a newuseQueryRefHandlers
hook that returnsrefetch
andfetchMore
functions for a givenqueryRef
. This is useful to get access to handlers for aqueryRef
that was created bycreateQueryPreloader
or when the handlers for aqueryRef
produced by a different component are inaccessible.Bail out of
optimisticResponse
updates with theIGNORE
sentinel object#11410
07fcf6a
Thanks @sf-twingate! - Allow returningIGNORE
sentinel object fromoptimisticResponse
functions to bail-out from the optimistic update.Consider this example:
The
IGNORE
sentinel can be destructured from the second parameter in the callback function signature passed to `optimisticConfiguration
📅 Schedule: Branch creation - "after 10pm every weekday,every weekend,before 5am every weekday" (UTC), 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.
👻 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.