jsx-eslint/eslint-plugin-react
View on GitHubFeature request: abortController + no-leaked-event-listener
Open
#3967 opened on Nov 21, 2025
bughelp wanted
Description
i've been using this pattern to clean up event listeners lately:
useEffect(() => {
const abortController = new AbortController();
const { signal } = abortController;
window.addEventListener(
"click",
(event) => {
doSomething();
},
{ signal },
);
window.addEventListener(
"resize",
(event) => {
doSomethingElse();
},
{ signal },
);
return () => {
abortController.abort();
};
}, []);
it makes the cleanup function much smaller (and harder to mess up), plus it helps with type inference (i.e. you don't need to explicitly type your event handlers).
i can obviously just disable the no-leaked-event-listener rule, but it would be nice if it could detect this pattern with a heuristic, and maybe even alert you e.g. if you forget to pass signal or forget to call abort().