diff --git a/dist/index.js b/dist/index.js
index 2d0d314a00082c458d2f551d715572cd1fa1b5c3..1954a52d7e25a2d733d57f2f32113af8a69a18bf 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -71,6 +71,29 @@ var PROVIDER_NAME = "TooltipProvider";
 var DEFAULT_DELAY_DURATION = 700;
 var TOOLTIP_OPEN = "tooltip.open";
 var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
+function useGuardedNodeSetter(setNode) {
+  const nodeRef = React.useRef(null);
+  const nodeCleanupGenerationRef = React.useRef(0);
+  return React.useCallback((node) => {
+    const syncNode = (nextNode) => {
+      if (nodeRef.current === nextNode) return;
+      nodeRef.current = nextNode;
+      setNode(nextNode);
+    };
+    nodeCleanupGenerationRef.current += 1;
+    const cleanupGeneration = nodeCleanupGenerationRef.current;
+    if (node) {
+      syncNode(node);
+      return;
+    }
+    queueMicrotask(() => {
+      if (nodeCleanupGenerationRef.current !== cleanupGeneration) {
+        return;
+      }
+      syncNode(null);
+    });
+  }, [setNode]);
+}
 var TooltipProvider = (props) => {
   const {
     __scopeTooltip,
@@ -128,6 +151,7 @@ var Tooltip = (props) => {
   const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);
   const popperScope = usePopperScope(__scopeTooltip);
   const [trigger, setTrigger] = React.useState(null);
+  const setTriggerRef = useGuardedNodeSetter(setTrigger);
   const contentId = (0, import_react_id.useId)();
   const openTimerRef = React.useRef(0);
   const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;
@@ -185,7 +209,7 @@ var Tooltip = (props) => {
       open,
       stateAttribute,
       trigger,
-      onTriggerChange: setTrigger,
+      onTriggerChange: setTriggerRef,
       onTriggerEnter: React.useCallback(() => {
         if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();
         else handleOpen();
diff --git a/dist/index.mjs b/dist/index.mjs
index 568389bf3ce8123fa6de6d298878b32d613e25cf..a809f654d8b2d84be0f5747384a180a0864c7d44 100644
--- a/dist/index.mjs
+++ b/dist/index.mjs
@@ -24,6 +24,29 @@ var PROVIDER_NAME = "TooltipProvider";
 var DEFAULT_DELAY_DURATION = 700;
 var TOOLTIP_OPEN = "tooltip.open";
 var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
+function useGuardedNodeSetter(setNode) {
+  const nodeRef = React.useRef(null);
+  const nodeCleanupGenerationRef = React.useRef(0);
+  return React.useCallback((node) => {
+    const syncNode = (nextNode) => {
+      if (nodeRef.current === nextNode) return;
+      nodeRef.current = nextNode;
+      setNode(nextNode);
+    };
+    nodeCleanupGenerationRef.current += 1;
+    const cleanupGeneration = nodeCleanupGenerationRef.current;
+    if (node) {
+      syncNode(node);
+      return;
+    }
+    queueMicrotask(() => {
+      if (nodeCleanupGenerationRef.current !== cleanupGeneration) {
+        return;
+      }
+      syncNode(null);
+    });
+  }, [setNode]);
+}
 var TooltipProvider = (props) => {
   const {
     __scopeTooltip,
@@ -81,6 +104,7 @@ var Tooltip = (props) => {
   const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);
   const popperScope = usePopperScope(__scopeTooltip);
   const [trigger, setTrigger] = React.useState(null);
+  const setTriggerRef = useGuardedNodeSetter(setTrigger);
   const contentId = useId();
   const openTimerRef = React.useRef(0);
   const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;
@@ -138,7 +162,7 @@ var Tooltip = (props) => {
       open,
       stateAttribute,
       trigger,
-      onTriggerChange: setTrigger,
+      onTriggerChange: setTriggerRef,
       onTriggerEnter: React.useCallback(() => {
         if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();
         else handleOpen();
