Blog hero image
JavaScript

Abort Controllers are awesome

They just removes event handlers without the need of references

By Coolemur
2025-03-01

Comparing Event Listener Removal: AbortController vs removeEventListener

When working with event listeners in JavaScript, it’s crucial to remove them properly to prevent memory leaks and unintended behavior. Traditionally, developers have relied on removeEventListener, but a more modern and flexible approach is using AbortController. Let’s compare both methods.

Using removeEventListener

function handleClick() {
  console.log("Button clicked!");
}

const button = document.querySelector("button");
button.addEventListener("click", handleClick);

// Later in the code, removing the event listener
button.removeEventListener("click", handleClick);

Pros:

  • Simple and widely supported.
  • Explicitly removes a known function.

Cons:

  • Requires keeping a reference to the handler function.
  • Harder to manage when adding multiple listeners dynamically.

Using AbortController

const controller = new AbortController();
const { signal } = controller;

function handleClick() {
  console.log("Button clicked!");
}

const button = document.querySelector("button");
button.addEventListener("click", handleClick, { signal });

// Later in the code, aborting the event listener
controller.abort();

Pros:

  • No need to store a reference to the event handler.
  • Can remove multiple listeners with a single abort() call.
  • Useful when working with event listeners inside useEffect in React.
  • Enhances readability and maintainability.

Cons:

  • Requires modern browser support (not available in older browsers like IE11).
  • Slightly more complex syntax.

Why Prefer AbortController?

  1. Better Cleanup: It ensures all associated event listeners are removed with a single abort() call.
  2. Scoped Listeners: Particularly useful when adding event listeners inside React components, where cleanup is needed on unmount.
  3. Reduces Memory Leaks: No need to track multiple listener references manually.

While removeEventListener is still widely used and valid, AbortController provides a more powerful and convenient way to manage event listeners efficiently, especially in modern JavaScript applications.

Back