apollographql / apollo-client

:rocket:  A fully-featured, production ready caching GraphQL client for every UI framework and GraphQL server.
https://apollographql.com/client
MIT License
19.34k stars 2.66k forks source link

Fix issue where a merge function that returns an incomplete result would not allow the client to refetch from network #11839

Closed jerelmiller closed 4 months ago

jerelmiller commented 4 months ago

Fixes #11759

Modifies the logic added in #11579 which fixed an issue where a partial cache update caused it to be reported to a query that had an error. There were some situations in which a partial cache write should cause a refetch from the server in order to fulfill the data requirements in the query. The check from #11579 did not allow this to perform correctly as it assumed that all partial cache updates were "bad" and did not report them.

This change tweaks the check to only swallow the partial update if the query has previously errored, which maintains the change that #11579 was intending to fix. This reverts back to more closely resemble the logic from 3.9.4 which allowed the partial cache result to cause a network request.

changeset-bot[bot] commented 4 months ago

🦋 Changeset detected

Latest commit: a4750ee5b6438c18b9cd060de12b2f1910656eca

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package | Name | Type | | -------------- | ----- | | @apollo/client | Patch |

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

github-actions[bot] commented 4 months ago

size-limit report 📦

Path Size
dist/apollo-client.min.cjs 38.65 KB (-0.02% 🔽)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/main.cjs" 47.42 KB (-0.02% 🔽)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/main.cjs" (production) 44.99 KB (-0.02% 🔽)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/index.js" 34.2 KB (-0.02% 🔽)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/index.js" (production) 32.05 KB (-0.02% 🔽)
import { ApolloProvider } from "dist/react/index.js" 1.23 KB (0%)
import { ApolloProvider } from "dist/react/index.js" (production) 1.22 KB (0%)
import { useQuery } from "dist/react/index.js" 5.28 KB (0%)
import { useQuery } from "dist/react/index.js" (production) 4.36 KB (0%)
import { useLazyQuery } from "dist/react/index.js" 5.52 KB (0%)
import { useLazyQuery } from "dist/react/index.js" (production) 4.59 KB (0%)
import { useMutation } from "dist/react/index.js" 3.52 KB (0%)
import { useMutation } from "dist/react/index.js" (production) 2.74 KB (0%)
import { useSubscription } from "dist/react/index.js" 3.21 KB (0%)
import { useSubscription } from "dist/react/index.js" (production) 2.4 KB (0%)
import { useSuspenseQuery } from "dist/react/index.js" 5.44 KB (0%)
import { useSuspenseQuery } from "dist/react/index.js" (production) 4.1 KB (0%)
import { useBackgroundQuery } from "dist/react/index.js" 4.96 KB (0%)
import { useBackgroundQuery } from "dist/react/index.js" (production) 3.61 KB (0%)
import { useLoadableQuery } from "dist/react/index.js" 5.07 KB (0%)
import { useLoadableQuery } from "dist/react/index.js" (production) 3.72 KB (0%)
import { useReadQuery } from "dist/react/index.js" 3.33 KB (0%)
import { useReadQuery } from "dist/react/index.js" (production) 3.27 KB (0%)
import { useFragment } from "dist/react/index.js" 2.29 KB (0%)
import { useFragment } from "dist/react/index.js" (production) 2.23 KB (0%)
jerelmiller commented 4 months ago

/release:pr

github-actions[bot] commented 4 months ago

A new release has been made for this PR. You can install it with:

npm i @apollo/client@0.0.0-pr-11839-20240510211204
netlify[bot] commented 4 months ago

Deploy Preview for apollo-client-docs ready!

Name Link
Latest commit 2100d302d2a73cead2b5e3b3ba5644b67b297752
Latest deploy log https://app.netlify.com/sites/apollo-client-docs/deploys/663e8c8c0ca1780008e5cc11
Deploy Preview https://deploy-preview-11839--apollo-client-docs.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

netlify[bot] commented 4 months ago

Deploy Preview for apollo-client-docs ready!

Name Link
Latest commit a4750ee5b6438c18b9cd060de12b2f1910656eca
Latest deploy log https://app.netlify.com/sites/apollo-client-docs/deploys/6643986b558786000896ec22
Deploy Preview https://deploy-preview-11839--apollo-client-docs.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

phryneas commented 4 months ago

There's no perfect behaviour here, but this is probably less surprising.