Mask PII & Sensitive Content

Good privacy practices are non‑negotiable—especially under GDPR, CCPA and Apple’s App Store policies. UXCam lets you decide what never gets recorded at three levels: text fields, views, or entire screens.

📘

UIKit vs SwiftUI The APIs below come in both flavours: UXCam for UIKit and UXCamSwiftUI helpers built on UXCamCore.


What’s hidden by default?

PlatformOccluded out of the box
UIKitUITextField with UITextContentType of password, creditCardNumber, newPassword, oneTimeCode
SwiftUIAny TextField or SecureField wrapped in .uxcamOcclude()

No code required—these never reach UXCam servers.


Dashboard‑first rules (zero‑code)

  1. Settings → Video Recording Privacy in your UXCam dashboard.
  2. Choose Record • Occlude • Blur globally or per screen.
  3. (Optional) Blur radius selector and Record gestures toggle.
  4. Save → record a test session to verify.

Selecting the Blur option will also enable you to select the blur radius once applied.

🛠️

Priority ladder
Screen‑specific Dashboard rule → Global Dashboard rule → SDK overlay/blur → SDK text‑field occlusion.

You can add screen specific rules with different occlusion types

You can also choose to occlude all text input fields on one or multiple screens.



One‑liner occlusion APIs

Overlay an entire screen

let yellow = UXCamOverlaySetting(color: .systemYellow)
UXCam.applyOcclusion(yellow) // UIKit
// SwiftUI: UXCamCore.applyOcclusion(yellow)

You'll see the desired screen completely hidden while your users navigate trough it.

Blur with custom radius

let blur = UXCamBlurSetting(radius: 6, hideGestures: false)
UXCam.applyOcclusion(blur)

You'll see the chosen screens with a blur applied on top

Blur radios strength examples


Hide all text inputs

UXCam.applyOcclusion(UXCamOccludeAllTextFields())

Hide a single sensitive view

passwordField.uxcamOcclude()                 // SwiftUI
UXCam.occludeSensitiveView(cardNumberView)   // UIKit

Remove occlusion

UXCam.removeOcclusion()            // everything
UXCam.removeOcclusion(of: .blur)   // just blurs

Apply at config time (recommended)

let blur = UXCamBlurSetting(radius: 5)
let occlusion = UXCamOcclusion()
occlusion.apply(blur, screens: ["CheckoutViewController"]) // or SwiftUI tag

let config = UXCamConfiguration(appKey: key)
config.occlusion = occlusion
UXCam.start(with: config)

This keeps all rules in one place and avoids race conditions.


Sample SwiftUI snippet

init() {
  UXCamCore.optIntoSchematicRecordings()
  let cfg = Configuration(appKey: key)
  cfg.enableAutomaticScreenNameTagging = true
  UXCamSwiftUI.start(with: cfg)
}

var body: some View {
  SecureField("Password", text: $pwd)
     .uxcamOcclude(blockGestures: true) // hide & block gestures
}

Verification checklist

  1. Record a debug session through sensitive flows.
  2. Play it back, passwords & cards must be red‑boxed or blurred.
  3. Use the “Record gestures” toggle if taps should not be shown.

Troubleshooting

IssueCauseFix
Overlay shows but gestures still visiblehideGestures defaulted to falseSet hideGestures = true
Blur only on some devicesradius too low on @3x screensUse ≥ 5 or switch to overlay
Text inputs still visibleCustom UITextField subclassCall uxcamOcclude() manually
WebView leaks card numbersBridge not injectedSee Sensitive Data in WebViews guide


What's Next? ...

Excellent! You can record some test sessions and once you're finalised with occlusion, we can move onto custom events and user properties!