Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/mobile
Problem
On my iPhone, reviewing screenshots in an in-app PR description is much harder than on GitHub web. Tapping an image appears to do nothing, then the viewer opens roughly 20 seconds later. Zooming into large screenshots and getting back out of the image are awkward. On GitHub web, I can simply pinch-zoom the page and keep reviewing.
The investigation below found a concrete gallery-wide loading gate that explains an apparent unresponsive tap. The exact 20-second duration and zoom/dismissal difficulties are my device observations; the agent verified the code path, not an on-device gesture reproduction.
Steps to reproduce
-
Open a PR in the iOS app whose description has many distinct large screenshots. My affected description has 24 images.
-
Use ordinary image Markdown, with blank lines around each image so this is independent of caption/inline-image rendering:
Before  After 
Replace the URLs with real uploaded PNG/JPEG attachments, and repeat with distinct screenshots.
-
On a cold load or slower mobile connection, tap one screenshot to inspect fine details.
-
Observe how long it takes before the viewer appears, then try zooming, panning and dismissing it.
-
A useful controlled case for maintainers: make a non-selected gallery image slow while keeping the selected image fast. The current implementation still waits for the slow sibling before presenting the selected image.
Expected behavior
A tap gives immediate feedback and opens the selected image as soon as that image is ready. Other gallery items should load lazily or in the background. There should be visible progress and a way to cancel pending opening. Zoom/pan and returning to the PR should be reliable and easy.
Actual behavior
The preview can take around 20 seconds to appear on my phone, making the tap look broken. Inspecting images and returning to the description is frustrating enough that I switch to GitHub web.
Investigation
Checked pingdotgg/t3code main at 9826dbb9904b2591bfbf60d1317486b59132f56b:
- PullRequestMarkdown builds a gallery from the description's image URLs, even though only one image was tapped.
- FilePreviewModal waits for every gallery resource URL to resolve. Until then it returns no preview UI. A sibling resolution failure closes the whole attempt.
- The iOS wrapper passes the entire group to presentFiles and itself returns null.
- T3NativeFilePresentation then awaits prepareFile for each URL sequentially, only presenting Quick Look after the loop. The selected index is applied after all files are prepared; the selected image is not prioritized. Remote preparation uses URLSession.shared.download.
This verifies a real source-level cause of slow opening and absent loading feedback. It does not establish a separate pinch-zoom implementation bug or the precise cause of the dismissal difficulty: iOS uses Quick Look and has dismissal code. Those interactions still need a native-device repro.
Related: #26663 covers images disappearing when a caption has no blank line before the image. The reproduction above uses blank lines to keep this viewer issue independent.
Impact
Major degradation or frequent failure when reviewing screenshot-heavy PRs on mobile.
Version or commit
Source investigated: main @ 9826dbb9904b2591bfbf60d1317486b59132f56b (2026-10-28). The affected iOS app's exact version/build has not yet been recorded.
Environment
T3 Code iOS app on iPhone. Screenshot-heavy GitHub PR descriptions. Exact iPhone model and iOS version not yet recorded. Native device automation was unavailable for the investigation.
Workaround
Open the PR on GitHub web, where page pinch-zoom works well. An optional mobile-only preference to open PR links externally would also help while the in-app viewer is being fixed.
Investigated and submitted by the reporter's agent: GPT-6.1 Sol in T3 Code, Codex harness. Device observations are from the reporter; source analysis is from the agent.
Activity