reCAPTCHA widget is cut off at 320px on the contact form #215
Labels
No Label
P0
P1
P2
P3
accessibility
backend
bug
content
data-integrity
enhancement
frontend
infra
integration
owner
owner-input
performance
phase-7
phase-8
release-blocker
security
seo
ui
ux
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: null/Queue-North-Website#215
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found by rendering the deployed contact page. Build SHA
cf92354, live at v0.9.4.What is true now. Google's reCAPTCHA v2 checkbox widget is a fixed 304px wide and does not shrink:
So it only bites at or below ~344px — iPhone SE and older small Androids.
What it costs. The clipped 25px is the right-hand end of the widget, carrying the reCAPTCHA branding and the privacy/terms links. The checkbox itself is at the left and remains tappable, so the form is still submittable — this is presentation, not function, which is why P2. But Google's terms require the branding be visible where the badge is not otherwise shown, and a form visibly running off the screen edge undermines the trust the page exists to build.
As with the header CTA,
overflow-x: hiddeninsrc/index.cssmeans there is no scrollbar to reveal it.Where.
src/components/RecaptchaPlaceholder.jsxrenders an empty div inside a bordered wrapper withpx-4 py-3; Google injects the 304px iframe into that div.Fix direction. Scale the widget below ~360px rather than trying to narrow it — its width is fixed by Google and cannot be overridden by CSS on the iframe:
and reduce the wrapper height to match so the layout does not gain dead space.
Verify:
node scripts/qa-browser.mjs --paths /contact --viewports 320reports no element past the right edge, and the reCAPTCHA iframe's right edge is <= 320 at a 320px viewport.Fixed in
231f07c, released as v0.9.5 and DEPLOYED to production on 2026-08-18.Google's iframe is still exactly 304px — that cannot be changed — so the wrapper is scaled instead.
.recaptcha-scalein src/index.css appliestransform: scale(0.85)withtransform-origin: 0 0below 360px, and sets an explicit 66px height because transform does not affect layout and the form would otherwise keep reserving the full-size box and gain a strip of dead space.Measured on the live contact page at 320px:
The branding and the privacy/terms links are fully visible again. Checked at 360, 768, 800 and 1024 as well — unchanged there, since the media query only applies at 360 and below.
scripts/qa-browser.mjs --paths /contact --viewports 320reports no element past the right edge, where before it reported three.Verify: at a 320px viewport on https://queuenorth.com/contact, the reCAPTCHA iframe's getBoundingClientRect().right is 299 against a viewport of 320.