Skip to content

Commit 04d551e

Browse files
mydeabillyvg
andauthored
feat(replay): Update rrweb to 1.105.0 & add breadcrumb when encountering large mutation (#7314)
--------- Co-authored-by: Billy Vong <[email protected]>
1 parent af48921 commit 04d551e

File tree

6 files changed

+31
-10
lines changed

6 files changed

+31
-10
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
66

7+
- fix(replay): Ensure `<input type='submit' value='Btn text'>` is masked ([#69](https://github.com/getsentry/rrweb/pull/69))
8+
79
## 7.41.0
810

911
- feat: Ensure we use the same default `environment` everywhere (#7327)

packages/replay/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"devDependencies": {
4545
"@babel/core": "^7.17.5",
4646
"@sentry-internal/replay-worker": "7.41.0",
47-
"@sentry-internal/rrweb": "1.104.1",
47+
"@sentry-internal/rrweb": "1.105.0",
4848
"jsdom-worker": "^0.2.1",
4949
"tslib": "^1.9.3"
5050
},

packages/replay/src/replay.ts

+17
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,23 @@ export class ReplayContainer implements ReplayContainerInterface {
208208
// instead, we'll always keep the last 60 seconds of replay before an error happened
209209
...(this.recordingMode === 'error' && { checkoutEveryNms: ERROR_CHECKOUT_TIME }),
210210
emit: this._handleRecordingEmit,
211+
onMutation: (mutations: unknown[]) => {
212+
if (this._options._experiments.captureMutationSize) {
213+
const count = mutations.length;
214+
215+
if (count > 500) {
216+
const breadcrumb = createBreadcrumb({
217+
category: 'replay.mutations',
218+
data: {
219+
count,
220+
},
221+
});
222+
this._createCustomBreadcrumb(breadcrumb);
223+
}
224+
}
225+
// `true` means we use the regular mutation handling by rrweb
226+
return true;
227+
},
211228
});
212229
} catch (err) {
213230
this._handleException(err);

packages/replay/src/types.ts

+1
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ export interface ReplayPluginOptions extends SessionOptions {
110110
_experiments: Partial<{
111111
captureExceptions: boolean;
112112
traceInternals: boolean;
113+
captureMutationSize: boolean;
113114
}>;
114115
}
115116

packages/replay/test/integration/rrweb.test.ts

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ describe('Integration | rrweb', () => {
3232
"maskInputSelector": ".sentry-mask,[data-sentry-mask]",
3333
"maskTextFn": undefined,
3434
"maskTextSelector": ".sentry-mask,[data-sentry-mask]",
35+
"onMutation": [Function],
3536
"slimDOMOptions": "all",
3637
"unblockSelector": ".sentry-unblock,[data-sentry-unblock]",
3738
"unmaskInputSelector": ".sentry-unmask,[data-sentry-unmask]",

yarn.lock

+9-9
Original file line numberDiff line numberDiff line change
@@ -3917,17 +3917,17 @@
39173917
semver "7.3.2"
39183918
semver-intersect "1.4.0"
39193919

3920-
"@sentry-internal/rrweb-snapshot@1.104.1":
3921-
version "1.104.1"
3922-
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb-snapshot/-/rrweb-snapshot-1.104.1.tgz#baa1e951be432b8b8345833f5ed926144c62601f"
3923-
integrity sha512-IefNuRsyG8xoo6RNqTRoIaaarhjV1NO7JPiohYyyeSWDu26hK4mKlwDLlY41A5fRq8i49fiISoLU1EKueYFGOA==
3920+
"@sentry-internal/rrweb-snapshot@1.105.0":
3921+
version "1.105.0"
3922+
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb-snapshot/-/rrweb-snapshot-1.105.0.tgz#b95d056e3602ab075049b31354942051137f3de2"
3923+
integrity sha512-UsrCVB5PVKTd3nXidUQSFQPjMHi2p5RzcujdBVuZfOJmRAqkHW6fN3CM4H6vJh0L5bgs+O/MFTNSv+iiAyVrBQ==
39243924

3925-
"@sentry-internal/rrweb@1.104.1":
3926-
version "1.104.1"
3927-
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb/-/rrweb-1.104.1.tgz#a4c25f8daf59327d528540f872d301f4bc866dcc"
3928-
integrity sha512-kdf/tfMsIr3mr6IGZwpBcrS05GWyKbkAhv/4GkFevw9VSeHozTn2pPx6gU9M4WskN7NiZp4wvJ+4uLgwWdZSwg==
3925+
"@sentry-internal/rrweb@1.105.0":
3926+
version "1.105.0"
3927+
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb/-/rrweb-1.105.0.tgz#c4238692753ed910d0fc23887361cc4d5d5112ab"
3928+
integrity sha512-RwJiQXaYzvLhqkAJtvwxu6WuO3OnedTpWtfdJX73kYujleSzoIBRNUXBs03Ir9E48UN5gzKu/eRG76QdH+e8Ow==
39293929
dependencies:
3930-
"@sentry-internal/rrweb-snapshot" "1.104.1"
3930+
"@sentry-internal/rrweb-snapshot" "1.105.0"
39313931
"@types/css-font-loading-module" "0.0.7"
39323932
"@xstate/fsm" "^1.4.0"
39333933
base64-arraybuffer "^1.0.1"

0 commit comments

Comments
 (0)