Tweak modal overlay slide up on iOS#16143
Merged
Merged
Conversation
|
Hello 👋! When you're ready to run Chromatic, please apply the You will need to reapply the label each time you want to run Chromatic. |
e495d7e to
f7222b8
Compare
e31ac91 to
4806639
Compare
rBangay
reviewed
Jun 12, 2026
rBangay
reviewed
Jun 12, 2026
4806639 to
5015f44
Compare
rBangay
approved these changes
Jun 12, 2026
|
Seen on PROD (merged by @georgerichmond 10 minutes and 13 seconds ago) Please check your changes! |
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 does this change?
Fixes a visual jump when the modal opens on iOS Safari, and addresses several other latent bugs found during investigation.
iOS open animation — adds { preventScroll: true } to the initial .focus() call, stopping iOS Safari from scrolling the viewport to chase the off-screen element before the slide-up transition runs
Backdrop tap-to-close on iOS — switches from mousedown to pointerdown, which fires reliably for touch input
prefersReducedMotion initialisation — state is now initialised lazily via useState(() => prefersReducedMotion()) rather than set synchronously inside an effect, removing a cascading-render lint violation
Close sentinel value — uses -1 instead of 0 as the "close in progress" marker, since 0 is a valid setTimeout return value
SSR guard placement — moved the typeof document === 'undefined' check to after all hooks to comply with the rules of hooks
Why?
The modal was visibly jumping on iOS when opening rather than sliding up smoothly.
Screenshots