Skip to content

Commit b198c30

Browse files
pauldambracarlos-marchal-ph
authored andcommitted
fix: more DOM element leaks (#39152)
1 parent 008c6e9 commit b198c30

File tree

4 files changed

+18
-4
lines changed

4 files changed

+18
-4
lines changed

frontend/src/scenes/billing/BillingLineGraph.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ function useBillingTooltip(): {
7979
useOnMountEffect(() => {
8080
return () => {
8181
if (tooltipRootRef.current) {
82-
setTimeout(() => tooltipRootRef.current?.unmount(), 0)
82+
tooltipRootRef.current.unmount()
8383
}
8484
tooltipElRef.current?.remove()
8585
}

frontend/src/scenes/experiments/MetricsView/legacy/VariantDeltaTimeseries.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useActions, useValues } from 'kea'
2-
import { useEffect } from 'react'
2+
import { useEffect, useRef } from 'react'
33

44
import { Chart, ChartConfiguration } from 'lib/Chart'
55
import { LemonButton } from 'lib/lemon-ui/LemonButton'
@@ -13,6 +13,7 @@ const LOWER_BOUND = [0.06, 0.07, 0.06, 0.08, 0.07, 0.09, 0.09, 0.1, 0.115, 0.113
1313
export const VariantDeltaTimeseries = (): JSX.Element => {
1414
const { closeVariantDeltaTimeseriesModal } = useActions(modalsLogic)
1515
const { isVariantDeltaTimeseriesModalOpen } = useValues(modalsLogic)
16+
const chartRef = useRef<Chart | null>(null)
1617

1718
useEffect(() => {
1819
if (isVariantDeltaTimeseriesModalOpen) {
@@ -124,9 +125,16 @@ export const VariantDeltaTimeseries = (): JSX.Element => {
124125
},
125126
}
126127

127-
new Chart(ctx, config)
128+
chartRef.current = new Chart(ctx, config)
128129
}, 0)
129130
}
131+
132+
return () => {
133+
if (chartRef.current) {
134+
chartRef.current.destroy()
135+
chartRef.current = null
136+
}
137+
}
130138
}, [isVariantDeltaTimeseriesModalOpen])
131139

132140
return (

frontend/src/scenes/experiments/MetricsView/new/VariantTimeseriesChart.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ interface VariantTimeseriesChartProps {
1010

1111
export function VariantTimeseriesChart({ chartData: data }: VariantTimeseriesChartProps): JSX.Element {
1212
const canvasRef = useRef<HTMLCanvasElement>(null)
13+
const chartRef = useRef<Chart | null>(null)
1314

1415
useEffect(() => {
1516
if (!data) {
@@ -114,11 +115,15 @@ export function VariantTimeseriesChart({ chartData: data }: VariantTimeseriesCha
114115
},
115116
}
116117

117-
new Chart(ctx, config)
118+
chartRef.current = new Chart(ctx, config)
118119
}, 0)
119120

120121
return () => {
121122
clearTimeout(timeoutId)
123+
if (chartRef.current) {
124+
chartRef.current.destroy()
125+
chartRef.current = null
126+
}
122127
}
123128
}, [data])
124129

frontend/src/scenes/insights/useInsightTooltip.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export function cleanupTooltip(id: string): void {
9494
if (instance.hideTimeout) {
9595
clearTimeout(instance.hideTimeout)
9696
}
97+
instance.root.unmount()
9798
instance.element.remove()
9899
tooltipInstances.delete(id)
99100
}

0 commit comments

Comments
 (0)