diff --git a/frontend/src/components/duplicates/DuplicatesView.tsx b/frontend/src/components/duplicates/DuplicatesView.tsx index b9fc5aa..91555bf 100644 --- a/frontend/src/components/duplicates/DuplicatesView.tsx +++ b/frontend/src/components/duplicates/DuplicatesView.tsx @@ -386,8 +386,12 @@ const DuplicateGroupSection = memo(function DuplicateGroupSection({ ref={gridRef} className="grid gap-1 p-2" style={{ - gridTemplateColumns: - 'repeat(auto-fill, 160px)', + // Fix both axes so each cell reserves a 160×160 box before + // its thumbnail finishes loading — otherwise rows collapse to + // the height of an empty and jump when images arrive, + // which also throws off the virtualizer's row-height measure. + gridTemplateColumns: 'repeat(auto-fill, 160px)', + gridAutoRows: '160px', }} > {group.members.map((member) => {