Skip to content

Commit a961e57

Browse files
authored
feat(tracing): Track PerformanceResourceTiming.renderBlockingStatus (#7127)
* ref(perf): Add renderBlockingStatus As per https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/renderBlockingStatus the resource timing has information about whether an asset is blocking render or not, which is useful for determining which assets need to be addressed for fixing critical path.
1 parent 4ba16e7 commit a961e57

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

packages/replay/test/fixtures/transaction.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ export function Transaction(obj?: Partial<Event>): any {
7777
'Transfer Size': 1097,
7878
'Encoded Body Size': 797,
7979
'Decoded Body Size': 1885,
80+
'resource.render_blocking_status': 'non-blocking',
8081
},
8182
description: '/favicon.ico',
8283
op: 'resource.other',

packages/tracing/src/browser/metrics/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ export interface ResourceEntry extends Record<string, unknown> {
333333
transferSize?: number;
334334
encodedBodySize?: number;
335335
decodedBodySize?: number;
336+
renderBlockingStatus?: string;
336337
}
337338

338339
/** Create resource-related spans */
@@ -361,6 +362,9 @@ export function _addResourceSpans(
361362
if ('decodedBodySize' in entry) {
362363
data['Decoded Body Size'] = entry.decodedBodySize;
363364
}
365+
if ('renderBlockingStatus' in entry) {
366+
data['resource.render_blocking_status'] = entry.renderBlockingStatus;
367+
}
364368

365369
const startTimestamp = timeOrigin + startTime;
366370
const endTimestamp = startTimestamp + duration;

packages/tracing/test/browser/metrics/index.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ describe('_addResourceSpans', () => {
4848
transferSize: 256,
4949
encodedBodySize: 256,
5050
decodedBodySize: 256,
51+
renderBlockingStatus: 'non-blocking',
5152
};
5253
_addResourceSpans(transaction, entry, '/assets/to/me', 123, 456, 100);
5354

@@ -61,6 +62,7 @@ describe('_addResourceSpans', () => {
6162
transferSize: 256,
6263
encodedBodySize: 256,
6364
decodedBodySize: 256,
65+
renderBlockingStatus: 'non-blocking',
6466
};
6567
_addResourceSpans(transaction, entry, '/assets/to/me', 123, 456, 100);
6668

@@ -74,6 +76,7 @@ describe('_addResourceSpans', () => {
7476
transferSize: 256,
7577
encodedBodySize: 456,
7678
decodedBodySize: 593,
79+
renderBlockingStatus: 'non-blocking',
7780
};
7881

7982
const timeOrigin = 100;
@@ -90,6 +93,7 @@ describe('_addResourceSpans', () => {
9093
['Decoded Body Size']: entry.decodedBodySize,
9194
['Encoded Body Size']: entry.encodedBodySize,
9295
['Transfer Size']: entry.transferSize,
96+
['resource.render_blocking_status']: entry.renderBlockingStatus,
9397
},
9498
description: '/assets/to/css',
9599
endTimestamp: timeOrigin + startTime + duration,
@@ -143,6 +147,7 @@ describe('_addResourceSpans', () => {
143147
transferSize: 0,
144148
encodedBodySize: 0,
145149
decodedBodySize: 0,
150+
renderBlockingStatus: 'non-blocking',
146151
};
147152

148153
_addResourceSpans(transaction, entry, '/assets/to/css', 100, 23, 345);
@@ -156,6 +161,7 @@ describe('_addResourceSpans', () => {
156161
['Decoded Body Size']: entry.decodedBodySize,
157162
['Encoded Body Size']: entry.encodedBodySize,
158163
['Transfer Size']: entry.transferSize,
164+
['resource.render_blocking_status']: entry.renderBlockingStatus,
159165
},
160166
}),
161167
);

0 commit comments

Comments
 (0)