Дак в том и проблема. Что в ios вешаешь hidden а блок скролиться)
import { useLayoutEffect } from 'react';
const preventDefault = e => e.preventDefault();
export const useLockBodyScroll = () => {
useLayoutEffect(() => {
document.body.addEventListener('touchmove', preventDefault, { passive: false }); // ебаный Safari на iOS
document.body.style.overflow = 'hidden';
document.body.style.position = 'relative';
return () => {
document.body.removeEventListener('touchmove', preventDefault, { passive: false }); // ебаный Safari на iOS
document.body.style.overflow = 'visible';
document.body.style.position = 'unset';
};
}, []);
}; попробуй это, у меня работало