diff --git a/packages/web/src/components/layout/DmListItem.tsx b/packages/web/src/components/layout/DmListItem.tsx
index 99f1cdca..47f10818 100644
--- a/packages/web/src/components/layout/DmListItem.tsx
+++ b/packages/web/src/components/layout/DmListItem.tsx
@@ -1,34 +1,12 @@
import type { DmChannel, User } from '@backspace/shared';
import { Avatar } from '../ui/Avatar';
+import { AvatarStack } from '../ui/AvatarStack';
import { Tooltip } from '../ui/Tooltip';
import { parseFederatedUsername, isSelf, isFederationGlobeApplicable } from '../../utils/identity';
import { useCanonicalUserView } from '../../utils/userViewLookup';
import { formatDmTimestamp, formatDmSidebarPreview } from '../../utils/dmFormatters';
import { getRejectedPeerOrigins, getAwaitingApprovalPeerOrigins } from '../../hooks/useWebSocket';
-/**
- * Renders a single avatar slot in the group DM avatar pair.
- * Extracted as a component so useCanonicalUserView can be called per-slot
- * (hooks must not be called inside a variable-length .map()).
- */
-function DmGroupAvatarSlot({ member, index }: { member: User; index: number }) {
- const canonical = useCanonicalUserView(member);
- const displayName = canonical.displayName ?? parseFederatedUsername(canonical.username).baseName;
- return (
-