diff --git a/.changeset/seven-carrots-shop.md b/.changeset/seven-carrots-shop.md new file mode 100644 index 00000000..763039ca --- /dev/null +++ b/.changeset/seven-carrots-shop.md @@ -0,0 +1,5 @@ +--- +'@spotlightjs/core': patch +--- + +fix(core): Use effect and cleanup spotlight event target listeners diff --git a/packages/core/src/App.tsx b/packages/core/src/App.tsx index 220cc6b8..847b9e53 100644 --- a/packages/core/src/App.tsx +++ b/packages/core/src/App.tsx @@ -56,13 +56,23 @@ export default function App({ }; }, [integrations, sidecar]); - eventTarget.addEventListener('open', () => { - setOpen(true); - }); + useEffect(() => { + const onOpen = () => { + setOpen(true); + }; + + const onClose = () => { + setOpen(false); + }; - eventTarget.addEventListener('close', () => { - setOpen(false); - }); + eventTarget.addEventListener('open', onOpen); + eventTarget.addEventListener('close', onClose); + + return () => { + eventTarget.removeEventListener('open', onOpen); + eventTarget.removeEventListener('close', onClose); + }; + }, [eventTarget]); useEffect(() => { if (!isOpen) {