Releases: apollographql/apollo-client
v3.10.0-alpha.1
Patch Changes
- #11465
7623da7
Thanks @alessbell! - AddwatchFragment
method to the cache and expose it on ApolloClient, refactoruseFragment
usingwatchFragment
.
v3.9.7
v3.9.6
v3.9.5
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 error
v3.9.4
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 #11560
v3.9.3
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
Patch Changes
- #11552
6ac2b0c
Thanks @jerelmiller! - Fix import inuseLazyRef
causing import issues in the nextjs package.
v3.9.1
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
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 management- use LRU
WeakCache
instead ofMap
to keep a limited number of parsed results - cache is initiated lazily, only when needed
- expose
parse.resetCache()
method
- use LRU
-
#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 management- use LRU
WeakCache
instead ofWeakMap
to keep a limited number of hash results - hash cache is initiated lazily, only when needed
- expose
persistedLink.resetHashCache()
method - reset hash cache if the upstream server reports it doesn't accept persisted queries
- use LRU
-
#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
.function App() { const [loadQuery, queryRef, { refetch, fetchMore, reset }] = useLoadableQuery(query, options); return ( <> <button onClick={() => loadQuery(variables)}>Load query</button> <Suspense fallback={<SuspenseFallback />}> {queryRef && <Child queryRef={queryRef} />} </Suspense> </> ); } function Child({ queryRef }) { const { data } = useReadQuery(queryRef); // ... }
Begin preloading outside of React with createQueryPreloader
- #11412
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.const MyComponent({ queryRef }) { const { refetch, fetchMore } = useQueryRefHandlers(queryRef); // ... }
Bail out of optimisticResponse
updates with the IGNORE
sentinel object
-
#11410
07fcf6a
Thanks @sf-twingate! - Allow returningIGNORE
sentinel object fromoptimisticResponse
functions to bail-out from the optimistic update.Consider this example:
const UPDATE_COMMENT = gql` mutation UpdateComment($commentId: ID!, $commentContent: String!) { updateComment(commentId: $commentId, content: $commentContent) { id __typename content } ...
v3.9.0-rc.1
Patch Changes
- #11503
67f62e3
Thanks @jerelmiller! - Release changes fromv3.8.10