diff --git a/components/notifications.js b/components/notifications.js index 5e251b1f..b2215d8f 100644 --- a/components/notifications.js +++ b/components/notifications.js @@ -516,8 +516,15 @@ export default function Notifications ({ ssrData }) { const router = useRouter() const dat = useData(data, ssrData) - const { notifications: { notifications, lastChecked, cursor } } = useMemo(() => { - return dat || { notifications: {} } + const { notifications, lastChecked, cursor } = useMemo(() => { + if (!dat?.notifications) return {} + + // make sure we're using the oldest lastChecked we've seen + const retDat = { ...dat.notifications } + if (ssrData?.notifications?.lastChecked < retDat.lastChecked) { + retDat.lastChecked = ssrData.notifications.lastChecked + } + return retDat }, [dat]) useEffect(() => { diff --git a/lib/apollo.js b/lib/apollo.js index c724079f..5bafc082 100644 --- a/lib/apollo.js +++ b/lib/apollo.js @@ -29,10 +29,6 @@ function getClient (uri) { return new ApolloClient({ link: new HttpLink({ uri }), ssrMode: SSR, - // we need to delay the cache-first check to wait for the cache to rehydrate from ssr - // occasionally, for queries like notifications, the cache is not populated when useQuery - // is called causing an additional network request - ssrForceFetchDelay: 250, connectToDevTools: process.env.NODE_ENV !== 'production', cache: new InMemoryCache({ freezeResults: true, @@ -224,6 +220,7 @@ function getClient (uri) { } }), assumeImmutableResults: true, + queryDeduplication: true, defaultOptions: { watchQuery: { initialFetchPolicy: defaultFetchPolicy,