Skip to content

Commit

Permalink
[DevTools] mock requestAnimationFrame with setTimeout as a temporary …
Browse files Browse the repository at this point in the history
…fix for #24626 (#24633)

* mock requestAnimationFrame as a temp workaround for #24626

* give name to constant variable
  • Loading branch information
mondaychen authored May 31, 2022
1 parent 0b54555 commit be1fd48
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions packages/react-devtools-extensions/src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,23 @@ const LOCAL_STORAGE_SUPPORTS_PROFILING_KEY =
const isChrome = getBrowserName() === 'Chrome';
const isEdge = getBrowserName() === 'Edge';

// since Chromium v102, requestAnimationFrame no longer fires in devtools_page (i.e. this file)
// mock requestAnimationFrame with setTimeout as a temporary workaround
// https://github.com/facebook/react/issues/24626
// The polyfill is based on https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0
if (isChrome || isEdge) {
const FRAME_TIME = 16;
let lastTime = 0;
window.requestAnimationFrame = function(callback, element) {
const now = window.performance.now();
const nextTime = Math.max(lastTime + FRAME_TIME, now);
return setTimeout(function() {
callback((lastTime = nextTime));
}, nextTime - now);
};
window.cancelAnimationFrame = clearTimeout;
}

let panelCreated = false;

// The renderer interface can't read saved component filters directly,
Expand Down

0 comments on commit be1fd48

Please sign in to comment.