demo · v140

Pull-to-refresh gate

The chromestatus story is interop: Firefox and Safari already propagate overscroll-behavior from the root element, Chrome was the outlier propagating from body. Pick where the property is set, and see whether pull-to-refresh / back-swipe gets blocked in each browser today.

overscroll-behavior set on:
where setChrome 139Chrome 140+FirefoxSafari

mobile pull-to-refresh

desktop back-swipe

/* Chrome 140 — works everywhere */
html {
  overscroll-behavior-y: contain; /* no pull-to-refresh */
  overscroll-behavior-x: contain; /* no back-swipe       */
}

/* Pre-140 — Chrome required this on body, FF/Safari needed it on html.
   Many sites shipped both. Now you can drop the body one. */

see also