From db381e8a7010c1e361b41ea49d39189e39f7dd77 Mon Sep 17 00:00:00 2001 From: Wes Date: Thu, 13 Aug 2026 15:12:36 -0600 Subject: [PATCH] perf(desktop): bound timing callback evidence Record virtualizer and resize callback evidence only while a settle measurement has an active subscriber, avoiding permanent User Timing growth and callback instrumentation overhead after channel load settles. Co-authored-by: Carl Signed-off-by: Wes --- desktop/src/features/messages/lib/messagePerformance.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/desktop/src/features/messages/lib/messagePerformance.ts b/desktop/src/features/messages/lib/messagePerformance.ts index b84d50afb..8af3091bd 100644 --- a/desktop/src/features/messages/lib/messagePerformance.ts +++ b/desktop/src/features/messages/lib/messagePerformance.ts @@ -44,8 +44,13 @@ export function recordPerformanceMark( name: string, detail?: Record, ): void { + const current = listeners.get(name); + // Callback evidence exists only while a settle measurement is active. This + // keeps normal scrolling/resizing from filling the User Timing buffer or + // doing instrumentation work for the rest of the session. + if (!current?.size) return; performance.mark(name, detail ? { detail } : undefined); - for (const listener of listeners.get(name) ?? []) listener(); + for (const listener of current) listener(); } export function finishPerformanceMeasure(input: { startMark: string;