Releases: apollographql/apollo-client
v3.6.9
Bug Fixes (from CHANGELOG.md
)
- Leave
fetchPolicy
unchanged whenskip: true
(or in standby) andnextFetchPolicy
is available, even ifvariables
change.
@benjamn in #9823
What's Changed
- removes deprecation language by @jpvajda in #9825
- Leave
fetchPolicy
unchanged whenskip: true
(or in standby) andnextFetchPolicy
is available by @benjamn in #9823
Full Changelog: v3.6.8...v3.6.9
v3.6.8
Bug Fixes (from CHANGELOG.md
)
-
Fix incorrect
variables
passed inFieldFunctionOptions
for nestedreadField
calls inread
andmerge
functions.
@stardustxx in #9808 -
Improve repository build scripts to work better on Windows.
@dylanwulf in #9805 -
Ensure
useQuery(query, { skip: true }).called === false
rather than always returningcalled
astrue
.
@KucharskiPiotr in #9798 -
Allow abandoned
reobserve
requests to unsubscribe from their underlyingObservable
.
@javier-garcia-meteologica in #9791
What's Changed (auto-generated by GitHub)
- fix: fixes FieldFunctionOptions return incorrect variables by @stardustxx in #9808
- Fix build config to work on Windows by @dylanwulf in #9805
- Fix: useQuery returns called value based on skip option. by @KucharskiPiotr in #9798
- fix: abort stale connection on reobserve (#9532) by @javier-garcia-meteologica in #9791
New Contributors 🎉 🙌 🥳
- @stardustxx made their first PR in #9808
- @dylanwulf made their first PR in #9805
- @KucharskiPiotr made their first PR in #9798
Full Changelog: v3.6.7...v3.6.8
v3.6.7
Bug Fixes (from CHANGELOG.md
)
- Fix regression (introduced in v3.6.0) that caused
BatchHttpLink
to discard pending batched queries on early completion of the underlyingObservable
.
@benjamn in #9793
What's Changed (auto-generated by GitHub)
- fixes pr 9600 by @jpvajda in #9776
- Update mutations.mdx by @Gregoirevda in #9708
- updates roadmap for june 2022 by @jpvajda in #9784
- fixes expansion panel by @jpvajda in #9777
- Backport PR #9793 from
release-3.7
branch tomain
by @benjamn in #9807
Full Changelog: v3.6.6...v3.6.7
v3.6.6
v3.6.5
Bug Fixes (from CHANGELOG.md
)
-
Restore pre-v3.6
variables
replacement behavior ofObservableQuery#reobserve
method, fixing a regression that prevented removal of variables.
@benjamn in #9741 -
Preserve
previousData
even when different query or client provided touseQuery
, instead of resettingpreviousData
to undefined in those cases, matching behavior prior to v3.6.0.
@benjamn in #9734 -
Fix bug where
onCompleted()
andonError()
are stale foruseMutation()
.
@charle692 in #9740 -
Limit scope of
DeepMerger
object reuse, and avoid usingObject.isFrozen
, which can introduce differences between development and production if objects that were frozen usingObject.freeze
in development are left unfrozen in production.
@benjamn in #9742 -
Properly merge
variables
from originaluseLazyQuery(query, { variables })
withvariables
passed to execution function.
@benjamn in #9758
What's Changed (auto-generated by GitHub)
- Preserve
previousData
even when different client or query passed touseQuery
by @benjamn in #9734 - Restore pre-v3.6
variables
replacement behavior ofObservableQuery#reobserve
method by @benjamn in #9741 - Clarify modifying response data in link docs by @hatched-kade in #9430
- adds documentation on file uploads by @jpvajda in #9744
- Fix improper syntax with spread operator by @mongodben in #9441
- Reduce confusion about the query component by @jpvajda in #9747
- Fix bug where onCompleted and onError are stale for useMutation. onCompleted and onError could not be changed while a mutation is executing. by @charle692 in #9740
- Restrict
DeepMerger
mutable object reuse to fix subtle production-only bug by @benjamn in #9742 - Merge
variables
from originaluseLazyQuery(query, { variables })
withvariables
passed to execution function by @benjamn in #9758
New Contributors
- @hatched-kade made their first contribution in #9430
- @mongodben made their first contribution in #9441
- @charle692 made their first contribution in #9740
Full Changelog: v3.6.4...v3.6.5
v3.6.4
Bug Fixes (from CHANGELOG.md
)
-
Guarantee
Concast
cleanup withoutObservable cancelled prematurely
rejection, potentially solving long-standing issues involving that error.
@benjamn in #9701 -
Ensure
useSubscription
subscriptions are properly restarted after unmounting/remounting by React 18 in<StrictMode>
.
@kazekyo in #9707
Improvements (from CHANGELOG.md
)
-
Internalize
useSyncExternalStore
shim, for more control thanuse-sync-external-store
provides, fixing some React Native issues.
@benjamn in #9675 and #9709 -
Provide
@apollo/client/**/*.cjs.native.js
versions of every@apollo/client/**/*.cjs
bundle (including dependenciests-invariant
andzen-observable-ts
) to help React Native's Metro bundler automatically resolve CommonJS entry point modules. These changes should render unnecessary the advice we gave in the v3.5.4 section below aboutmetro.config.js
.
@benjamn in #9716 -
Handle falsy
incoming
data more gracefully inoffetLimitPagination().merge
function.
@shobhitsharma in #9705
What's Changed (auto-generated by GitHub)
- Poll interval docs update by @jpvajda in #9687
- [docs] Fix markdown bug in rest link by @ryanrhee in #9698
- Internalize
useSyncExternalStore
shim, for more control thanuse-sync-external-store
provides by @benjamn in #9675 - Guarantee
Concast
cleanup withoutObservable cancelled prematurely
rejection by @benjamn in #9701 - docs: fix code snippet by @santiph in #9703
- Update example headers with authentication by @theill in #9621
- Fix a misplaced semicolon by @mlocher in #9498
- Correct GraphQL variable name "text" to "type" by @FumioNonaka-ksj in #9529
- Add apollo-multi-endpoint-link to community links by @jean9696 in #9301
readQuery
clarification by @avinoamsn in #9195- Update authentication.mdx by @volokolamskspb in #8630
- Add apollo-link-observable to community links by @dragozin in #8234
- apollo-codegen is deprecated, but the tooling documentation still suggests it by @krainboltgreene in #7517
- chore: corrected body params by @jpvajda in #9711
useSyncExternalStore
refinements by @benjamn in #9709- Help React Native import
@apollo/client/main.cjs
and other CommonJS bundles by @benjamn in #9716 - Revamping the "Why Apollo Client" article by @rkoron007 in #9719
- Fix useSubscription bug in React v18 StrictMode (#9664) by @kazekyo in #9707
New Contributors
- @ryanrhee made their first contribution in #9698
- @santiph made their first contribution in #9703
- @theill made their first contribution in #9621
- @mlocher made their first contribution in #9498
- @FumioNonaka-ksj made their first contribution in #9529
- @jean9696 made their first contribution in #9301
- @avinoamsn made their first contribution in #9195
- @volokolamskspb made their first contribution in #8630
- @dragozin made their first contribution in #8234
- @krainboltgreene made their first contribution in #7517
- @kazekyo made their first contribution in #9707
Full Changelog: v3.6.3...v3.6.4
v3.6.3
Bug Fixes (from CHANGELOG.md
)
-
Simplify
useQuery(query, { defaultOptions })
default options processing in order to fix bug whereskip: true
queries failed to execute upon switching toskip: false
.
@benjamn in #9665 -
Add tests of skipping/unskipping and
useLazyQuery
withdefaultOptions
, and fix a bug causing duplicate requests.
@benjamn in #9666 -
Update
ts-invariant
to version 0.10.2 to fix source map warnings.
@benjamn in #9672 -
Test that
useQuery
queries withskip: true
do not stall server-side rendering.
@nathanmarks and @benjamn in #9677 -
Prevent
useLazyQuery
from making duplicate requests when its execution function is first called, and stop rejecting thePromise
it returns whenresult.error
is defined.
@benjamn in #9684 -
Fix issue with
useQuery
returningloading: true
state during server-side rendering withskip: true
.
@nathanmarks in #9679
What's Changed (auto-generated by GitHub)
- Drastically simplify
useQuery
default options processing by @benjamn in #9665 - Docs: fix typo in subscriptions.mdx by @pobch in #9663
- Update
ts-invariant
to version 0.10.2 to fix source map warnings by @benjamn in #9672 - Update queries.mdx by @anilpai in #5466
- Fix failing regression test for skipped SSR
useQuery
stuck in standby by @benjamn in #9677 - Add a comment about a new use of the content-type header by @glasser in #9683
- Add missing assumeImmutableResults documentation by @henryqdineen in #9680
- Prevent
useLazyQuery
from making duplicate requests when execution function first called by @benjamn in #9684 - Fix issue with
useQuery
returningloading: true
state during server-side rendering withskip: true
by @nathanmarks in #9679 - Add description & example of how to handle multiple parameters in read() when declaring typePolicies. by @Moristotle in #6755
- Add link to ts-transform-graphql-tag in the performance docs by @hcharley in #5608
New Contributors
- @anilpai made their first contribution in #5466
- @nathanmarks made their first contribution in #9679
- @Moristotle made their first contribution in #6755
- @hcharley made their first contribution in #5608
Full Changelog: v3.6.2...v3.6.3
3.6.2
What's Changed
- fix Missing getServerSnapshot on React 18 and Next 12 by @hungphongbk in #9652
- Fix persistedQueries to pull graphqlErrors from networkErrors by @redaid113 in #9410
- Update Apollo PersistedQueries in the Apollo BatchHTTP Link by @iamchathu in #9637
- Fix code snippets for SubscriptionClient by @rkoron007 in #9634
- Correct the wrong link in ROADMAP.md by @yukukotani in #9650
- Update Copyright year in LICENSE by @garritfra in #9630
New Contributors
- @iamchathu made their first contribution in #9637
- @hungphongbk made their first contribution in #9652
- @yukukotani made their first contribution in #9650
- @redaid113 made their first contribution in #9410
Full Changelog: v3.6.1...v3.6.2
v3.6.1
What's Changed
- Remove
WatchQueryOptions["fetchBlockingPromise"]
option due to regressions by @benjamn in #9636 - chore(deps): update dependency graphql-ws to v5.8.1 by @renovate in #9592
- Update Full-stack tutorial links to point to Odyssey by @rkoron007 in #9610
- changes the way the parser filters the array of definitions by @rasulomaroff in #9622
- chore: updates roadmap by @jpvajda in #9628
New Contributors
- @rasulomaroff made their first contribution in #9622
- @jpvajda made their first contribution in #9628
Full Changelog: v3.6.0...v3.6.1
3.6.0
Note: for the most up-to-date version of this information, see
CHANGELOG.md
Apollo Client 3.6.0 (2022-04-26)
Potentially disruptive changes
-
Calling
fetchMore
for queries using thecache-and-network
ornetwork-only
fetch policies will no longer trigger additional network requests when cache results are complete. Instead, those complete cache results will be delivered as if using thecache-first
fetch policy.
@benjamn in #9504 -
Reimplement
useQuery
anduseLazyQuery
to use the proposeduseSyncExternalStore
API from React 18.
@brainkim and @benjamn in #8785 and #9596 -
Fixed bug where the
useLazyQuery
execution function would always use therefetch
method ofObservableQuery
, instead of properly reapplying the currentfetchPolicy
using thereobserve
method.
@benjamn in #9564Since this
reobserve
method is useful and used internally, we have now exposed it asuse[Lazy]Query(...).reobserve
(which optionally takes aPartial<WatchQueryOptions>
of new options), to supplement the existingrefetch
method. Note thatreobserve
permanently updates thevariables
and other options of theObservableQuery
, unlikerefetch({ ...variables })
, which does not save thosevariables
. -
The internal use of
options.fetchBlockingPromise
byuseQuery
anduseLazyQuery
may slightly delay the delivery of network results, compared to previous versions of Apollo Client. Since network results are already delivered asynchronously, these timing differences should not be disruptive in most cases. Nevertheless, please open an issue if the timing differences cause problems for your applications.
@benjamn in #9599
React 18
In both its peerDependencies
and its internal implementation, Apollo Client v3.6 should no longer prevent you from updating to React 18 in your applications.
Internally, we have refactored useQuery
and useLazyQuery
to be implemented in terms of React's new (shimmable) useSyncExternalStore
hook, demonstrating Apollo Client can serve as an external store with a referentially stable, synchronous API, as needed by React.
As part of this refactoring, we also improved the behavior of useQuery
and useLazyQuery
when used in <React.StrictMode>
, which double-renders components in development. While this double-rendering always results in calling useQuery
twice, forcing Apollo Client to create and then discard an unnecessary ObservableQuery
object, we now have multiple defenses in place against executing any network queries for the unused ObservableQuery
objects.
In upcoming v3.6.x and v3.7 (beta) releases, we will be completely overhauling our server-side rendering utilities (getDataFromTree
et al.), and introducing suspenseful versions of our hooks, to take full advantage of the new patterns React 18+ enables for data management libraries like Apollo Client.
Improvements
-
Allow
BatchLink
to cancel queued and in-flight operations.
@PowerKiKi and @benjamn in #9248 -
Add
GraphQLWsLink
in@apollo/client/link/subscriptions
. This link is similar to the existingWebSocketLink
in@apollo/client/link/ws
, but uses the newergraphql-ws
package and protocol instead of the oldersubscriptions-transport-ws
implementation. This functionality was technically first released in@apollo/[email protected]
, but semantically belongs in the 3.6.0 minor version.
@glasser in #9369 -
Allow passing
defaultOptions
touseQuery
to avoid clobbering/resetting existing options whenuseQuery
is called repeatedly.
@benjamn in #9563, superseding #9223 -
Provide additional context to
nextFetchPolicy
functions to assist withfetchPolicy
transitions. More details can be found in thenextFetchPolicy
documentation.
@benjamn in #9222 -
Remove nagging deprecation warning about passing an
options.updateQuery
function tofetchMore
.
@benjamn in #9504 -
Let
addTypenameToDocument
take anyASTNode
(includingDocumentNode
, as before).
@benjamn in #9595 -
Set
useMutation
internalisMounted
variable totrue
again when component remounted.
@devpeerapong in #9561
New Contributors
- @levrik made their first contribution in #9299
- @julienfouilhe made their first contribution in #9339
- @ctataryn made their first contribution in #9434
- @hennessyevan made their first contribution in #9470
- @rkoron007 made their first contribution in #9500
- @jergason made their first contribution in #9419
- @devpeerapong made their first contribution in #9561