Skip to content

Commit 2b9695a

Browse files
committed
refactored web vitals
1 parent 9a2d78c commit 2b9695a

File tree

2 files changed

+41
-46
lines changed

2 files changed

+41
-46
lines changed

frontend/src/index.tsx

+3-35
Original file line numberDiff line numberDiff line change
@@ -2,49 +2,17 @@ import React from 'react'
22
import ReactDOM from 'react-dom/client'
33
import './index.css'
44
import { BrowserRouter } from 'react-router-dom'
5-
import { Metric } from 'web-vitals'
6-
import ReactGA from 'react-ga4'
75
import reportWebVitals from './reportWebVitals'
86
import App from './App'
97

10-
const root = ReactDOM.createRoot(
8+
ReactDOM.createRoot(
119
document.getElementById('root') as HTMLElement
12-
)
13-
root.render(
10+
).render(
1411
<React.StrictMode>
1512
<BrowserRouter>
1613
<App />
1714
</BrowserRouter>
1815
</React.StrictMode>
1916
)
2017

21-
ReactGA.initialize([
22-
{
23-
trackingId: 'G-XEN77GP035'
24-
}
25-
])
26-
27-
const getEventValueFromMetric = (metric: Metric) => {
28-
if (metric.name === 'CLS') {
29-
return Math.round(metric.value * 1000)
30-
}
31-
return Math.round(metric.value)
32-
}
33-
34-
const reportHandler = (metric: Metric) => {
35-
const event = {
36-
category: 'Web Vitals',
37-
action: metric.name,
38-
value: getEventValueFromMetric(metric),
39-
label: metric.id,
40-
nonInteraction: true
41-
}
42-
43-
if (process.env.NODE_ENV && process.env.NODE_ENV === 'development') {
44-
console.log(`[web-vitals-dev] ${metric.name}: ${metric.id}`, metric) // eslint-disable-line no-console
45-
} else {
46-
ReactGA.event(event)
47-
}
48-
}
49-
50-
reportWebVitals(reportHandler)
18+
reportWebVitals()

frontend/src/reportWebVitals.ts

+38-11
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,42 @@
1-
import { ReportHandler } from 'web-vitals'
2-
3-
const reportWebVitals = (onPerfEntry?: ReportHandler) => {
4-
if (onPerfEntry && onPerfEntry instanceof Function) {
5-
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
6-
getCLS(onPerfEntry)
7-
getFID(onPerfEntry)
8-
getFCP(onPerfEntry)
9-
getLCP(onPerfEntry)
10-
getTTFB(onPerfEntry)
11-
})
1+
import { Metric } from 'web-vitals'
2+
import ReactGA from 'react-ga4'
3+
4+
const getEventValueFromMetric = (metric: Metric) => {
5+
if (metric.name === 'CLS') {
6+
return Math.round(metric.value * 1000)
7+
}
8+
return Math.round(metric.value)
9+
}
10+
11+
const reportHandler = (metric: Metric) => {
12+
const event = {
13+
category: 'Web Vitals',
14+
action: metric.name,
15+
value: getEventValueFromMetric(metric),
16+
label: metric.id,
17+
nonInteraction: true
1218
}
19+
20+
if (process.env.NODE_ENV && process.env.NODE_ENV === 'development') {
21+
console.debug(`[web-vitals-dev] ${event.action}: ${event.value}`, metric) // eslint-disable-line no-console
22+
} else {
23+
ReactGA.event(event)
24+
}
25+
}
26+
27+
const reportWebVitals = () => {
28+
ReactGA.initialize([
29+
{
30+
trackingId: 'G-XEN77GP035'
31+
}
32+
])
33+
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
34+
getCLS(reportHandler)
35+
getFID(reportHandler)
36+
getFCP(reportHandler)
37+
getLCP(reportHandler)
38+
getTTFB(reportHandler)
39+
})
1340
}
1441

1542
export default reportWebVitals

0 commit comments

Comments
 (0)