From 77a9556a2d5c2845ba4d5edeacb3b1edf4479d7e Mon Sep 17 00:00:00 2001 From: Kevin Sullivan Date: Fri, 16 Jan 2026 12:50:20 -0500 Subject: [PATCH] fix(session-replay-browser): prevent broken styles from recording with more CSS-in-JS libraries --- packages/session-replay-browser/src/session-replay.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/session-replay-browser/src/session-replay.ts b/packages/session-replay-browser/src/session-replay.ts index 175a25780..2f369f763 100644 --- a/packages/session-replay-browser/src/session-replay.ts +++ b/packages/session-replay-browser/src/session-replay.ts @@ -633,8 +633,10 @@ export class SessionReplay implements AmplitudeSessionReplay { errorHandler: (error: unknown) => { const typedError = error as Error & { _external_?: boolean }; - // styled-components relies on this error being thrown and bubbled up, rrweb is otherwise suppressing it - if (typedError.message.includes('insertRule') && typedError.message.includes('CSSStyleSheet')) { + // CSS-in-JS libraries such as styled-components and stitches rely on this error being thrown and + // bubbled up, rrweb is otherwise suppressing it. The goal is to rethrow errors from + // `CSSStyleSheet.insertRule` and `CSSGroupingRule.insertRule`. + if (typedError.stack?.includes('insertRule')) { throw typedError; }