diff --git a/apps/web/components/memories-grid.tsx b/apps/web/components/memories-grid.tsx index d2f93d544..ef617f809 100644 --- a/apps/web/components/memories-grid.tsx +++ b/apps/web/components/memories-grid.tsx @@ -394,11 +394,14 @@ export function MemoriesGrid({ return items }, [documents, isMobile, hasQuickNote, isSelectionMode, selectedDocumentIds]) - // Stable key for Masonry based on document IDs, not item values + // Reset Masonry when the actual rendered item set changes. Masonic caches + // positions by index, so mobile removing the quick note must remount it. const masonryKey = useMemo(() => { - const docIds = documents.map((d) => d.id).join(",") - return `masonry-${documents.length}-${docIds}-${isChatOpen}-${hasQuickNote}` - }, [documents, isChatOpen, hasQuickNote]) + const itemIds = masonryItems.map((item) => item.id).join(",") + return `masonry-${isMobile ? "mobile" : "desktop"}-${masonryItems.length}-${itemIds}-${isChatOpen}` + }, [masonryItems, isChatOpen, isMobile]) + + const getMasonryItemKey = useCallback((item: MasonryItem) => item.id, []) const isLoadingMore = isFetchingNextPage @@ -542,9 +545,9 @@ export function MemoriesGrid({ {!isEmpty && !isSelectionMode && (