Skip to content

Commit 2704bb5

Browse files
Add ReactVersion to SchedulingProfiler render scheduled marks (#19553)
* Add ReactVersion to SchedulingProfiler render scheduled marks * Move ReactVersion to a new --react-init-* mark Co-authored-by: E-Liang Tan <eliang@eliangtan.com>
1 parent 0c52e24 commit 2704bb5

File tree

2 files changed

+54
-10
lines changed

2 files changed

+54
-10
lines changed

packages/react-reconciler/src/SchedulingProfiler.js

+8
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
enableSchedulingProfiler,
1616
enableSchedulingProfilerComponentStacks,
1717
}from'shared/ReactFeatureFlags';
18+
importReactVersionfrom'shared/ReactVersion';
1819
importgetComponentNamefrom'shared/getComponentName';
1920
import{getStackByFiberInDevAndProd}from'./ReactFiberComponentStack';
2021

@@ -29,6 +30,13 @@ function formatLanes(laneOrLanes: Lane | Lanes): string {
2930
return((laneOrLanes: any): number).toString();
3031
}
3132

33+
// Create a mark on React initialization
34+
if(enableSchedulingProfiler){
35+
if(supportsUserTiming){
36+
performance.mark(`--react-init-${ReactVersion}`);
37+
}
38+
}
39+
3240
exportfunctionmarkCommitStarted(lanes: Lanes): void{
3341
if(enableSchedulingProfiler){
3442
if(supportsUserTiming){

packages/react-reconciler/src/__tests__/SchedulingProfiler-test.internal.js

+46-10
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
'use strict';
1212

13+
importReactVersionfrom'shared/ReactVersion';
14+
1315
functionnormalizeCodeLocInfo(str){
1416
return(
1517
str&&
@@ -54,6 +56,7 @@ describe('SchedulingProfiler', () => {
5456
beforeEach(()=>{
5557
jest.resetModules();
5658
global.performance=createUserTimingPolyfill();
59+
marks=[];
5760

5861
React=require('react');
5962

@@ -62,8 +65,6 @@ describe('SchedulingProfiler', () => {
6265
ReactNoop=require('react-noop-renderer');
6366

6467
Scheduler=require('scheduler');
65-
66-
marks=[];
6768
});
6869

6970
afterEach(()=>{
@@ -76,11 +77,17 @@ describe('SchedulingProfiler', () => {
7677
expect(marks).toEqual([]);
7778
});
7879

80+
// @gate enableSchedulingProfiler
81+
it('should log React version on initialization',()=>{
82+
expect(marks).toEqual([`--react-init-${ReactVersion}`]);
83+
});
84+
7985
// @gate enableSchedulingProfiler
8086
it('should mark sync render without suspends or state updates',()=>{
8187
ReactTestRenderer.create(<div/>);
8288

8389
expect(marks).toEqual([
90+
`--react-init-${ReactVersion}`,
8491
'--schedule-render-1',
8592
'--render-start-1',
8693
'--render-stop',
@@ -95,7 +102,10 @@ describe('SchedulingProfiler', () => {
95102
it('should mark concurrent render without suspends or state updates',()=>{
96103
ReactTestRenderer.create(<div/>,{unstable_isConcurrent: true});
97104

98-
expect(marks).toEqual(['--schedule-render-512']);
105+
expect(marks).toEqual([
106+
`--react-init-${ReactVersion}`,
107+
'--schedule-render-512',
108+
]);
99109

100110
marks.splice(0);
101111

@@ -128,6 +138,7 @@ describe('SchedulingProfiler', () => {
128138
expect(ReactNoop.flushNextYield()).toEqual(['Foo']);
129139

130140
expect(marks).toEqual([
141+
`--react-init-${ReactVersion}`,
131142
'--schedule-render-512',
132143
'--render-start-512',
133144
'--render-yield',
@@ -148,6 +159,7 @@ describe('SchedulingProfiler', () => {
148159
);
149160

150161
expect(marks).toEqual([
162+
`--react-init-${ReactVersion}`,
151163
'--schedule-render-1',
152164
'--render-start-1',
153165
toggleComponentStacks(
@@ -184,6 +196,7 @@ describe('SchedulingProfiler', () => {
184196
);
185197

186198
expect(marks).toEqual([
199+
`--react-init-${ReactVersion}`,
187200
'--schedule-render-1',
188201
'--render-start-1',
189202
toggleComponentStacks(
@@ -220,7 +233,10 @@ describe('SchedulingProfiler', () => {
220233
{unstable_isConcurrent: true},
221234
);
222235

223-
expect(marks).toEqual(['--schedule-render-512']);
236+
expect(marks).toEqual([
237+
`--react-init-${ReactVersion}`,
238+
'--schedule-render-512',
239+
]);
224240

225241
marks.splice(0);
226242

@@ -262,7 +278,10 @@ describe('SchedulingProfiler', () => {
262278
{unstable_isConcurrent: true},
263279
);
264280

265-
expect(marks).toEqual(['--schedule-render-512']);
281+
expect(marks).toEqual([
282+
`--react-init-${ReactVersion}`,
283+
'--schedule-render-512',
284+
]);
266285

267286
marks.splice(0);
268287

@@ -304,7 +323,10 @@ describe('SchedulingProfiler', () => {
304323

305324
ReactTestRenderer.create(<Example/>,{unstable_isConcurrent: true});
306325

307-
expect(marks).toEqual(['--schedule-render-512']);
326+
expect(marks).toEqual([
327+
`--react-init-${ReactVersion}`,
328+
'--schedule-render-512',
329+
]);
308330

309331
marks.splice(0);
310332

@@ -340,7 +362,10 @@ describe('SchedulingProfiler', () => {
340362

341363
ReactTestRenderer.create(<Example/>,{unstable_isConcurrent: true});
342364

343-
expect(marks).toEqual(['--schedule-render-512']);
365+
expect(marks).toEqual([
366+
`--react-init-${ReactVersion}`,
367+
'--schedule-render-512',
368+
]);
344369

345370
marks.splice(0);
346371

@@ -377,7 +402,10 @@ describe('SchedulingProfiler', () => {
377402

378403
ReactTestRenderer.create(<Example/>,{unstable_isConcurrent: true});
379404

380-
expect(marks).toEqual(['--schedule-render-512']);
405+
expect(marks).toEqual([
406+
`--react-init-${ReactVersion}`,
407+
'--schedule-render-512',
408+
]);
381409

382410
marks.splice(0);
383411

@@ -414,7 +442,10 @@ describe('SchedulingProfiler', () => {
414442

415443
ReactTestRenderer.create(<Example/>,{unstable_isConcurrent: true});
416444

417-
expect(marks).toEqual(['--schedule-render-512']);
445+
expect(marks).toEqual([
446+
`--react-init-${ReactVersion}`,
447+
'--schedule-render-512',
448+
]);
418449

419450
marks.splice(0);
420451

@@ -449,7 +480,10 @@ describe('SchedulingProfiler', () => {
449480

450481
ReactTestRenderer.create(<Example/>,{unstable_isConcurrent: true});
451482

452-
expect(marks).toEqual(['--schedule-render-512']);
483+
expect(marks).toEqual([
484+
`--react-init-${ReactVersion}`,
485+
'--schedule-render-512',
486+
]);
453487

454488
marks.splice(0);
455489

@@ -489,6 +523,7 @@ describe('SchedulingProfiler', () => {
489523
gate(({old})=>{
490524
if(old){
491525
expect(marks.map(normalizeCodeLocInfo)).toEqual([
526+
`--react-init-${ReactVersion}`,
492527
'--schedule-render-512',
493528
'--render-start-512',
494529
'--render-stop',
@@ -508,6 +543,7 @@ describe('SchedulingProfiler', () => {
508543
]);
509544
}else{
510545
expect(marks.map(normalizeCodeLocInfo)).toEqual([
546+
`--react-init-${ReactVersion}`,
511547
'--schedule-render-512',
512548
'--render-start-512',
513549
'--render-stop',

0 commit comments

Comments
 (0)
close