Skip to content

Stop the landing hero eating the first swipe on a phone - #444

Merged
JakeSCahill merged 2 commits into
mainfrom
jake/mobile-hero-scroll-clip
Sep 23, 2026
Merged

JakeSCahill merged 2 commits into
mainfrom
jake/mobile-hero-scroll-clip

Conversation

@JakeSCahill

Copy link
Copy Markdown
Contributor

The home hero clips glow layers that are bigger than the hero box. overflow: hidden also makes it a scroll container holding real overflow (280px vertically, 160px horizontally at 390px wide), and in WebKit a touch that starts inside a scroll container is latched to it. A hidden box can't be scrolled by the user, so the swipe does nothing and never reaches the page. The hero is the whole first screen on a phone, so the page looks frozen on load until you tap or swipe from below it.

overflow: clip clips the same way and creates no scroll container. hidden stays ahead of it for Safari < 16; autoprefixer and cssnano keep both.

Same change for /data-platform and /labs, which have the same hero. The ch3 heroes were already safe: they clip in a pointer-events: none layer.

Verified

  • Real WebKit at iPhone 13 metrics: the latching container is gone from under the first screen on all three pages, and full-page screenshots are pixel-identical (0 of 2,330,640 changed).
  • npx gulp lint clean; built CSS keeps overflow:hidden;overflow:clip.
  • New tests/hero-scroll in validate-build.yml; removing the clip line fails it.

Playwright's WebKit can't synthesize touch drags, so the finger-on-glass symptom needs a check on a real phone against the preview. Chromium scrolls fine either way.

🤖 Generated with Claude Code

The home hero paints glows that are deliberately bigger than the hero box, so
the section clips. Clipping with overflow: hidden also makes it a scroll
container, and it holds real scrollable overflow (280px vertically, 160px
horizontally at 390px wide). In WebKit a touch that starts inside a scroll
container is latched to that container; a hidden box cannot be scrolled by the
user, so the swipe does nothing and does not chain to the page. The hero is the
whole first screen on a phone, which is why the home page looked frozen on load
and only started scrolling after a tap or a swipe that began below the hero.

overflow: clip clips identically and creates no scroll container, so the touch
reaches the page. overflow: hidden stays ahead of it as the fallback for
Safari < 16, which ignores clip; autoprefixer and cssnano keep both
declarations. In real WebKit at iPhone 13 metrics the fix leaves the three
affected pages pixel-identical (full-page screenshot diff: 0 changed pixels of
2,330,640) and removes the latching container from under the first screen.

Same change for the two other landing heroes built the same way, /data-platform
and /labs. The ch3 heroes (cloud-data-platform, agentic-data-plane, connect,
self-managed) were already safe: they clip in a separate .ch3-hero-bg layer that
is pointer-events: none, so no touch ever lands in it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

Understand this PR’s impact

Explore downstream dependencies and potential security impact with Blast Radius.

View blast radius →

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 80805ae8-bf40-4874-b541-aae40e1b0fa9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 6fbd6d3a-44c9-4db4-9ec0-653e36a2bade

📥 Commits

Reviewing files that changed from the base of the PR and between 2cd3c28 and 5e4a27e.

📒 Files selected for processing (6)
  • .github/workflows/validate-build.yml
  • package.json
  • src/css/data-platform.css
  • src/css/home.css
  • src/css/labs-home.css
  • tests/hero-scroll/hero-scroll.test.js

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Landing-page hero styles now use overflow: clip after overflow: hidden fallback declarations. This applies to the data-platform, home, and labs heroes. New source-level tests verify the overflow order and reject scroll-container values. The package scripts and build workflow run these tests.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Severity of issue fixed: Low

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the primary fix: preventing the landing hero from blocking the first phone swipe.
Description check ✅ Passed The description accurately explains the WebKit issue, the overflow change, affected pages, fallback behavior, tests, and verification results.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (5 skipped: 5 …
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@netlify

netlify Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for docs-ui ready!

Name Link
🔨 Latest commit 88564e4
🔍 Latest deploy log https://app.netlify.com/projects/docs-ui/deploys/6ab2d693d20aa6000882ed50
😎 Deploy Preview https://deploy-preview-444--docs-ui.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 47 (🟢 up 5 from production)
Accessibility: 89 (no change from production)
Best Practices: 83 (no change from production)
SEO: 89 (no change from production)
PWA: -
View the detailed breakdown and full score reports
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@JakeSCahill
JakeSCahill marked this pull request as ready for review September 21, 2026 11:59
@JakeSCahill
JakeSCahill requested a review from a team September 21, 2026 11:59
@JakeSCahill
JakeSCahill merged commit c0dc113 into main Sep 23, 2026
7 checks passed
@JakeSCahill
JakeSCahill deleted the jake/mobile-hero-scroll-clip branch September 23, 2026 09:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants