no-cache policy makes things not work.

When I set no-cache as the fetch policy for my query, lots of strange things happen.

1st problem: . load more button doesn’t work anymore, so to make it work again, I add notifyOnNetworkStatusChange: true, and it starts to work, but again 2nd problem appears.

2nd problem: Without my own mergeFunction, fetch more doesn’t work at all. So I also add this…

function mergeFunction(existing: [], incoming: []) {
  if (!incoming) return existing;
  if (!existing) return incoming;
  return [...existing, ...incoming];

const client = new ApolloClient({
  uri: subgraphUrl,
  cache: new InMemoryCache({
    typePolicies: {
      Query: {
        fields: {
          daos: {
            keyArgs: ['where', ['name']],
            merge: mergeFunction,
  connectToDevTools: true,

but 3rd problem appears.

3rd problem: After I click load more button, which executes this

const loadMore = async () => {
    if (fetchMore) {
        variables: {
          offset: visibleDaoList.length,

it turns out that in the list, records get duplicated over and over again and list never ends. Even though I got 10 records, I can click load more again and again and it shows duplicated stuff.

am I doing something wrong ? for some reason, I need to use no-cache