useScrollLock @astryx-svelte/core v0.5.2 · hooks

Usage

Locks body scroll when active by pinning the body with position: fixed. This prevents background scrolling behind modals and dialogs, which is necessary for iOS Safari where overscroll-behavior: contain does not work. Restores the original scroll position when unlocked. Pinning hides the document scrollbar, so where that scrollbar takes layout space (desktop) the hook holds its gutter open with scrollbar-gutter: stable for the duration of the lock. The page, including any position: fixed chrome, does not shift sideways.
ts
import { hooks } from '@astryx-svelte/core/hooks';

Best practices

GuidancePractices
DoUse when opening full-screen modals or dialogs to prevent background content from scrolling.
DoPass the same boolean that controls dialog visibility (e.g., isOpen) as the isLocked parameter.
Don'tUse for non-modal overlays like popovers or tooltips; users should be able to scroll away from those.

Parameters

ParameterTypeDefaultDescription
isLocked Required () => booleanwhether body scroll should be locked.