Skip to content

Commit 173254f

Browse files
committed
feat: Flutte replay custom masking warning
1 parent e4a73d6 commit 173254f

File tree

1 file changed

+14
-2
lines changed
  • docs/platforms/flutter/session-replay

1 file changed

+14
-2
lines changed

docs/platforms/flutter/session-replay/index.mdx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ By default, our Session Replay SDK masks all text content, images, and user inpu
1919

2020
## Pre-requisites
2121

22-
Make sure your Sentry Flutter SDK version is at least 8.9.0, which is required for Session Replay.
22+
Make sure your Sentry Flutter SDK version is at least 8.9.0, which is required for Session Replay.
2323
You can update your `pubspec.yaml` to the matching version:
2424

2525
```yaml
@@ -59,11 +59,23 @@ Sampling allows you to control how much of your website's traffic will result in
5959
up to a minute of events prior to the error and continue recording until the session
6060
ends.
6161

62-
Sampling starts as soon as a session begins. The <PlatformIdentifier name="replays-session-sample-rate" /> is then evaluated. If the session is sampled, replay recording will start immediately. If not, <PlatformIdentifier name="replays-on-error-sample-rate" /> will be evaluated. If the session is sampled at this point, the replay will be buffered and will only be uploaded to Sentry if an error occurs.
62+
Sampling starts as soon as a session begins. The <PlatformIdentifier name="replays-session-sample-rate" /> is then evaluated. If the session is sampled, replay recording will start immediately. If not, <PlatformIdentifier name="replays-on-error-sample-rate" /> will be evaluated. If the session is sampled at this point, the replay will be buffered and will only be uploaded to Sentry if an error occurs.
6363

6464
## Privacy
6565

6666
The SDK is recording and aggressively redacting (masking) all text and images, according to the configuration in `options.experimental.replay`.
67+
68+
<Alert level="warning">
69+
Masking in the Sentry Flutter SDK is based on Widget *types*, e.g. `Image`, not just their as strings (i.e. we check whether
70+
a `widgetInstance` should be masked by checking `if (widgetInstance is Image)` instead of `if (widgetInstance.runtimeType == 'Image')`).
71+
This means we can ensure masking works regardless of obfuscation in release builds and also works for subtclasses.
72+
However, it also means we can only mask widgets that are part of the Flutter SDK itself.
73+
We cannot mask widgets defined in various 3rd-party packages (because the type is not known in the Sentry Flutter SDK),
74+
even though many should be masked.
75+
Therefore, you need to consider the widgets your application uses and ensure they're masked correctly with custom masking rules.
76+
Examples of widgets that usually should be masked include (but are not limited to): VideoPlayer, WebView, Chart, Password, etc.
77+
</Alert>
78+
6779
You can tune this and add custom masking rules to fit your needs. For example, you can explicitly mask or unmask widgets by type,
6880
or you can even have a callback to decide whether a specific widget instance should be masked:
6981

0 commit comments

Comments
 (0)