fix(mobile): the iPhone Duo keeps list titles through folds and unfolds with its sidebar#23146

merged2
duo/followups
duo/sidebar
opened2d agobyJJulius Marminge
View on GitHubTwo-way sync enabledPR last imported 2d ago

Two iPhone Duo fold regressions:

  • List title after a fold. If the Duo folded while the other tab still showed a detail, that tab's list came back with an empty title. The navigation item kept its custom title view, but the bar no longer hosted it. Screens 5.0.0-t3.32 sets a detached custom title view again once the screen appears (fork source, in pingdotgg/react-native-screens#3).
  • Sidebar on unfold. Unfolding first hid the sidebar, then slid it in once JS saw the wider window. UIKit applies the split's preferred display mode while a collapsed split expands, before the new width reaches JS, and the collapsed split asked for secondaryOnly whenever a detail was open. A collapsed split now carries the display mode the expanded split will use, so the sidebar arrives with the expansion.

Verification

  • Mobile typecheck passes on this layer.
  • Recorded at the pre-restack commits named below, on development clients whose native fingerprint matches each commit (Screens t3.31 for 90514c987ad, t3.32 for the others). The restack onto main changed only lockfile peer strings in this layer.

List title after a fold. Open a pull request, switch to Threads, fold, then return to Pull requests:

Sidebar on unfold. Unfold with a thread open, twice. Before is b7c15a397b9, this layer's first commit, so both sides run the same Screens t3.32 client:

Before: the thread fills the window, then the sidebar slides in

After: the sidebar arrives with the split

Both recordings also show the thread feed losing its place during the unfold. #23147 fixes that.

Implemented with Claude Opus 5.5 in Claude Code, running in T3 Code.

πŸ€– Generated with Claude Code

Checks

All checks passed
Synced from GitHub

Thread transfer impact

βœ… Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wireβ€”5.0 KiBβ€”6.8 KiBβœ…
CodexThread snapshot wireβ€”3.8 KiBβ€”4.9 KiBβœ…
CodexLive turn WebSocket wireβ€”1.2 KiBβ€”2.0 KiBβœ…
CodexLive turn WebSocket decodedβ€”20.9 KiBβ€”29.3 KiBβœ…
CodexLive turn messagesβ€”2β€”8βœ…
ClaudeTotal thread wireβ€”5.0 KiBβ€”6.8 KiBβœ…
ClaudeThread snapshot wireβ€”3.8 KiBβ€”4.9 KiBβœ…
ClaudeLive turn WebSocket wireβ€”1.2 KiBβ€”2.0 KiBβœ…
ClaudeLive turn WebSocket decodedβ€”21.2 KiBβ€”29.3 KiBβœ…
ClaudeLive turn messagesβ€”2β€”8βœ…

Baseline: unavailable Β· PR result: b3ac8cd Β· Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Added 2 commits

  • fix(mobile): a list keeps its title after its tab was hidden through a fold29bdddb
  • fix(mobile): unfolding the Duo shows the sidebar as the split expandsb3ac8cd
Synced from GitHub

Approvability

Verdict: Approved at 6a92b05

Macroscope's review found this PR approvable β€” This is a focused iOS Duo fold/unfold bug fix: the native fork only restores detached title views, while the layout change preserves the existing sidebar preference during expansion. The dependency and lockfile updates select that narrowly scoped native fix without changing product defaults or deployment targets.

No code changes detected at b3ac8cd. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

Synced from GitHub

Review in Change Stack β†’

No actionable comments were generated in the recent review. πŸŽ‰

ℹ️ Recent review info
βš™οΈ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Team
  • Run ID: ea43badb-2ef1-4ef9-9f2e-69a057ea958b
πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between c23590a93552b91c4f527ffb31062cdae1c71107 and b3ac8cde0a0c1db8804d1d45b6f965d0c2f6ac55.

β›” Files ignored due to path filters: 1
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
πŸ“’ Files selected for processing: 6
  • apps/mobile/deps/react-native-screens-5.0.0-t3.31.tgz
  • apps/mobile/deps/react-native-screens-5.0.0-t3.32.tgz
  • apps/mobile/package.json
  • apps/mobile/src/features/layout/createWorkspaceStackNavigator.ios.tsx
  • apps/mobile/src/lib/layout.ts
  • docs/operations/mobile-screens-fork.md

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review.

πŸ“ Walkthrough

The workspace pane layout now exposes the sidebar visibility intended for expanded state. The iOS navigator uses that value for collapsed splits. The Screens fork dependency and documentation now reference tag t3.32.

Changes: iOS split-view sidebar behavior

Layer / File(s)Summary
Sidebar visibility layout data
apps/mobile/src/lib/layout.ts
WorkspacePaneLayout adds primarySidebarWhenExpanded. Inspector and supplementary layouts set it from primarySidebarPreferredVisible.
Navigator display mode and Screens fork
apps/mobile/src/features/layout/createWorkspaceStackNavigator.ios.tsx, apps/mobile/package.json, docs/operations/mobile-screens-fork.md
The iOS navigator uses primarySidebarWhenExpanded when the split is collapsed and primarySidebarVisible when expanded. The Screens archive and documentation reference tag t3.32.

Priority: βž– Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: mweinbach, t3dotgg

Merge Risk: βšͺ Minimal Β· up to b3ac8

The sidebar behavior and dependency update are ready to merge with no established blocking risk.

Pre-merge checks: Passed 3 Β· Failed 1

Failed Failed checks: 1 warning

Check nameStatusExplanationResolution
Description checkWarningThe description clearly explains both regressions, the implementation approach, and verification evidence. However, it omits the required Scope and approval section and does not provide a triaged issu…Add a Scope and approval section. Link the related issue or maintainer approval with the approval comment, or explain why this focused fix qualifies for the obvious-bug exemption.
Passed Passed checks: 3 passed
Check nameStatusExplanation
Title checkPassedThe title clearly identifies the mobile iPhone Duo fold and unfold regressions addressed by the pull request.
Linked Issues checkPassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes checkPassedCheck skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description clearly explains both regressions, the implementation approach, and verification evidence. However, it omits the required Scope and approval section and does not provide a triaged issue, maintainer approval, or an explanation for an obvious-bug exemption.

Resolution

Add a Scope and approval section. Link the related issue or maintainer approval with the approval comment, or explain why this focused fix qualifies for the obvious-bug exemption.

✨ Finishing Touches: πŸ’‘ 1
πŸ› οΈ Fix failing CI checks: πŸ’‘
  • Commit to this branch
  • Create a new PR
πŸ“ Generate docstrings
  • Commit to this branch
  • Create a new PR
πŸ§ͺ Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix Β· Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.