# fix\(mobile\): use native full-width sheets on iPhone Duo · PR \#22985 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/22985)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: merged

Source repository: pingdotgg/t3code

Source branch: duo/sheets

Target branch: duo/tab-sync

Head commit: fe869aba229e646d62674a08df914ce41c496803

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/22985)

[Commits](https://git.cafe/pingdotgg/t3code/pull/22985/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/22985/diffs?format=markdown)

## Description

---

Several folded Duo sheets stopped short of the available width or mixed content headers with rail controls. Opt these sheets into horizontal native bars and consolidate their headers at the route.

Ports the work from [#22551](https://github.com/pingdotgg/t3code/pull/22551) and [#20435](https://github.com/pingdotgg/t3code/pull/20435), retaining author credit. Uses the previous layer's Screens support; it does not add the redundant nativeKeepsBottomToolbar option.

Verified Git overview and thread settings in folded and unfolded landscape. Mobile typecheck and 31 focused tests passed. Shared Sheet was not reached on device; unfolded portrait remains unverified. It uses #22979's Screens t3.31 release.

Before:
![Before: Git overview stops short beside rail](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/79c6897e9dd331ec/34-sheet-git-overview-folded.png)

After:
![After: native header and full-width sheet](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/bc735915a5e14b44/51-git-overview-t331.png)

Implemented with Claude Opus 5.5 in Claude Code; integrated and reviewed with GPT-6.1 in Codex.


## Motion verification

Fresh, real-time 30 fps recordings from the exact commits labeled in the videos, using fingerprint-matched debug native clients. Black cards mark cuts between displays.

**Before**

![Before — PR 22980](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/e133626065a8cdaf/pr22980-sheets-BEFORE-ee9cd8c1b4a.mp4)

**After**

![After — PR 22980](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ed2b5c16cb7e054f/pr22980-sheets-AFTER-fe16f614bef.mp4)

These clean runs show Git overview and folded Thread settings. Branches/worktrees and unfolded Thread settings were not recorded.

### Unfold-after-sheets assertion

Unfolding after using folded sheets hit a React Native touch-handler double-detach assertion in one of two runs at both `ee9cd8c1b4a` and `fe16f614bef`. Screens t3.35 in #23149 fixes it: the touch handler is attached and detached only when that changes something.

![Unfold-after-sheets assertion, before t3.35](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f5b18439ba0d019a/finding-unfold-after-folded-sheets-crash-ee9cd8c1b4a-fe16f614bef.mp4)

### Restack

Restacked onto main `a12d6ed942` on 2026-10-21. The commits are unchanged apart from lockfile peer strings. The recordings above show the pre-restack commits they name.

