Repository navigation
Mobile: swipe left on Chat home to open Messages (#3774, 3 of 3) - #4448
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D7R7NNPw2Kpjnca1FFPvfH
- Hold the swipe while a menu or a row's actions are open over Chat home. - A pan the system cancels opens nothing (onEnd's success). - Tests pin the wiring: Chat home is wrapped, the pan starts only leftward, yields to vertical moves, pushes /messages, and holds under a menu. The gesture mock records offsets and enabled. - Docs state the Android limits (right-edge back, default transition until #4447) and the second way into Messages in screens.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D7R7NNPw2Kpjnca1FFPvfH
) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D7R7NNPw2Kpjnca1FFPvfH
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #3774
Asked by: Shawn (
shawnatomklein-eng), 2026-11-12 (coordinator chat on Paul's second account; person at the keyboard unconfirmed).The direction rests on Shawn's account of a conversation with Paul that was never written down. Shawn says they agreed Messages sits to the right of Chat home, reached by a swipe from right to left, like Instagram. That reverses Paul's last written note on #3738 (2026-11-08), which put Messages on the left, reached by a swipe right. Shawn's 2026-11-10 note on #4047 gives the reason: the left side belongs to the side menu idea. The decision is recorded on #3774: #3774 (comment)
Summary
On Chat home, a slide from right to left opens Messages. The top-right Messages button stays, so anyone who never finds the gesture, and VoiceOver or TalkBack users, still have one tap to it. Back from Messages works as on every pushed screen. Web got its Direct messages row and list in #4370 and #4445.
Comparable app: Instagram, where a swipe left from the feed (or the paper-plane button) opens messages.
How it behaves
It works from Chat home only, not the other tabs. It opens Messages on release, not following the finger. A long enough slide opens it, and so does a quick shorter flick.
Only a leftward slide starts it. A mostly vertical move stays the channel list's scroll.
It holds while the filter menu, the account menu or a row's actions menu is open. This follows the repo's rule that an open overlay holds screen gestures (
useHoldSwipeBack). A slide the system cancels opens nothing.Android limits:
app/(app)/_layout.tsx, one of the eight frozen hotspot files, so that change is filed as the integrator issue Mobile (integrator): Messages slides in from the right on Android too #4447.All three are written in the spec.
No new native module (
react-native-gesture-handlerwas already in the app), so it ships over the air.Recorded decisions this changes
spec/ui/mobile/navigation.md.Changes
apps/mobile/lib/chat/messages-swipe.ts: what counts as the swipe (thresholds andopensMessages), with tests.apps/mobile/components/chat/messages-swipe-area.tsx: the pan, held whileenabledis false.apps/mobile/app/(app)/(tabs)/index.tsx: Chat home wraps itself in it, held while a menu or a row's actions are open. A small diff, which keeps conflicts low.apps/mobile/vitest.setup.ts: the gesture mock now recordsactiveOffsetX,failOffsetYandenabled, so specs can pin them.apps/mobile/lib/chat/chat-home.spec.tsx: tests for the wiring, direction, vertical hand-over, route, cancelled pans and holding under a menu.spec/ui/mobile/navigation.md(§ Global entries, "Swipe to Messages") andspec/ui/mobile/screens.md(the Messages row).packages/validation/release-notes/claude-dm-phone-swipe-3774.md.Docs / Spec impact
Test plan
lib/chatandcomponents/chattests: 65 files and 1355 tests passing.tsc --noEmitand eslint are clean.Review
/diff-reviewran a full workflow round: 3 finders and a checker. Fixed:One finding was PLAUSIBLE (a long-press menu left open over Messages) and is fixed by holding the swipe while a row's actions are open; a device would confirm it. The branch's first push was a parking push made with
--no-verifybefore this PR; the review covered all of it, and its marker is on the pushed head.Release label
release:minorDebt spotted
Generated by Claude Code