Skip to content

Review 4410

Cindy Zhang edited this page Aug 28, 2026 · 1 revision

PR #4410 — blocked before review (non-mechanical merge conflict)

This page is not a review. No review of #4410 was performed at this head, no verdict was reached, and nothing was posted to the PR. It is not counted in the review totals on All reviews. It records why the refresh step stopped.

PR

#4410 fix(core): return focus to the opener when MobileNav closes by AKnassa — community contributor, opened 2026-07-26, last pushed 2026-08-06. Labels: CLA Signed, needs:code-review, community. No prior review or review comments exist on the PR.

VERSIONS

LOOP VERSION: 1.6.0 AUDIT RUBRIC: 1.13 (read; no audit performed)

Process guard

The PR changes 3 files, +454/−2:

  • .changeset/mobile-nav-focus-restore.md
  • packages/core/src/MobileNav/MobileNav.tsx
  • packages/core/src/MobileNav/MobileNavFocus.test.tsx

No package script, dependency, lockfile, workflow, executable script, environment/credential read, or build-time network change appears in the diff. The untrusted-PR guard is clean; the stop below is a merge-semantics stop, not a trust stop.

What was attempted

PR head fetched 1672af6e4477b6592f1d22d05ce844fecce728be (matches the head GitHub reports)
upstream main c6041cfd58ea832a79b50f98d7e0f64cd513852e
merge base 51ad6be0cb347a0171c3a85cb898b304e07a7915
merge direction main merged into the PR head; no rebase, no rewrite of author commits
outcome conflict in 1 file; merge aborted; nothing pushed, head unchanged

The conflict

packages/core/src/MobileNav/MobileNav.tsx is the only conflicted file.

The conflict is not mechanical. Current main now owns the same close/open region with three behavior changes the PR was explicitly written around:

  1. main holds and releases the scrollbar gutter around dialog open/close.
  2. main delays the native dialog.close() by resolveCloseDelay(dialog) so the slide-out can play.
  3. main routes native close requests through useLayerDismissal.

The PR captures the opener in that same region and restores focus from an effect cleanup whose correctness depends on the native dialog already being closed. The PR body calls out the semantic rule: if the real close() is deferred past that cleanup, focus restoration must move to the dialog's native close event. Current main is now in that deferred-close shape, so resolving the conflict requires deciding the new restore timing against the landed close semantics.

Where this leaves the PR

The branch is still about a real MobileNav focus-restoration bug, and nothing in this record rejects the idea. But the current head cannot be reviewed because it cannot merge into main, and the one conflict changes the behavior the fix is trying to prove.

Unblocking it is the author's: merge main in and decide the focus-restore ordering relative to the delayed native close path. Then the PR is reviewable at its refreshed head.

Delivery

Nothing was posted to the PR and nothing was pushed to the author's branch.

Clone this wiki locally