dillon1000/react

Commit

Refactored how React/DevTools log Timeline performance data (#23102)

Until now, DEV and PROFILING builds of React recorded Timeline profiling data using the User Timing API. This commit changes things so that React records this data by calling methods on the DevTools hook. (For now, DevTools still records that data using the User Timing API, to match previous behavior.)

This commit is large but most of it is just moving things around:

* New methods have been added to the DevTools hook (in "backend/profilingHooks") for recording the Timeline performance events.
* Reconciler's "ReactFiberDevToolsHook" has been updated to call these new methods (when they're present).
* User Timing method calls in "SchedulingProfiler" have been moved to DevTools "backend/profilingHooks" (to match previous behavior, for now).
* The old reconciler tests, "SchedulingProfiler-test" and "SchedulingProfilerLabels-test", have been moved into DevTools "TimelineProfiler-test" to ensure behavior didn't change unexpectedly.
* Two new methods have been added to the injected renderer interface: injectProfilingHooks() and getLaneLabelMap().

Relates to #22529.
Browse files
Changed paths28 files
First-parent comparison
A packages/react-devtools-shared/src/__tests__/TimelineProfiler-test.js AddedA packages/react-devtools-shared/src/__tests__/preprocessData-test.js AddedM packages/react-devtools-shared/src/__tests__/setupTests.js ModifiedM packages/react-devtools-shared/src/__tests__/utils.js ModifiedA packages/react-devtools-shared/src/backend/profilingHooks.js AddedM packages/react-devtools-shared/src/backend/renderer.js ModifiedM packages/react-devtools-shared/src/backend/types.js ModifiedM packages/react-devtools-shared/src/hook.js ModifiedD packages/react-devtools-timeline/src/import-worker/__tests__/preprocessData-test.internal.js DeletedM packages/react-reconciler/src/ReactFiberBeginWork.new.js ModifiedM packages/react-reconciler/src/ReactFiberBeginWork.old.js ModifiedM packages/react-reconciler/src/ReactFiberClassComponent.new.js ModifiedM packages/react-reconciler/src/ReactFiberClassComponent.old.js ModifiedM packages/react-reconciler/src/ReactFiberCommitWork.new.js ModifiedM packages/react-reconciler/src/ReactFiberCommitWork.old.js ModifiedM packages/react-reconciler/src/ReactFiberDevToolsHook.new.js ModifiedM packages/react-reconciler/src/ReactFiberDevToolsHook.old.js ModifiedM packages/react-reconciler/src/ReactFiberHooks.new.js ModifiedM packages/react-reconciler/src/ReactFiberHooks.old.js ModifiedM packages/react-reconciler/src/ReactFiberReconciler.new.js ModifiedM packages/react-reconciler/src/ReactFiberReconciler.old.js ModifiedM packages/react-reconciler/src/ReactFiberWorkLoop.new.js ModifiedM packages/react-reconciler/src/ReactFiberWorkLoop.old.js ModifiedD packages/react-reconciler/src/SchedulingProfiler.js DeletedM packages/react-reconciler/src/__tests__/ReactUpdaters-test.internal.js ModifiedD packages/react-reconciler/src/__tests__/SchedulingProfiler-test.internal.js DeletedD packages/react-reconciler/src/__tests__/SchedulingProfilerLabels-test.internal.js DeletedD scripts/jest/matchers/profilerMatchers.js Deleted
Patch

Files changed

Rendering syntax-highlighted changes…