diff --git a/src/record/observer.ts b/src/record/observer.ts index 895ca39d67..a6afce3e7f 100644 --- a/src/record/observer.ts +++ b/src/record/observer.ts @@ -44,6 +44,12 @@ import { import MutationBuffer from './mutation'; import { stringify } from './stringify'; +type WindowWithAngularZone = Window & { + Zone?: { + __symbol__?: (key: string) => string; + }; +}; + export const mutationBuffer = new MutationBuffer(); function initMutationObserver( @@ -65,7 +71,22 @@ function initMutationObserver( recordCanvas, slimDOMOptions, ); - const observer = new MutationObserver( + let mutationBufferCtor = window.MutationObserver; + const angularZoneSymbol = (window as WindowWithAngularZone)?.Zone?.__symbol__?.( + 'MutationObserver', + ); + if ( + angularZoneSymbol && + ((window as unknown) as Record)[ + angularZoneSymbol + ] + ) { + mutationBufferCtor = ((window as unknown) as Record< + string, + typeof MutationObserver + >)[angularZoneSymbol]; + } + const observer = new mutationBufferCtor( mutationBuffer.processMutations.bind(mutationBuffer), ); observer.observe(document, {