Skip to content
usefy

useEventListener

Events & gestures

A React hook for adding event listeners to DOM elements with automatic cleanup

Install

$ npm install @usefy/use-event-listener

Quick start

useEventListener.tsx
import { useEventListener } from "@usefy/use-event-listener";

function WindowResizeTracker() {
  const [size, setSize] = useState({ width: 0, height: 0 });

  useEventListener("resize", () => {
    setSize({ width: window.innerWidth, height: window.innerHeight });
  });

  return (
    <div>
      Window size: {size.width} × {size.height}
    </div>
  );
}

API reference

useEventListener(eventName, handler, element?, options?)

A hook that adds an event listener to the specified target.

Parameters

ParameterTypeDescription
eventNamestringThe event type to listen for (e.g., "click", "resize")
handler(event: Event) => voidCallback function called when the event fires
elementEventTargetTypeTarget element (defaults to window)
optionsUseEventListenerOptionsConfiguration options

Options

OptionTypeDefaultDescription
enabledbooleantrueWhether the event listener is active
capturebooleanfalseUse event capture phase instead of bubble
passivebooleanundefinedUse passive event listener for performance
oncebooleanfalseHandler is invoked once and then removed

Supported Target Types

type EventTargetType<T extends HTMLElement = HTMLElement> =
  | Window // window object
  | Document // document object
  | HTMLElement // any HTML element
  | React.RefObject<T | null> // React ref
  | null // no listener
  | undefined; // defaults to window

Returns

void


Go deeper

This page is the quick reference. For every example, prop, and edge case, read the full README — or open Storybook to change props live.

More in events & gestures