Skip to content

Commit 0c5eccd

Browse files
committed
perf: update existing revalidator entries in-place for improved memory and performance
1 parent 1217211 commit 0c5eccd

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

src/revalidator-manager.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -224,15 +224,28 @@ export function addRevalidator(
224224
refetchOnFocus?: boolean,
225225
refetchOnReconnect?: boolean,
226226
) {
227-
revalidators.set(key, [
228-
revalidatorFn,
229-
timeNow(),
230-
ttl ?? DEFAULT_TTL,
231-
staleTime,
232-
bgRevalidatorFn,
233-
refetchOnFocus,
234-
refetchOnReconnect,
235-
]);
227+
const existing = revalidators.get(key);
228+
229+
if (existing) {
230+
// Update in-place to avoid allocating a new tuple array
231+
existing[0] = revalidatorFn;
232+
existing[1] = timeNow();
233+
existing[2] = ttl ?? DEFAULT_TTL;
234+
existing[3] = staleTime;
235+
existing[4] = bgRevalidatorFn;
236+
existing[5] = refetchOnFocus;
237+
existing[6] = refetchOnReconnect;
238+
} else {
239+
revalidators.set(key, [
240+
revalidatorFn,
241+
timeNow(),
242+
ttl ?? DEFAULT_TTL,
243+
staleTime,
244+
bgRevalidatorFn,
245+
refetchOnFocus,
246+
refetchOnReconnect,
247+
]);
248+
}
236249

237250
if (refetchOnFocus) {
238251
addEventHandler('focus');

0 commit comments

Comments
 (0)