Skip to content

Conversation

zeeshan-devrev
Copy link
Contributor

@zeeshan-devrev zeeshan-devrev commented Aug 29, 2025

Summary

This PR adds examples of masking and unmasking, as well as refines the description of masking in the DevRev SDK for React Native and Expo. It also adds web view masking for Flutter, Cordova, and React Native SDKs.

Connected Issues

Craftsmanship, Integrity, and Devil’s Advocacy

  • Testing: Negative test cases: null or default values, crash and fault injection tests
  • Testing: Boundary conditions: rolling upgrades, denial-of-service, etc.
  • Testing: Fixing a few existing — flaky or permanently-broken — test cases
  • Observing: Detailed error codes so machines can understand
  • Observing: Adding superior metrics for future debugging
  • Observing: Tracing the hairiest pathways for field serviceability
  • Training: KnowledgeOps update? So AI always works.

Story of the craft

@zeeshan-devrev zeeshan-devrev requested a review from a team as a code owner August 29, 2025 16:48
@zeeshan-devrev zeeshan-devrev requested a review from bojan August 29, 2025 16:49
@zeeshan-devrev zeeshan-devrev self-assigned this Aug 29, 2025
@zeeshan-devrev zeeshan-devrev added the documentation Improvements or additions to documentation label Aug 29, 2025
Copy link
Contributor

github-actions bot commented Aug 29, 2025

🌟 EkLine Reviewer

Hello! I’m here to help improve your docs. I’ve reviewed your pull request, and left in-line suggestions for quick fixes. For details, visit the Analytics Page.

For questions or feedback, please email support@ekline.io.

@zeeshan-devrev zeeshan-devrev requested a review from bojan September 1, 2025 08:16
DevRev.unmarkSensitiveViews(tags, successCallback, errorCallback)
```
- Mark an element as masked:
```html
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional step is bulleted instead of numbered. Convert to a numbered list.

Suggested change
```html
1. Mark an element as masked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

DevRev.unmarkSensitiveViews(tags, successCallback, errorCallback)
```
- Mark an element as masked:
```html
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item is an imperative sentence but does not end with appropriate punctuation. Add a period.

Suggested change
```html
1. Mark an element as masked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional step is bulleted instead of numbered. Convert to a numbered list.

Suggested change
```html
2. Mark an element as unmasked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item is an imperative sentence but does not end with appropriate punctuation. Add a period.

Suggested change
```html
2. Mark an element as unmasked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructions should use numbered lists instead of bulleted lists for procedural steps.

### Advanced session recording control while masking
For enhanced session recording and screen transition handling, you can use `DevRevMonitoredApp` as a drop-in replacement for `MaterialApp`. This widget automatically handles screen transition states and ensures proper masking during navigation.
<Callout intent="note">
`DevRevMonitoredApp` is particularly useful when you want to avoid capturing snapshots during screen navigations, especially if any glitches occur. However, in most cases, this won't be necessary, as most of masking scenarios are not affected by standard navigation. This is an optional solution for enhanced control over session recording behavior.
</Callout>

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since there is no change here, it can be ignored.

@zeeshan-devrev zeeshan-devrev requested a review from bojan September 7, 2025 22:36
Copy link
Contributor

github-actions bot commented Sep 8, 2025

DevRev.unmarkSensitiveViews(tags, successCallback, errorCallback)
```
- Mark an element as masked:
```html
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional step is bulleted instead of numbered and should use imperative mood with proper punctuation.

Suggested change
```html
1. Mark an element as masked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional step is bulleted instead of numbered and should use imperative mood with proper punctuation.

Suggested change
```html
2. Mark an element as unmasked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

Copy link
Contributor

Comment on lines +172 to +179
- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructions are presented as a bulleted list instead of a numbered list. For procedural instructions, use numbered lists with imperative verbs at the beginning of each step.

Suggested change
- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```
1. Mark an element as masked.
```html
<label class="devrev-mask">OTP: 12345</label>
  1. Mark an element as unmasked.
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">

<!-- __reviewdog__:ChAxMGJmMTBjYzQ1Zjg1NjhmEgZFa0xpbmU= -->

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

Comment on lines +172 to +179
- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List items do not end with appropriate sentence-ending punctuation. For declarative sentences, a period is required.

Suggested change
- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```
1. Mark an element as masked.
```html
<label class="devrev-mask">OTP: 12345</label>
  1. Mark an element as unmasked.
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">

<!-- __reviewdog__:ChA5NWMxMGYwOTMyMWU2YTMzEgZFa0xpbmU= -->

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional step is bulleted instead of numbered and does not end with appropriate sentence-ending punctuation.

Suggested change
```
1. Mark an element as masked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item does not end with appropriate sentence-ending punctuation.

Suggested change
```
1. Mark an element as masked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional step is bulleted instead of numbered and does not end with appropriate sentence-ending punctuation.

Suggested change
2. Mark an element as unmasked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item does not end with appropriate sentence-ending punctuation.

Suggested change
2. Mark an element as unmasked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.


To mark elements as sensitive inside a web view (`WebView`), apply the `devrev-mask` CSS class. To unmark them, use `devrev-unmask`.

- Mark an element as masked:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional steps should use numbered lists with imperative mood, but this step is bulleted.

Suggested change
- Mark an element as masked:
1. Mark an element as masked:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.


- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional steps should use numbered lists with imperative mood, but this step is bulleted.

Suggested change
<label class="devrev-mask">OTP: 12345</label>
2. Mark an element as unmasked:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.


While the auto-masking feature may be sufficient for most situations, you can manually mark additional views as sensitive using the following method:
While the auto-masking feature is sufficient for most situations, you can manually mark/unmark additional views as sensitive.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
While the auto-masking feature is sufficient for most situations, you can manually mark/unmark additional views as sensitive.
While the auto-masking feature is sufficient for most situations, you can manually mark or unmark additional views as sensitive.


To protect sensitive data, you can mask sensitive UI elements such as text fields, text views, and web views using `DevRevMask` widget, as shown below.
To protect sensitive data, you can mask sensitive UI elements such as text fields, text views using `DevRevMask` widget, as shown below.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
To protect sensitive data, you can mask sensitive UI elements such as text fields, text views using `DevRevMask` widget, as shown below.
To protect sensitive data, you can mask sensitive UI elements such as text fields, text views using the `DevRevMask` widget.


You can also manually unmask UI elements that would otherwise be automatically masked using `DevRevUnmask`:
If any previously masked views need to be unmasked, you can unmask using `DevRevUnmask` widget:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If any previously masked views need to be unmasked, you can unmask using `DevRevUnmask` widget:
If any previously masked views need to be unmasked, you can unmask using the `DevRevUnmask` widget.

Comment on lines 343 to 349
Masking elements inside web views (`WebView`) can be achieved by using the CSS class `devrev-mask` to mask an element and `devrev-unmask` to unmask an element.

Input views such as password text fields are automatically masked in web views.

While the auto-masking feature is sufficient for most situations, you can manually mark/unmark additional views as sensitive.

To mark elements as sensitive inside a web view (`WebView`), apply the `devrev-mask` CSS class. To unmark them, use `devrev-unmask`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is basically the same:

Masking elements inside web views (`WebView`) can be achieved by using the CSS class `devrev-mask` to mask an element and `devrev-unmask` to unmask an element.

As this:

To mark elements as sensitive inside a web view (`WebView`), apply the `devrev-mask` CSS class. To unmark them, use `devrev-unmask`.


Input views such as password text fields are automatically masked in web views.

While the auto-masking feature is sufficient for most situations, you can manually mark/unmark additional views as sensitive.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
While the auto-masking feature is sufficient for most situations, you can manually mark/unmark additional views as sensitive.
While the auto-masking feature is sufficient for most situations, you can manually mark or unmark additional views as sensitive.

Copy link
Contributor

- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional steps should use a numbered list with imperative mood and end with appropriate punctuation.

Suggested change
```
1. Mark an element as masked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional steps should use a numbered list with imperative mood and end with appropriate punctuation.

Suggested change
```
2. Mark an element as unmasked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

Comment on lines 343 to 345
Input views such as password text fields are automatically masked in web views.

While the auto-masking feature is sufficient for most situations, you can manually mark or unmark additional views as sensitive.
Copy link
Contributor Author

@zeeshan-devrev zeeshan-devrev Sep 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is additional but important: to tell customers about auto masking of sensitive web view elements in Flutter SDK, as our Flutter SDK currently doesn't support auto masking of the Flutter views.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, the problem here is the /, the other sentence is the duplicate.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

Copy link
Contributor

```javascript
DevRev.unmarkSensitiveViews(tags, successCallback, errorCallback)
```
- Mark an element as masked:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructions should use a numbered list instead of a bulleted list.

Suggested change
- Mark an element as masked:
1. Mark an element as masked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

```html
<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructions should use a numbered list instead of a bulleted list.

Suggested change
- Mark an element as unmasked:
2. Mark an element as unmasked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

Comment on lines +347 to +354
- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional steps should use a numbered list instead of a bulleted list. Also, list items should end with appropriate sentence-ending punctuation.

Suggested change
- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```
1. Mark an element as masked.
```html
<label class="devrev-mask">OTP: 12345</label>
  1. Mark an element as unmasked.
    <input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">

<!-- __reviewdog__:ChA1ODIzMTg4Yjg1MmUxNmZiEgZFa0xpbmU= -->

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

To mark elements as sensitive inside a web view (`WebView`), apply the `devrev-mask` CSS class. To unmark them, use `devrev-unmask`.

- Mark an element as masked:
```html
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional step uses a bulleted list instead of a numbered list and is missing appropriate sentence-ending punctuation.

Suggested change
```html
1. Mark an element as masked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
```html
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional step uses a bulleted list instead of a numbered list and is missing appropriate sentence-ending punctuation.

Suggested change
```html
2. Mark an element as unmasked.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it the same as Android.

@zeeshan-devrev
Copy link
Contributor Author

@devrev/knowledge-team Could you please review this PR? cc: @bojan

Copy link
Contributor

Comment on lines +175 to 182
```
- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```

### Timers

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30003>
Instructional steps should be presented as a numbered list for procedures.

Suggested change
```
- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```
### Timers
1. Mark an element as masked.
```html
<label class="devrev-mask">OTP: 12345</label>
  1. Mark an element as unmasked.
    <input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">

<!-- __reviewdog__:ChBmNjE1MjYwYzc3MjE3ZDUyEgZFa0xpbmU= -->

- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item does not end with appropriate sentence-ending punctuation.

Suggested change
```
- Mark an element as masked.

- Mark an element as unmasked:
```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item does not end with appropriate sentence-ending punctuation.

Suggested change
```
- Mark an element as unmasked.


To mark elements as sensitive inside a web view (`WebView`), apply the `devrev-mask` CSS class. To unmark them, use `devrev-unmask`.

- Mark an element as masked:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item does not end with appropriate sentence-ending punctuation. Default to a period.

Suggested change
- Mark an element as masked:
- Mark an element as masked.

```html
<label class="devrev-mask">OTP: 12345</label>
```
- Mark an element as unmasked:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item does not end with appropriate sentence-ending punctuation. Default to a period.

Suggested change
- Mark an element as unmasked:
- Mark an element as unmasked.

```html
<input type="text" placeholder="Enter Username" name="username" required class="devrev-unmask">
```

### Advanced session recording control while masking
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30001>
Instructional title starts with a noun phrase ('Advanced session recording control while masking') instead of an infinitive verb. Rewrite to use an infinitive verb.

Suggested change
### Advanced session recording control while masking
### Control advanced session recording while masking

### Mask elements inside web views

To mark elements as sensitive inside a web view (`WebView`), apply the `devrev-mask` CSS class. To unmark them, use `devrev-unmask`.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item does not end with appropriate sentence-ending punctuation. Default to a period for declarative sentences.

Suggested change
- Mark an element as masked.

- Mark an element as masked:
```html
<label class="devrev-mask">OTP: 12345</label>
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine] <EK30005>
List item does not end with appropriate sentence-ending punctuation. Default to a period for declarative sentences.

Suggested change
```
- Mark an element as unmasked.

@zeeshan-devrev zeeshan-devrev merged commit d136fd1 into main Sep 15, 2025
6 checks passed
@zeeshan-devrev zeeshan-devrev deleted the feature/react-native-sdk-masking-unmasking-examples branch September 15, 2025 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants