release before threshold
A short pull leaves the panel disarmed. Releasing resets the transform and logs a cancellation instead of refreshing.
demo · v149
Pull down while the list is already at the top. With the v149 CSS path enabled, the refresh panel is anchored to the top overscroll region; otherwise the page enables a pointer fallback so mouse, trackpad, and touch visitors can still test the threshold and cancel states.
chrome://flags/#overscroll-gestures in Chrome 149+ to test the native CSS gesture path. This page feature-detects scroll-anchor-overflow: gesture and only installs the JavaScript pointer fallback when the CSS path is not available.
@supports (scroll-anchor-overflow: gesture) {
.refresh-panel {
scroll-anchor-name: refresh-panel;
scroll-anchor-overflow: gesture;
}
.scroller {
overscroll-behavior-y: contain;
scroll-anchor-overflow-top: refresh-panel;
}
}
The live stylesheet above contains the same @supports-gated path. When unsupported, the fallback pointer recognizer updates the same panel and metrics so the cancel and commit states remain testable.
A short pull leaves the panel disarmed. Releasing resets the transform and logs a cancellation instead of refreshing.
Switch to overscroll-behavior-y: auto and the parent-chain meter increases, showing the pull leaking out of the list.
Select the failure outcome before a full pull. The old list stays visible and the panel returns to an idle state after reporting the failure.
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗