lock-scrollbars

A small browser utility to lock all scrollbars recursively.

'use client'
import React, { useEffect, useState } from 'react'
import { lockScrollbars } from 'lock-scrollbars'

function Modal({ open, children }) {
  const dialogRef = React.useRef(null)
  const unlockScrollbars = React.useRef(null)

  useEffect(() => {
    const dialogNode = dialogRef.current
    if (dialogNode) {
      if (open) {
        dialogNode.showModal()
        unlockScrollbars.current = lockScrollbars()
      } else {
        dialogNode.close()
        unlockScrollbars.current?.()
      }
    }
  }, [open])

  return <dialog ref={dialogRef}>{children</dialog>
}

Installation

npm install lock-scrollbars

Usage

Lock and unlock scrollbars programmatically using lockScrollbars.

Example

Modal Title

Open an example modal to lock the scrollbar.