react-native-acoustic-connect-beta 19.0.21 → 19.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 19.0.23 (2026-09-10)
2
+
3
+ ### Reverts
4
+
5
+ * Revert "Beta ReactNativeConnect build: 18.0.36" ([609ad7d](https://github.com/aipoweredmarketer/react-native-acoustic-connect-beta/commit/609ad7d3244ec06f27dced5864d40585c5b3c9cf))
6
+ ## 19.0.22 (2026-09-10)
7
+
8
+ ### Reverts
9
+
10
+ * Revert "Beta ReactNativeConnect build: 18.0.36" ([609ad7d](https://github.com/aipoweredmarketer/react-native-acoustic-connect-beta/commit/609ad7d3244ec06f27dced5864d40585c5b3c9cf))
1
11
  ## 19.0.21 (2026-09-09)
2
12
 
3
13
  ### Reverts
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "Connect": {
3
3
  "AndroidNotificationIconResName": "ic_notification",
4
- "AndroidVersion": "11.0.23-beta",
4
+ "AndroidVersion": "11.0.26-beta",
5
5
  "AppKey": "YOUR_CONNECT_APP_KEY_HERE",
6
6
  "KillSwitchUrl": "YOUR_KILL_SWITCH_URL_HERE",
7
7
  "PostMessageUrl": "YOUR_POST_MESSAGE_URL_HERE",
package/README.md CHANGED
@@ -569,13 +569,22 @@ one. To turn screenshot capture off on both platforms:
569
569
  "Connect": {
570
570
  "layoutConfig": {
571
571
  "AutoLayout": {
572
- "GlobalScreenSettings": { "ScreenShot": false, "CaptureScreenshotOn": 0 }
572
+ "GlobalScreenSettings": { "ScreenShot": false }
573
573
  }
574
574
  }
575
575
  }
576
576
  }
577
577
  ```
578
578
 
579
+ `ScreenShot` is the cross-platform switch — set it in `layoutConfig` (or per
580
+ platform) and both native SDKs honour it. `CaptureScreenshotOn` is a related
581
+ but **iOS-only** key: iOS's native auto-instrumentation reads it, but on
582
+ Android the equivalent reader has no callers, so `CaptureScreenshotOn` is
583
+ accepted wherever you put it and does nothing there. Set it only under
584
+ `layoutConfigIos` if you want it; leaving it out of `layoutConfigAndroid` (or
585
+ the shared `layoutConfig`) costs nothing on Android and avoids implying it
586
+ does something it doesn't.
587
+
579
588
  Put anything common in `layoutConfig` and use `layoutConfigIos` /
580
589
  `layoutConfigAndroid` only for what differs. The platform block is **deep-merged**
581
590
  over the shared one, so it refines the baseline rather than replacing it: an
@@ -584,6 +593,32 @@ rules, and every other shared value. Arrays are replaced outright rather than
584
593
  concatenated, so a platform block can shorten or clear a shared list such as
585
594
  `MaskIdList`.
586
595
 
596
+ #### Masking is selection, then redaction — an unmatched pattern leaves data unmasked
597
+
598
+ A screen rule's `Masking` block works in two independent steps: a control is
599
+ first **selected** by a matching `MaskIdList` (control id), `MaskValueList`
600
+ (control value), `MaskAccessibilityIdList` (accessibility id), or
601
+ `MaskAccessibilityLabelList` (accessibility label) pattern, and only a
602
+ *selected* control is redacted — its value, and (Connect iOS 2.1.22+ / Android
603
+ 11.0.23-beta+ only — older SDKs serialised the accessibility object verbatim
604
+ regardless of masking) its accessibility label and hint. A control whose value
605
+ never matches any pattern in any of the four lists is not masked in any field.
606
+ That's by design, not a bug — but it means a client whose patterns don't
607
+ happen to match a given value can believe that value is masked when it never
608
+ was.
609
+
610
+ Email addresses are an easy miss: they rarely match a card-number or
611
+ `SECRET-`-style pattern, and free-text fields (bios, support messages,
612
+ usernames) routinely contain one. For any screen that collects email
613
+ addresses, add a pattern to `MaskValueList`:
614
+
615
+ ```json
616
+ { "MaskValueList": ["[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"] }
617
+ ```
618
+
619
+ (The `bare-workflow` and `expo` sample `ConnectConfig.example.json` already
620
+ ship this pattern on `GlobalScreenSettings`.)
621
+
587
622
  When no block applies, each native SDK keeps the defaults from its own bundled
588
623
  layout config:
589
624
 
@@ -636,6 +671,54 @@ every shipped template uses. To stand layout capture down deliberately, set
636
671
  `CaptureLayoutOn: 0` on the rule instead — it is the key that means that, and it
637
672
  leaves `NumberOfWebViews` free to describe the screen.
638
673
 
674
+ #### WebView capture on Android: prerequisites and two open limitations
675
+
676
+ A screen that hosts a `react-native-webview` `WebView` has capture behaviour
677
+ beyond the config above:
678
+
679
+ - **The WebView must be scrolled on screen.** A capture only records what is
680
+ currently visible — the native tree-walk skips subtrees outside the
681
+ viewport by design. A `WebView` sitting below the fold at the default
682
+ scroll position yields a layout with no WebView nodes at all, which looks
683
+ exactly like WebView capture never engaged. Scroll it fully into view
684
+ before triggering (or waiting on) a capture.
685
+ - **`GoogleWebViewEnabled`** is a top-level `Connect` key (Android only,
686
+ default `true`) that gates whether the SDK instruments WebViews at all:
687
+
688
+ ```json
689
+ { "Connect": { "GoogleWebViewEnabled": false } }
690
+ ```
691
+
692
+ Set to `false`, the SDK does not discover or walk into any `WebView` on the
693
+ screen — the rest of that screen still captures normally. It does not gate
694
+ anything else on this list: screen views, clicks, and non-WebView layout
695
+ content are unaffected either way.
696
+ - **A discovered WebView currently drops that screen's whole layout
697
+ message.** Once the SDK finds a `WebView`, it waits for a DOM-capture
698
+ correlation id from the page before it can finish and post the layout — and
699
+ a React Native-hosted `WebView` never supplies one, so the wait never
700
+ resolves and the *entire* screen's layout message is dropped, not just the
701
+ WebView's portion. Confirmed present in Android Connect **11.0.23-beta**, the
702
+ newest published artifact at the time of writing, and in every earlier version
703
+ in the supported range — measured on an emulator, where a capture on a screen
704
+ with a visible `WebView` posted **no messages at all** for that session, since
705
+ the layout's queue placeholder blocks the batch it sits in. There is no
706
+ client-side fix; `GoogleWebViewEnabled: false` (below) avoids it by not
707
+ instrumenting the `WebView` in the first place. A fix exists in the native SDK
708
+ but is not in any published artifact yet — check the Android Connect release
709
+ notes for a version above 11.0.23-beta before assuming this still applies.
710
+ - **Enabling WebView capture replaces the app's `WebViewClient`.** The native
711
+ SDK installs its own `WebViewClient` on that `WebView` to instrument it, in
712
+ place of the one `react-native-webview` had set — so callbacks such as
713
+ `onHttpError` and `onNavigationStateChange` on that `WebView` stop firing
714
+ while capture is active. Same status as the item above: present through Android
715
+ Connect **11.0.23-beta**, fixed in the native SDK but not yet published, and
716
+ the rest of the screen is unaffected either way.
717
+
718
+ Both of the limitations above only occur once the SDK is instrumenting a
719
+ `WebView`, so `GoogleWebViewEnabled: false` avoids both — at the cost of
720
+ getting no WebView capture on that screen at all.
721
+
639
722
  #### Capture timing (`CaptureLayoutDelay`)
640
723
 
641
724
  `AutoLayout.GlobalScreenSettings.CaptureLayoutDelay` is how long, in
@@ -24,7 +24,7 @@
24
24
  "IpPlaceholder": "N/A",
25
25
  "KillSwitchAsync": true,
26
26
  "KillSwitchDelay": 300,
27
- "LibraryVersion": "11.0.23-beta",
27
+ "LibraryVersion": "11.0.26-beta",
28
28
  "LogFullRequestResponsePayloads": true,
29
29
  "MessageTypeHeader": "WorklightHit",
30
30
  "MessageTypes": "4,5",
@@ -1,4 +1,4 @@
1
- #Wed Sep 09 15:11:03 GMT 2026
1
+ #Thu Sep 10 19:35:29 GMT 2026
2
2
  UseWhiteList=true
3
3
  PrintScreen=3
4
4
  UseRandomSample=false
package/package.json CHANGED
@@ -233,7 +233,7 @@
233
233
  "source": "src/index",
234
234
  "summary": "react-native ios android tealeaf connect cxa wxca er enhanced-replay",
235
235
  "types": "./lib/typescript/src/index.d.ts",
236
- "version": "19.0.21",
236
+ "version": "19.0.23",
237
237
  "workspaces": [
238
238
  "example",
239
239
  "Examples/bare-workflow"