@@ -2,26 +2,56 @@ function sendWebVitals() {
22
33 function sendWebVitalsGAEvents ( { name, delta, id, attribution, navigationType} ) {
44
5- let webVitalInfo = '(not set)' ;
5+ let overrides = { } ;
66
77 switch ( name ) {
88 case 'CLS' :
9- webVitalInfo = attribution . largestShiftTarget ;
9+ overrides = {
10+ debug_time : attribution . largestShiftTime ,
11+ debug_load_state : attribution . loadState ,
12+ debug_target : attribution . largestShiftTarget || '(not set)' ,
13+ } ;
14+ break ;
15+ case 'FCP' :
16+ overrides = {
17+ debug_time_to_first_byte : attribution . timeToFirstByte ,
18+ debug_first_byte_to_fcp : attribution . firstByteToFCP ,
19+ debug_load_state : attribution . loadState ,
20+ debug_target : attribution . loadState || '(not set)' ,
21+ } ;
1022 break ;
1123 case 'FID' :
12- webVitalInfo = attribution . eventTarget ;
24+ case 'INP' :
25+ overrides = {
26+ debug_event : attribution . eventType ,
27+ debug_time : Math . round ( attribution . eventTime ) ,
28+ debug_load_state : attribution . loadState ,
29+ debug_target : attribution . eventTarget || '(not set)' ,
30+ } ;
31+ if ( ! attribution . eventEntry ) {
32+ break ;
33+ }
34+ overrides . debug_interaction_delay = Math . round ( attribution . eventEntry . processingStart - attribution . eventEntry . startTime ) ;
35+ overrides . debug_processing_time = Math . round ( attribution . eventEntry . processingEnd - attribution . eventEntry . processingStart ) ;
36+ overrides . debug_presentation_delay = Math . round ( attribution . eventEntry . duration + attribution . eventEntry . startTime - attribution . eventEntry . processingEnd ) ;
1337 break ;
1438 case 'LCP' :
15- webVitalInfo = attribution . element ;
39+ overrides = {
40+ debug_url : attribution . url ,
41+ debug_time_to_first_byte : attribution . timeToFirstByte ,
42+ debug_resource_load_delay : attribution . resourceLoadDelay ,
43+ debug_resource_load_time : attribution . resourceLoadTime ,
44+ debug_element_render_delay : attribution . elementRenderDelay ,
45+ debug_target : attribution . element || '(not set)' ,
46+ } ;
1647 break ;
1748 case 'TTFB' :
18- webVitalInfo = attribution . connectionTime ;
19- break ;
20- case 'FCP' :
21- webVitalInfo = attribution . firstByteToFCP ;
22- break ;
23- case 'INP' :
24- webVitalInfo = attribution . eventTarget ;
49+ overrides = {
50+ debug_waiting_time : attribution . waitingTime ,
51+ debug_dns_time : attribution . dnsTime ,
52+ debug_connection_time : attribution . connectionTime ,
53+ debug_request_time : attribution . requestTime ,
54+ } ;
2555 break ;
2656 }
2757
@@ -49,21 +79,31 @@ function sendWebVitals() {
4979 prefersColorScheme = 'not supported' ;
5080 }
5181
52- gtag ( 'event' , name , {
53- event_category : 'Web Vitals' ,
54- value : Math . round ( name === 'CLS' ? delta * 1000 : delta ) ,
55- event_label : id ,
56- non_interaction : true ,
82+ gtag ( 'event' , name , Object . assign (
83+ {
84+ event_category : 'Web Vitals' ,
85+ value : Math . round ( name === 'CLS' ? delta * 1000 : delta ) ,
86+ event_label : id ,
87+ non_interaction : true ,
88+
89+ // See: https://web.dev/debug-web-vitals-in-the-field/
90+ dimension1 : overrides . debug_target ,
91+ dimension2 : effectiveType ,
92+ dimension3 : dataSaver ,
93+ dimension4 : deviceMemory ,
94+ dimension5 : prefersReducedMotion ,
95+ dimension6 : prefersColorScheme ,
96+ dimension7 : navigationType ,
97+ //GA4
98+ effective_type : effectiveType ,
99+ data_saver : dataSaver ,
100+ device_memory : deviceMemory ,
101+ prefers_reduced_motion : prefersReducedMotion ,
102+ prefers_color_scheme : prefersColorScheme ,
103+ navigation_type : navigationType ,
104+ }
105+ ) , overrides ) ;
57106
58- // See: https://web.dev/debug-web-vitals-in-the-field/
59- dimension1 : webVitalInfo ,
60- dimension2 : effectiveType ,
61- dimension3 : dataSaver ,
62- dimension4 : deviceMemory ,
63- dimension5 : prefersReducedMotion ,
64- dimension6 : prefersColorScheme ,
65- dimension7 : navigationType ,
66- } ) ;
67107 }
68108
69109 // As the web-vitals script and this script is set with defer in order, so it should be loaded
0 commit comments