diff --git a/packages/react-reconciler/src/ReactUpdateQueue.new.js b/packages/react-reconciler/src/ReactUpdateQueue.new.js index 0bdcbf580764a..06ee95a92c705 100644 --- a/packages/react-reconciler/src/ReactUpdateQueue.new.js +++ b/packages/react-reconciler/src/ReactUpdateQueue.new.js @@ -580,7 +580,12 @@ export function processUpdateQueue( instance, ); const callback = update.callback; - if (callback !== null) { + if ( + callback !== null && + // If the update was already committed, we should not queue its + // callback again. + update.lane !== NoLane + ) { workInProgress.flags |= Callback; const effects = queue.effects; if (effects === null) { diff --git a/packages/react-reconciler/src/ReactUpdateQueue.old.js b/packages/react-reconciler/src/ReactUpdateQueue.old.js index 209abfb32e743..520f993fbd81f 100644 --- a/packages/react-reconciler/src/ReactUpdateQueue.old.js +++ b/packages/react-reconciler/src/ReactUpdateQueue.old.js @@ -580,7 +580,12 @@ export function processUpdateQueue( instance, ); const callback = update.callback; - if (callback !== null) { + if ( + callback !== null && + // If the update was already committed, we should not queue its + // callback again. + update.lane !== NoLane + ) { workInProgress.flags |= Callback; const effects = queue.effects; if (effects === null) {