Uh oh!
There was an error while loading. Please reload this page.
fix(replay): Fix potential broken CSS in styled-components - #9234
Conversation
size-limit report 📦
|
Uh oh!
There was an error while loading. Please reload this page.
AbhiPrasad
commented
Oct 12, 2023
We can do a release tomorrow with this. |
| // return true to suppress throwing the error inside of rrweb | ||
| return true; | ||
| errorHandler: (err: Error & {__rrweb__?: boolean}) => { | ||
| err.__rrweb__ = true; |
There was a problem hiding this comment.
Hmmm so one problem here is that we may throw/error on trying to set this on something that is e.g. frozen or similar. Can we instead still try-catch here and just re-throw certain kinds of exceptions, maybe?
I mean, maybe this is actually fine, but we could be getting other errors because of this, at some point, too 🤔
There was a problem hiding this comment.
Or actually, can we just do:
errorHandler: (err: Error)=>{try{// @ts-expect-error Set this so that replay SDK can ignore errors originating from rrweberr.__rrweb__=true;}catch{// avoid any potential hazards here}So still try-catch setting this prop, but bubble the error up to rrweb 🤔
There was a problem hiding this comment.
I updated this like this, so we can merge & release this!
NOTE: This requires a bump to rrweb library Fixes an issue where the Replay integration can potentially break applications that use `styled-components`. `styled-components` [relies on an exception being throw](https://github.com/styled-components/styled-components/blob/b7b374bb1ceff1699f7035b15881bc807110199a/packages/styled-components/src/sheet/Tag.ts#L32-L40) for CSS rules that are not supported by the browser engine. However, our SDK suppresses any exceptions thrown from within rrweb, so `styled-components` assumes that an unsupported rule was inserted successfully and increases a rule index, which causes following inserted rules to fail due to an out-of-bounds error. getsentry/rrweb#111 introduces a change the adds metadata to exceptions that occur when calling `insertRule`, and this PR will re-throw those exceptions that will then bubble up to `styled-components`. Fixes#9170
b1876c5 to
a66168fCompare
Fixes an issue where the Replay integration can potentially break applications that use
styled-components.styled-componentsrelies on an exception being throw for CSS rules that are not supported by the browser engine. However, our SDK suppressed any exceptions thrown from within rrweb, sostyled-componentsassumes that an unsupported rule was inserted successfully and increases a rule index, which causes following inserted rules to fail due to an out-of-bounds error.This was a regression from v1 as we were always re-throwing the exception
Fixes#9170