-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add RN Replay Privacy page #11798
base: master
Are you sure you want to change the base?
Add RN Replay Privacy page #11798
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -75,7 +75,8 @@ Sampling begins as soon as a session starts. <PlatformIdentifier name="replays-s | |||||||||||||
|
||||||||||||||
## Privacy | ||||||||||||||
|
||||||||||||||
The SDK is recording and aggressively redacting all text and images. We plan to add fine controls for redacting, but in this version, we just allow either on or off. The default is on. Please don’t turn it off if you have sensitive data in your app. Before the Beta is complete, we'll give you the controls you need. | ||||||||||||||
The SDK is recording and aggressively masking all text, images and webviews. Please don’t turn it off if you have sensitive data in your app. | ||||||||||||||
However, if you're working on a mobile app that's free of PII or other types of private data, you can opt out of the default text and image masking settings. To learn more about Session Replay privacy, [read our docs](/platforms/android/session-replay/privacy/). | ||||||||||||||
Comment on lines
+78
to
+79
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. l: Nit pick because I was initially confused on what to turn off. Probably it's clear enough based on the context even without the suggested change.
Suggested change
Made a few small language tweaks. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We should reword it on the Android docs too:
Suggested change
|
||||||||||||||
|
||||||||||||||
<Note> | ||||||||||||||
|
||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,112 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
--- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
title: Privacy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sidebar_order: 5501 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
notSupported: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
description: "Learn how to mask parts of your app's data in Session Replay." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
--- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Alert> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Using custom masking in your Session Replays may accidentally expose sensitive customer data. Before publishing an App with Session Replay enabled, make sure to test it thoroughly to ensure that no sensitive data is exposed. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Alert> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+8
to
+12
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
By default, our Session Replay SDK masks all text content, images, webviews, and user input. This helps ensure that no sensitive data is exposed. You can also manually choose which parts of your app's data you want to mask by using the different options listed below. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
To disable the default masking behavior (not to be used on applications with sensitive data): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
```javascript | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sentry.mobileReplayIntegration({ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maskAllText: false, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maskAllImages: false, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maskAllVectors: false, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
_Make sure your Sentry React Native SDK version is at least 5.36.0 or 6.3.0._ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+13
to
+27
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
## Mask and Unmask Components | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+26
to
+28
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I: Masking all items doesn't require the mentioned versions, but masking specific items surely do, so I suggest moving this part inside of
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
You can choose which views you want to mask or unmask by using the `Mask` or `Unmask` components. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
```jsx | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import * as Sentry from '@sentry/react-native'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const Example = () => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<View> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Sentry.Unmask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text>This will be unmasked</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Sentry.Unmask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Sentry.Mask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text>This will be masked</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Sentry.Mask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</View> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
## General Masking Rules | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
When components are wrapped by `Unmask`, **only direct children will be unmasked**. You'll need to explicitly wrap each further child if you want them to appear in the replay. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+49
to
+51
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
```jsx | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Sentry.Unmask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This will be unmasked | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This will be masked | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This will be unmasked | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Sentry.Unmask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
When components are wrapped by `Mask`, **all children will be masked**. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
```jsx | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Sentry.Mask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This will be masked | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This will be masked | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This will be masked | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Sentry.Mask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
### Masking Priority | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
If a view is marked as masked, it will always be masked, even if it's a child of an unmasked view. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
```jsx | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Sentry.Mask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text>This will be masked</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Sentry.Unmask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text>This will be masked</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Sentry.Unmask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Sentry.Mask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The `Mask` component can't be unmasked. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
```jsx | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Sentry.Unmask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Sentry.Mask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Text>This will be masked</Text> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Sentry.Mask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
</Sentry.Unmask> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
## Troubleshooting | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The `Mask` and `Unmask` components are native components on iOS and Android and are compatible with both the New Architecture and the Legacy Architecture. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The masking components behave as standard React Native `View` components. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
If you are experiencing issues with unmasking more than one level deep, check if the wrapped components are present in the native views hierarchy. If not your view were evaluated by React Native to be flattened. Read more about [flattening views](https://reactnative.dev/architecture/view-flattening) in the React Native documentation. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+106
to
+112
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this text widespread? If so, we could reword it everywhere IMO
Made a few language tweaks to @bruno-garcia edits :)