Troubleshooting
Fixes for iOS Safari quirks, video playback, fullscreen, and keyboard navigation.
iOS Safari
Viewport doesn't fill screen / bottom black space
Safari's collapsible address bar makes 100vh taller than the visible area. Use 100dvh:
Horizontal scroll / content overflow
100vw includes scrollbar width on iOS, pushing content past the edge. Use 100% and lock horizontal overflow:
Pull-to-refresh / rubber-band bounce
Safari's pull-to-refresh and elastic bounce fight vertical swipe gestures. Do not put overscroll-behavior: none on html, body. That kills normal page scroll. ReelPlayerOverlay, LightboxOverlay, and StoriesPlayerOverlay handle this on their own containers. For custom layouts, scope it:
SwipeToClose downward edge case. Any SwipeToClose with direction="down" (lightbox, stories player, custom overlays) is preempted on iOS Safari — the browser fires pull-to-refresh from the document level before the wrapper sees the touch. The overlay locks body scroll but the browser still owns vertical-pan handling at the root. Scope overscroll-behavior-y: contain on <html> only while the overlay is open and restore on close: