feat(android): add features needed for react native android session replay masking#527
Merged
feat(android): add features needed for react native android session replay masking#527
Conversation
3a3bfb7 to
65f2af5
Compare
abelonogov-ld
approved these changes
May 5, 2026
Contributor
abelonogov-ld
left a comment
There was a problem hiding this comment.
Good!, Thanks for checking that react exists
Merged
abelonogov-ld
pushed a commit
that referenced
this pull request
May 6, 2026
🤖 I have created a release *beep* *boop* --- <details><summary>launchdarkly-observability-android: 0.45.0</summary> ## [0.45.0](launchdarkly-observability-android-0.44.0...launchdarkly-observability-android-0.45.0) (2026-05-05) ### Features * **android:** add features needed for react native android session replay masking ([#527](#527)) ([9431a00](9431a00)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk release metadata update that only bumps the `observability-android` package version and changelog/Gradle version, with no code changes in this PR. > > **Overview** > Updates the `sdk/@launchdarkly/observability-android` release from `0.44.0` to `0.45.0` by bumping the version in `.release-please-manifest.json` and `gradle.properties` and adding the corresponding `CHANGELOG.md` entry (React Native Android session replay masking support). > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 2054ba6. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two related fixes to the Android session replay SDK to make masking work correctly with React Native views:
maskXMLViewIdsandunmaskXMLViewIdsnow also match the value of thereact_test_idtag (RN'stestIDprop) when the React Native library is on the runtime classpath. Resolved reflectively so the SDK has no compile-time RN dependency.maskImageViewsnow catches ImageView subclasses (notably RN'sReactImageView) instead of only the exactandroid.widget.ImageViewclass.How did you test this change?
Tested with PR #528 using the example app and capturing a session replay.
Are there any deployment considerations?
N/A
Note
Medium Risk
Updates session replay masking matchers, which can change what UI is captured vs masked (privacy-sensitive) and could cause over/under-masking in apps, especially with mixed native/RN view hierarchies.
Overview
Improves
PrivacyProfilemasking to work with React Native-rendered views by havingmaskXMLViewIds/unmaskXMLViewIdsalso match RN’stestIDvia thereact_test_idview tag (resolved reflectively to avoid an RN dependency).Updates
maskImageViewsto mask allImageViewinstances (including subclasses) by introducing animageViewMatcherinstead of relying on exact-class matching, and refreshes docs/tests to reflect the new behavior.Reviewed by Cursor Bugbot for commit 65f2af5. Bugbot is set up for automated code reviews on this repo. Configure here.