fix(motion): eliminate residual mobile Portfolio flicker - #77
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
devrodri-com
marked this pull request as ready for review
August 5, 2026 02:07
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
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.
What changed
transition-alltotransition-shadow, while preserving the Framer Motion reveal, stagger, duration, hover/tap, links, focus-visible, and reduced-motion behavior.font-display: optional.The third append-only commit is
2b8050cfc52d77427bc84b8ad045e582ee220b12(fix(motion): stabilize mobile Portfolio entry in WebKit). It changes five files and does not touch dependencies, package manifests, copy, images, geometry, SEO, JSON-LD, CSP, Analytics, or forms.Root causes
Two independent contributors were confirmed:
transition-all duration-300and Framer Motion were both controlling opacity/transform on the same landing card. Production WebKit reproduced an opacity reset in 20/20 cold entries; Chromium reproduced an opacity/translate desynchronization in 20/20. Limiting the CSS transition to box shadow removes that ownership conflict.font-display: optionalprevents a very late swap from reflowing an already-visible card.Accepted tradeoff: on an extremely slow first navigation, the readable fallback font may remain for that navigation. Inter remains available on normal or cached loads and may be used from cache on later navigation.
Validation
Local validation on Node 22.23.2 / npm 9.9.4:
npm run typecheck— PASSnpm run lint— PASSnpm run test:run— 29 files / 268 tests PASSnpm run build— PASSnpm run ci— PASSBrowser evidence on the exact Preview head:
currentSrcchanges, duplicate image/font requests, and application/page errors: 0 in the Preview gates.Vercel Preview-only toolbar CSP messages and Analytics requests cancelled during navigation/context teardown were separated from product errors. Analytics initialized once and queued
page_view; backend delivery was not asserted. The form was validated without sending an external submission.Review status
dpl_9AfdxLTLK9TjCJKqHvKz23kfbbey2b8050cfc52d77427bc84b8ad045e582ee220b120f21e3a34d70bdb0296c8ea8c5c491dcd03ac220.This PR intentionally remains Draft and unmerged pending physical-device review on the phone that originally showed the flicker.