getsentry / sentry

Developer-first error tracking and performance monitoring
https://sentry.io
Other
38.88k stars 4.17k forks source link

[Epic] Mobile Replay: GA #74441

Open bruno-garcia opened 2 months ago

bruno-garcia commented 2 months ago

We recently made an open beta release:

This epic tracks tasks on our path to GA:

### UI: Mobile Replay
- [ ] https://github.com/getsentry/sentry/issues/74747
- [ ] https://github.com/getsentry/sentry/issues/74751
- [ ] https://github.com/getsentry/sentry/issues/75330
- [ ] https://github.com/getsentry/team-replay/issues/465
- [ ] https://github.com/getsentry/sentry/issues/75635
- [ ] https://github.com/getsentry/sentry/issues/71665
- [ ] https://github.com/getsentry/sentry/issues/74324
- [ ] https://github.com/getsentry/team-replay/issues/466
- [ ] https://github.com/getsentry/sentry/issues/77646
- [ ] Add 'skip inactivity' feature
- [ ] Merge rrweb changes upstream
- [ ] https://github.com/getsentry/sentry/issues/77650
### SDKs
- [x] rename `errorSampleRate` to `onErrorSampleRate`
- [x] Recording quality default should be `medium` and quality align between iOS and Android
- [ ] https://github.com/getsentry/sentry/issues/68287
- [ ] Handle Rate Limiting - Stop replay. Don't run sessionSampleRate or trigger onError if an error happens, until Retry-After reached
- [ ] Send sample rates in replay payload. `sdk.onErrorSampleRate` and `sdk.sessionSampleRate`. Note, other relevant options, and how it's done in Web: https://github.com/getsentry/sentry-javascript/blob/9ed211288650d3d4740edba5ed1f609bb75b2480/packages/replay-internal/src/util/handleRecordingEmit.ts#L114-L137 Also log the recording quality, and other useful data for debuggin replays
- [ ] Remove the `.experimental` from options
- [ ] Clock drift fix: use UTC, or single time clock read, or stopwatch
- [ ] https://github.com/getsentry/sentry/issues/70446
- [ ] https://github.com/getsentry/sentry/issues/63248
- [x] Attach custom tags to replay events and have them indexed to be searchable on the Replay landing page
- [ ] https://github.com/getsentry/sentry/issues/78018
### SDK Android
- [ ] https://github.com/getsentry/sentry-java/issues/3616
- [x] replay for ANR on buffer mode
- [x] Persist correct replayType https://github.com/getsentry/sentry-java/pull/3622
- [x] Capture replay on uncaught exceptions in RN layer
- [x] Provide a way to redact certain views via `view.setTag("sentry-block|sentry-mask")` https://github.com/getsentry/sentry-java/pull/3689
- [x] Support Jetpack Compose components masking https://github.com/getsentry/sentry-java/pull/3739
- [ ] https://github.com/getsentry/sentry-java/issues/3560
- [ ] https://github.com/getsentry/sentry-java/issues/3574
- [ ] https://github.com/getsentry/sentry-java/issues/3693
- [ ] Use different OSS apps to test, e.g. duckduckgo, nowinandroid, pocketcasts + RN apps (expensify)
### SDK iOS
- [ ] https://github.com/getsentry/sentry-cocoa/issues/4155
- [ ] https://github.com/getsentry/sentry-cocoa/issues/4213
- [x] Capture replay on native crash
- [x] Handle orientation changes (send rrweb event/breadcrumb and change video size)
- [x] Capture replay on uncaught exceptions in RN layer
- [x] Replay segments have ~2 second gaps
- [x] Handle offline recording (do not capture segments while offline, but keep recording and capture longer ones when back online)
- [x] Resumed replay is missing app foreground bredcrumbs (replay starts after the bredcrumbs)
- [x] Change default quality to `medium`: https://github.com/getsentry/sentry-cocoa/blob/f4a69250ea6fe13b7c0db64fd27f207349923604/Sources/Swift/Integrations/SessionReplay/SentryReplayOptions.swift#L68
- [x] Provide a way to redact specific views via UIView extension - Docs
- [ ] https://github.com/getsentry/sentry-docs/issues/11374
- [ ] https://github.com/getsentry/sentry-cocoa/issues/4142
- [ ] https://github.com/getsentry/team-replay/issues/467
- [ ] Redact only text within element (instead of redacting the whole element)
- [ ] Use different OSS apps to test, e.g. duckduckgo, nowinandroid, pocketcasts + RN apps (expensify)
### SDK React Native
- [x] Mask all SVG on mobile (react-native-svg) https://github.com/getsentry/sentry-react-native/pull/3930
- [x] Bump native SDKs to version supporting reading `urls` from scope (not released yet)
- [ ] Check react-native-webview (webview done on iOS, in app browser need check)
- [ ] Provide a way to redact/exclude certain React Components
- [ ] Verify images over network are recorded in the network panel (Ivan check, we will need to record network on native)
- [ ] Add quality setting low/medium/high (just a lightweight interface in RN)
- [ ] JSX Structure of the touch target
- [ ] RN+iOS: Improve dev build experience: Swizzling to tell apart images from bundle
- [ ] https://github.com/getsentry/sentry-react-native/issues/4106
### Documentation and other areas
- [ ] Expand Data Privacy for Mobile with Replay specific information: https://docs.sentry.io/product/security/mobile-privacy/
- [ ] Include a guide for `Apple Privacy Questionnaire` to help users navigate app publishing: https://developer.apple.com/app-store/app-privacy-details/
- [ ] Include a guide for `Data safety form in Play Console`: https://support.google.com/googleplay/android-developer/answer/10787469?hl=en
- [ ] Document known limitations: Replay in offline mode, resizing, multi-window
- [ ] Remove Jetpack Compose note on the FAQ: https://github.com/getsentry/sentry-docs/pull/11247
- [ ] https://github.com/getsentry/team-replay/issues/476

This epic is part of:

getsantry[bot] commented 2 months ago

Routing to @getsentry/product-owners-replays for triage ⏲️