diff --git a/src/screens/Messages/ChatList.tsx b/src/screens/Messages/ChatList.tsx
index 83c4b0c004..387fcd2bd1 100644
--- a/src/screens/Messages/ChatList.tsx
+++ b/src/screens/Messages/ChatList.tsx
@@ -451,6 +451,12 @@ export function Header({
const {gtMobile} = useBreakpoints()
const requireEmailVerification = useRequireEmailVerification()
const leftConvos = useLeftConvos()
+ const {isWithinSplitView} = useIsWithinSplitView()
+
+ // In split view, the left column (and this header) stays mounted while the
+ // right column shows the selected route. Pushing would stack duplicate routes
+ // on repeated clicks, so navigate instead to dedupe by route + params.
+ const action = isWithinSplitView ? 'navigate' : 'push'
const {data: unreadInboxData, hasNextPage: hasMoreRequests} =
useListConvosQuery({
@@ -494,9 +500,11 @@ export function Header({
count={inboxAllConvos.length}
more={hasMoreRequests}
variant="solid"
+ action={action}
/>