
Security News
curl Shuts Down Bug Bounty Program After Flood of AI Slop Reports
A surge of AI-generated vulnerability reports has pushed open source maintainers to rethink bug bounties and tighten security disclosure processes.
@bento/scroll-lock
Advanced tools
ScrollLock component primitive - prevents background scrolling with React Aria integration
The @bento/scroll-lock package provides both a ScrollLock component and a
useScrollLock hook that prevent background scrolling while overlays, modals,
or other UI elements require user focus. This primitive wraps React Aria's
usePreventScroll hook, adding Bento-specific data attributes for debugging and
styling.
npm install --save @bento/scroll-lock
The following properties are available to be used on the ScrollLock component:
| Prop | Type | Required | Description |
|---|---|---|---|
children | ReactNode | No | Optional children to render. |
| ScrollLock doesn't render any DOM elements, so children are optional. | |||
slot | string | No | A named part of a component that can be customized. This is implemented by the consuming component. |
| The exposed slot names of a component are available in the components documentation. | |||
slots | Record<string, object | Function> | No | An object that contains the customizations for the slots. |
| The main way you interact with the slot system as a consumer. | |||
isDisabled | boolean | No | Whether scroll locking is disabled. |
| When true, scrolling is not prevented. |
The simplest usage is to render the ScrollLock component. It will prevent
scrolling while mounted.
<Source language='tsx' code={ BasicExample } />
For more control or when building custom components, use the useScrollLock
hook directly.
<Source language='tsx' code={ HookExample } />
ScrollLock is commonly used with modals and overlays to prevent background scrolling while the overlay is active.
<Source language='tsx' code={ ModalExample } />
The ScrollLock component automatically handles accessibility features:
useFocusScope and useModalScrollLock wraps React Aria's usePreventScroll hook, which provides
comprehensive scroll prevention including scrollbar compensation, mobile
support, and proper cleanup. The Bento wrapper adds data attributes for
debugging and provides a consistent API with other Bento hooks and components.
ScrollLock is created using the @bento/slots package and supports the standard
slot and slots props for integration with parent components. Since
ScrollLock doesn't render DOM elements, it doesn't define internal slot
assignments.
See the @bento/slots package for more information on how to use the slot and
slots properties.
Since ScrollLock doesn't render any DOM elements, styling is applied through the
data attributes it adds to document.body. You can use these attributes to
style your application based on scroll lock state.
The following data attributes are applied to document.body:
| Attribute | Description | Example Values |
|---|---|---|
data-scroll-locked | Indicates when scroll lock is active | "true" |
These data attributes can be targeted in your CSS:
body[data-scroll-locked="true"] {
/* Styles when scroll is locked */
}
ScrollLock is SSR-safe and will not execute scroll prevention logic on the
server. The component and hook check for the existence of document before
applying scroll prevention, ensuring compatibility with server-side rendering
environments.
FAQs
ScrollLock component primitive - prevents background scrolling with React Aria integration
We found that @bento/scroll-lock demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
A surge of AI-generated vulnerability reports has pushed open source maintainers to rethink bug bounties and tighten security disclosure processes.

Product
Scan results now load faster and remain consistent over time, with stable URLs and on-demand rescans for fresh security data.

Product
Socket's new Alert Details page is designed to surface more context, with a clearer layout, reachability dependency chains, and structured review.