WEB-UX-004 — Move focus to main content after SPA path navigation - #658
Merged
Conversation
✅ Deploy Preview for luminous-fox-7c393f ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
This was referenced Aug 14, 2026
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.
Outcome
Move keyboard focus into the destination main content after a committed client-side pathname transition, unless the destination or user has already established newer connected focus. Preserve initial-load focus, same-path URL changes, scrolling, released mobile-menu behavior, and the existing skip-link target.
Officer impact: No officer duty or backend workflow changes. After publication, signed-out and signed-in keyboard users will enter the new page content after SPA path navigation instead of remaining in persistent or hidden navigation.
Officer documentation:
docs/officers/PUBLISH_AND_CHECK.mdDeployment evidence: Exact-head CI run
31778085226passed all five jobs. Netlify deploy-preview6a7ebc3388b62b0008ee950fis ready at exact heada411cb4e, review #658,published_at:null, with no Netlify Functions or edge functions; header and redirect checks passed and Pages-changed skipped as expected. Its root and/shopreturn HTTPS 200 withX-Robots-Tag:noindex. Signed-out preview review passed at 1280×900 and 390×844: initial load leftbodyfocused with no cue; navigation focused exactmain#main-contentat scroll(0,0); the fixed cue was fully inset at top 94px and 6px on the other sides, pointer-inert, z98 below navigation z99, and caused no horizontal overflow; the phone menu closed tohide__nav. Website publication andrunmprc.comverification remain pending. No Firebase, outside-provider, account/sign-in, production-data, directory-availability, or connected-backend change is included.Exact candidate
a411cb4ebcfb4f1f05b3883721aa55f3d72bc701eac1fe8b86f0e871d2fc41e5338dceace38a04ec3265a55cb92df1ebb5401f2647ff81e4ca3af0b8+731/-6ea9c32ae30493a11e42206327055cbd0001c21b0e378ed09caa6e2a55bead576d50ff54aab64b1bdf73bea756946238df80453d11bfc7ba540cecf4e8557e5ef39166cdd26c2de8e1c0ef5b483058dab54da463c2ed2f2265e25b7df290c5e96fcccd40bfb210bc10e2a6ee31f03b2c6b5d021f5a441280aa7dc2424e25e7c36Behavior
main#main-contentonce withpreventScrollonly from the unchanged origin or lost/disconnected focus.tabIndex={-1}without adding main to ordinary Tab order.Trustworthy RED
ea14897d70e85f27f2a5c80d4422a4faad31ddaa4055fee99672d2252829f733; 1 failed / 362 skipped because persistent navigation retained focus.5d5f37a666ee61f4ef9b3481f345ed9371002a9635a5aa2b84518fb059727102; the focused cue test failed because the scoped rule was absent.Scope and safety
Only these paths change:
src/components/ScrollToTop.jsxsrc/App.jsxsrc/App.test.jsxsrc/index.csssrc/headerClearance.test.jsdocs/officers/PUBLISH_AND_CHECK.mdDirectory availability remains literal
false. This adds no route, request, retry, analytics event, log, storage, authentication, membership, photo/search, Firebase, provider, or production-data behavior. Production publication and exact live verification will be recorded separately from merge and preview evidence.Hosted evidence
6a7ebc3388b62b0008ee950f, ready, exact head/review/branch, unpublishedstatic/js/main.9cf94ee6.jscontains thepreventScrollhandoff;static/css/main.31f728fa.csscontains the scoped fixed cueCloses #657