Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix fetchMore for queries with no-cache fetch policies #11974

Merged
merged 40 commits into from
Aug 1, 2024

Conversation

jerelmiller
Copy link
Member

@jerelmiller jerelmiller commented Jul 24, 2024

Fixes #11965

This fixes several issues when using fetchMore with no-cache queries.

  • Ensures we don't run multiple network requests unnecessarily
  • Does not write the fetchMore result to the cache
  • Ensures the component is re-rendered using the result of the updateQuery function.

Important

This PR updates fetchMore to force the user to provide an updateQuery function when using a query with a no-cache fetch policy. Without this, there is no way for the user to determine how to merge the result with the current query data since other mechanisms rely on the cache to perform this functionality. Calling fetchMore without an updateQuery function will now throw.

Copy link

changeset-bot bot commented Jul 24, 2024

🦋 Changeset detected

Latest commit: aca0f10

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

Copy link
Contributor

github-actions bot commented Jul 24, 2024

size-limit report 📦

Path Size
dist/apollo-client.min.cjs 39.3 KB (+0.19% 🔺)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/main.cjs" 47.97 KB (+0.18% 🔺)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/main.cjs" (production) 45.55 KB (+0.22% 🔺)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/index.js" 34.38 KB (+0.19% 🔺)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/index.js" (production) 32.27 KB (+0.21% 🔺)
import { ApolloProvider } from "dist/react/index.js" 1.26 KB (0%)
import { ApolloProvider } from "dist/react/index.js" (production) 1.24 KB (0%)
import { useQuery } from "dist/react/index.js" 5.21 KB (-0.04% 🔽)
import { useQuery } from "dist/react/index.js" (production) 4.3 KB (0%)
import { useLazyQuery } from "dist/react/index.js" 5.69 KB (-0.02% 🔽)
import { useLazyQuery } from "dist/react/index.js" (production) 4.77 KB (0%)
import { useMutation } from "dist/react/index.js" 3.62 KB (-0.03% 🔽)
import { useMutation } from "dist/react/index.js" (production) 2.84 KB (-0.04% 🔽)
import { useSubscription } from "dist/react/index.js" 4.41 KB (-0.03% 🔽)
import { useSubscription } from "dist/react/index.js" (production) 3.46 KB (0%)
import { useSuspenseQuery } from "dist/react/index.js" 5.49 KB (0%)
import { useSuspenseQuery } from "dist/react/index.js" (production) 4.15 KB (-0.03% 🔽)
import { useBackgroundQuery } from "dist/react/index.js" 4.99 KB (-0.02% 🔽)
import { useBackgroundQuery } from "dist/react/index.js" (production) 3.64 KB (-0.03% 🔽)
import { useLoadableQuery } from "dist/react/index.js" 5.07 KB (-0.02% 🔽)
import { useLoadableQuery } from "dist/react/index.js" (production) 3.72 KB (-0.06% 🔽)
import { useReadQuery } from "dist/react/index.js" 3.39 KB (-0.06% 🔽)
import { useReadQuery } from "dist/react/index.js" (production) 3.33 KB (-0.03% 🔽)
import { useFragment } from "dist/react/index.js" 2.32 KB (-0.05% 🔽)
import { useFragment } from "dist/react/index.js" (production) 2.27 KB (-0.05% 🔽)

Copy link

netlify bot commented Jul 24, 2024

Deploy Preview for apollo-client-docs ready!

Name Link
🔨 Latest commit aca0f10
🔍 Latest deploy log https://app.netlify.com/sites/apollo-client-docs/deploys/66ac0d8aeb80dd0008dcdb40
😎 Deploy Preview https://deploy-preview-11974--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.

@jerelmiller jerelmiller changed the title Provide failing test for #11965 Fix fetchMore for queries with no-cache fetch policies Jul 29, 2024
@jerelmiller jerelmiller force-pushed the jerel/fetch-more-bug branch from 4760823 to 87d23cb Compare July 29, 2024 22:32
Copy link
Member

@phryneas phryneas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good, but also some questions seem more prevalent with no-cache than they seem with a cache. Do we have good answers for those?

.changeset/nice-worms-juggle.md Outdated Show resolved Hide resolved
src/core/ObservableQuery.ts Outdated Show resolved Hide resolved
src/core/ObservableQuery.ts Outdated Show resolved Hide resolved
@jerelmiller jerelmiller merged commit c95848e into main Aug 1, 2024
36 checks passed
@jerelmiller jerelmiller deleted the jerel/fetch-more-bug branch August 1, 2024 22:45
@github-actions github-actions bot mentioned this pull request Aug 1, 2024
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 1, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

fetchMore with fetchPolicy: "no-cache" makes two requests
2 participants