From ede440da336a6ce7fa62bc348bfa0ea8356ddece Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Wed, 14 Jan 2026 11:24:19 +0100 Subject: [PATCH] fix(web-vitals): Add error handling for invalid object keys in `WeakMap` --- .../src/metrics/web-vitals/lib/initUnique.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/browser-utils/src/metrics/web-vitals/lib/initUnique.ts b/packages/browser-utils/src/metrics/web-vitals/lib/initUnique.ts index 1eda48705b08..ef3e721dc09e 100644 --- a/packages/browser-utils/src/metrics/web-vitals/lib/initUnique.ts +++ b/packages/browser-utils/src/metrics/web-vitals/lib/initUnique.ts @@ -22,8 +22,16 @@ const instanceMap: WeakMap = new WeakMap(); * identity object was previously used. */ export function initUnique(identityObj: object, ClassObj: new () => T): T { - if (!instanceMap.get(identityObj)) { - instanceMap.set(identityObj, new ClassObj()); + try { + if (!instanceMap.get(identityObj)) { + instanceMap.set(identityObj, new ClassObj()); + } + return instanceMap.get(identityObj)! as T; + } catch (e) { + // --- START Sentry-custom code (try/catch wrapping) --- + // Fix for cases where identityObj is not a valid key for WeakMap (sometimes a problem in Safari) + // Just return a new instance without caching it in instanceMap + return new ClassObj(); } - return instanceMap.get(identityObj)! as T; + // --- END Sentry-custom code --- }