From 17f6230dd93c1e7ac56ca19c76971823f98974ae Mon Sep 17 00:00:00 2001 From: VasN Date: Wed, 25 Feb 2026 12:50:27 +0530 Subject: [PATCH] fix: deduplicate posts by ID when building feed items Add a Set-based dedup in the items useMemo as a defensive fallback. When pages contain overlapping posts (e.g. stale cursor returns first page content as page 2), duplicates are now skipped client-side. --- packages/shared/src/hooks/useFeed.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/shared/src/hooks/useFeed.ts b/packages/shared/src/hooks/useFeed.ts index dd93602116..2e9ccf0c74 100644 --- a/packages/shared/src/hooks/useFeed.ts +++ b/packages/shared/src/hooks/useFeed.ts @@ -316,8 +316,14 @@ export default function useFeed( const plusEntryAsFirstCard = settings?.plusEntry?.flags?.asFirstCard; if (feedQuery.data) { + const seenPostIds = new Set(); newItems = feedQuery.data.pages.reduce((acc, { page }, pageIndex) => { page.edges.forEach(({ node }, index: number) => { + if (seenPostIds.has(node.id)) { + return; + } + seenPostIds.add(node.id); + const adIndex = acc.length; const adItem = getAd({ index: adIndex });