Android SDK Changelog
Release history and version notes for the UXCam Android SDK
UXCam Android Changelog
V. 3.11.2 - October 7, 2026
- Fix (upload): Sessions are no longer held back when the device is at low battery — recordings now upload as soon as network is available regardless of battery level
- Fix (screenshot): Resolved a native crash in apps using improved WebView capture; frame data is now sent through a dedicated JavaScript interface instead of the WebView messaging channel, which was triggering a null-pointer crash on Chromium-based WebViews
- Add (occlusion): View-level occlusions can now render as a blur of the view's own pixels instead of a solid rectangle — pass
ViewOcclusionStyle.BLURtooccludeSensitiveView(view, style)to enable the blur style
V. 3.11.1 - September 29, 2026
- Fix (occlusion): WebView masking is now bounded to the WebView itself, applied before the first frame is captured, and covers every recycler list row sharing an occluded view ID, preventing sensitive content from appearing unmasked during navigation and rapid layout changes
- Fix (session): Resolved an issue where a session verified while the app was in the background was replayed as a new session on the next foreground; sessions also now stop cleanly even when a frame capture stalls
- Fix (session): Offline sessions without a backend ID are now re-verified automatically on the next app launch and proceed to upload with a bounded retry budget and backoff; sessions recorded on cached settings are correctly reported as offline to the backend
- Fix (upload): Each session's upload credentials are now stored encrypted in its upload manifest, allowing sessions to authenticate their upload securely across app restarts without requiring re-verification
- Fix (session): Sessions excluded by the data filter no longer upload their video on a subsequent launch, and session data and video now upload in parallel for faster session delivery
- Fix (stability): Corrected lock semantics for checkpoint and video state to prevent crashes in apps using R8 or ProGuard code shrinking
V. 3.11.0 - September 15, 2026
- Enhance (screenshot): Added opt-in improved WebView capture — enable
enableImprovedWebViewCaptureto reconstruct WebView recordings from sanitized DOM snapshots instead of screen pixels, giving more accurate session replays for apps with WebView content - Fix (session): Resolved an issue where sessions could receive a blank backend identity after verification, causing repeated re-verification attempts and unreliable session continuity
- Fix (stability): Corrected the ordering of session stop relative to app visibility changes, preventing edge-case data loss or incorrect upload behaviour during app lifecycle transitions
V. 3.10.10 - September 10, 2026
- Fix (occlusion): WebView occlusion re-scans the view hierarchy when cached view references have expired, so sensitive content stays masked during rapid frame transitions rather than appearing unmasked
- Fix (screenshot): WebView observation is unified with stale-poll protection, so capture behaviour is consistent across all WebView lifecycle states
- Fix (screenshot): WebView sensitive regions are masked with precise bounded coverage per region rather than blurring the entire WebView viewport when geometry is uncertain
- Fix (upload): Sessions are no longer discarded when an upload receives an authorization refusal — the SDK refreshes credentials and retries, preserving session data
- Fix (stability): Upload manifest writes now use correct lock semantics, preventing a potential crash in apps using R8 or ProGuard code shrinking during session upload
V. 3.10.9 - August 25, 2026
- Fix (occlusion): WebView occlusion is now frame-accurate — masks land on the pixels they were measured for during scroll, navigation, and fast motion
- Fix (occlusion): The WebView occlusion bridge is authenticated, closing a path where injected coordinates could shift or bypass masking
- Fix (screenshot): Capture waits for a stable WebView marker and fails closed when WebView geometry is uncertain, so sensitive content stays covered
- Fix (gesture): The double-tap verdict is deferred to finger-up, so tap-then-drag and scroll gestures are no longer recorded as double-taps
- Fix (crash): Crash capture is bounded behind a memory-pressure policy, preventing the crash handler from causing an ANR on low-memory devices
- Fix (upload): A cancelled upload keeps its cancel reason instead of being overwritten by an internal status marker
V. 3.10.8 - August 13, 2026
- Fix (occlusion): Mask sensitive content in WebViews using frame-locked geometry so that occlusion boxes accurately cover the right pixels during scroll, navigation, and screen transitions, rather than the position of fields from a prior frame
- Fix (occlusion): Mask sensitive text fields inside popups and dialogs, which previously appeared unmasked in session recordings
- Enhance (performance): Reduce CPU overhead from WebView occlusion tracking by measuring sensitive field positions on demand rather than on every animation frame
- Fix (upload): Improve session upload reliability — uploads no longer stall when Android misreports connectivity for a backgrounded process, crash-recovery sessions survive a missing upload manifest, and non-retryable upload failures now correctly clean up session storage
- Fix (stability): Prevent build failures in apps using code shrinking by preserving the required Kotlin facades and consumer ProGuard rules for SDK components
V. 3.10.7 - July 27, 2026
- Fix (occlusion): Keep sensitive screens fully masked during navigation by switching from a fixed-duration timer to event-driven retention, preventing unblurred frames when leaving or entering a sensitive screen
- Fix (occlusion): Prevent a sensitive screen from being captured unblurred during the brief gap between when a new screen is drawn and when its occlusion tag is committed
- Enhance (occlusion): Apply
occludeAllTextFieldsto cross-platform SDK frames so text field masking is consistent across all rendering paths - Enhance (occlusion): Extend occlusion support to content inside cross-origin iframes
- Fix (startup): Surface a clear error when the SDK starts with an empty API key, replacing the previous silent failure that produced no recording and no diagnostic output
- Fix (stability): Prevent a crash caused by accessing window decoration off the main thread during concurrent activity layout builds
V. 3.10.6 - July 10, 2026
- Fix (recording): Capture content from native platform views such as maps, video players, and camera previews that previously appeared blank or grey in session recordings
- Fix (occlusion): Remove the automatic occlusion limit so all sensitive views are detected and masked regardless of how many appear on screen
- Fix (recording): Capture gestures correctly on screens that opt out of automatic tagging in single-activity apps
- Fix (stability): Write session data incrementally and recover sessions after a crash, reducing the chance of incomplete or missing sessions
- Fix (upload): Harden upload retry logic with preflight size checks and retry limits to improve session delivery reliability
- Fix (recording): Prevent previous screen content from appearing in recordings when a screen video fails to load
V. 3.10.5 - June 19, 2026
- Enhance (occlusion): Add occlusion timeline intervals for more accurate privacy coverage tracking
- Fix (occlusion): Improve occlusion reliability across screen transitions
- Fix (upload): Resolve session upload stalls when WiFi-only mode is enabled on VPN-connected devices
- Fix (upload): Preserve the forced-upload setting across SDK configuration refreshes
- Fix (stability): Upload sessions from previously crashed app launches on the next app start
- Fix (stability): Correctly respect the SDK configuration when crash handling is disabled
V. 3.10.4 - June 16, 2026
- Fix (startup): Resolve ANRs caused by concurrent foreground lifecycle transitions during SDK initialization
- Fix (recording): Ensure sessions are captured when the SDK initializes after the first activity has already resumed
- Fix (stability): Guard ART monitor to prevent verification errors on certain devices
- Fix (memory): Reduce peak memory usage for long sessions by streaming session data incrementally rather than accumulating it in memory
- Fix (memory): Resolve memory leak in the session recording pipeline
V. 3.10.3 - June 10, 2026
- Fix (tagging): Keep prior screen tag for gestures on ignored screens
- Enhance: remove duplicate call to parse as Thread.getAllStackTraces() suspends every thread in the JVM to capture a consistent snapshot
- Enhance: split parse so that ThreadsArrayJsonParser does not cause oom on low end devices
- Fix (di): Prevent CoreModule deadlock between coreModuleLock and framePipelineManagerLock
- Fix (di): Replace synchronized DCL blocks with @Synchronized methods to avoid R8 VerifyError
- Feat (session): Add OnSessionStopListener callback to stopSessionAndUploadData
- Fix (gesture): Detect gestures in bottom sheet dialogs
- Fix (occlusion): Preserve activity decor against stale WMG cache
- Fix (screenaction): Clear viewArrayList on Compose taps to prevent stale XML attribution
- Fix (screenaction): Snapshot Compose actions at touch down to fix XML→Compose tap mis-attribution
V. 3.10.2 - May 22, 2026
- Fix (uxcamlib): Add short-break black boundary frame
- Fix (uxcamlib): Preserve crash timeline screen history
- Fix (uxcamlib): Recover cancelled session uploads
- Fix (uxcamlib): Use ascii test names for kotlin classes
- Fix (uxcamlib): Anchor video timing to session stop
- Fix (uxcamlib): Canonicalize timeline screen ownership
V. 3.10.1 - May 18, 2026
- Fix (tagging): Initial fragment tagging race condition on offline cold-start
- Fix (uxcamlib): Synchronize timeline event attribution
- Fix (uxcamlib): Align session screen timeline state
- Fix (screenshot): Preserve compose occlusion across transient tags
- Fix (screenshot): Keep compose occlusion during transient detach
- Fix (file): Cache JSON byte[] once in DataFile write path
V. 3.10.0 - May 5, 2026
- New: Readable fragment screen tagging — fragment screens now show as
Activity/Fragment(e.g.MainActivity/HomeFragment) instead of hex hashes (e.g.MainActivity/0xa1b2c3) in the dashboard timeline - New: Opt-out available via
UXConfig.Builder.enableReadableFragmentNames(false)for customers with analytics tied to legacy hash names - Note: Existing occlusion rules using old hex hash names continue to work — the SDK matches against both names
- Feat (frame-sync): marker-based occlusion via
FrameSyncManager - Fix (occlusion): evict detached Compose occlusions on read
- Fix (capture): skip captures when activity view tree isn't laid out yet
- Fix (occlusion): key
autoByRootbyViewto prevent silent bucket loss - Fix (logcat): use
ProcessBuilderto process logcat data across all API levels
V. 3.9.1 - Apr 9, 2026
- Fix: ANR in
ReflectionUtil.findFieldcaused bygetDeclaredFields()iterating all fields per class level - Fix (rage-tap): use server rage-click config instead of hardcoded defaults
- Fix: skip
canScrollVerticallyonAndroidComposeViewto preventConcurrentModificationExceptionin Compose semantics tree traversal - Fix: resolve ANR caused by checkpoint writing on main thread during
logEvent()calls - Fix (uxcamlib): make cancel lifecycle-owned
- Fix (thread-safety): use
ConcurrentHashMapandConcurrentSkipListSetfor public API data structures - Fix (ANR): prevent ANR by moving blocking public APIs off main thread
- Fix: ANR in
ScreenActionTrackerdue to repeated reflection on every view scan
V. 3.9.0 - Mar 31, 2026
- Feat (identity): user identity is now in-memory only, decoupled from session restart
- Fix: simplified deferred startup lifecycle handling
- Fix (screenshot): centralized blur backend routing
- Fix: redact screen action details for occluded
EditTextviews - Fix: allow gesture tracking on auto-occluded
EditTextviews - Fix (Cordova): text fields get automatically occluded
- Fix: add support for blur radius greater than 25px
V. 3.8.14 - Mar 13, 2026
- Fix (response): prevent NPE when null data is received from server
- Fix: session cancelling due to
OutOfMemoryException - Fix: allow per-view occlusion to apply alongside full-screen occlusion
V. 3.8.13 - Feb 26, 2026
- fix(pixelcopy): capture surface view for overlay window
- fix: initialize gesture detector in main looper
- fix: defer orientation state update until session is running to preserve initial orientation
- fix(memory-leak): prevent memory leak due to retaining activity context
- fix(session-lifecycle): start session when app comes to foreground after failed state
- fix: resolve orientation-related occlusion issues
V. 3.8.12 - Feb 10, 2026
- Fix: excludeMentionedScreens not working on applyOcclusion
- Fix: cancel session if app goes to background before verification response received
- Fix: video not uploading on Force Close
- Fix: batch upload progress flag not resetting on exceptions
- Fix: log formatting issues
- Fix: memory leaks from unclaimed frames, H.264 encoder, and runBlocking operations
- Fix: UI thread blocking when closing debug log files
- Improve: non-blocking verification cancel
- Refactor: session upload pipeline with centralized lifecycle state machine and single gateway
- Refactor: frame capture using callback-based approach instead of complex pooling mechanism
- Refactor: removed VerificationUtil, redundant backend session recovery files, deprecated Gradle properties, and unused bitmap/webview occlusion code
V. 3.8.11 - Jan 27, 2026
- Fix: isRecording() now uses SessionStartGateway with explicit state checks
- Fix: Handle null values before creating JSON object
- Fix: Handle non-fragment activity when fragment tagging is enabled
- Fix: Add null check for context_ before upload to prevent crash
- Improve logging: Added new parameter debugMode to enableIntegrationLogging function to display debug logs
- Improve: removed Timber logging infrastructure and migrated all logs to Verbose logging
V. 3.8.10 - Jan 21, 2026
- Fix: ANR on app startup by deferring CoreModule initialization and using IO dispatcher
- Fix: Prevent app crashes when preconditions are not met
- Improve: Upload debug log file after successful verification with configurable pause toggle
- Refactor: Removed Xamarin wrapper, unused HttpPostService and redundant permission/storage checks
V. 3.8.9 - Jan 14, 2026
- Fix: Integration logs not showing in release mode
- Improve: Added two-level logging system for cleaner debug and diagnostic log separation
- Fix: Active session being accidentally deleted during cleanup operations
- Fix: Video encoder failures and orphan cleanup causing crashes
- Fix: WebView content exposed when alert dialogs appear over WebView
- Fix: Toolbar key not appearing in Flutter datafile for non-navigation scenarios
- Fix: WorkManager crash when uploading sessions from older SDK versions
- Fix: Missing zip extensions on uploaded data and video files
V. 3.8.8 - Jan 6, 2026
- Improve: Synchronously stop session to ensure crash data and crash video are properly captured
- Fix: Total session time and video length mismatch
V. 3.8.7 - Dec 29, 2025
- Fix: Screen recording on full-screen occlusion
- Fix: Crashed sessions uploading when filtered by dashboard settings
V. 3.8.6 - Dec 22, 2025
- Fix: ANR issues caused by blocking SharedPreferences operations
- Fix: Manual occlusion being lost in RecyclerView detach/reattach cycles
- Fix: Flutter occlusion rect alignment with native coordinates
V. 3.8.5 - Dec 18, 2025
- Fix: RecyclerView occlusion disappearing
- Fix: Manual occlusion being lost
- Fix: Cross-platform occlusion rects transformation issues
- Fix: Bitmap dimensions don't match on rotation
- Fix: Flutter bar cutout and release compile issue
- Fix: Dex errors (localiza)
- Fix: Screen tagging skipped when screen recording is paused (reverted)
- Improve: Reduce delta when fast scrolling
V. 3.8.4 - Dec 3, 2025
- Fix: Skip KeyboardInsetsTracker reinstall if already attached to activity
- Fix: Manual screen name being reset on session reset
- Fix: Video orientation not changing correctly
- Fix: Timeline not matching video playback
- Fix: Alert dialogs not appearing in video recordings
- Fix: Session upload not rescheduling when app returns to foreground with WiFi
- Improve: AI text occlusion feature flag auto-enabled when added to config
- Improve: New upload architecture for better reliability
- Improve: Flutter initial screen tagging and navigation handling
- Improve: Remove WorkManager dependency - apps can upload without it
- Improve: Unified occlusion state management across SDK
V. 3.8.3 - Nov 21, 2025
- Fix: Skip KeyboardInsetsTracker reinstall if already attached to activity
- Fix: Delete session if s3 token is missing from backend
- Fix: Crash due to R8 inlining code
- Improve: Flutter occlusion handling
- Improve: Add implementation for flutter occlusion
- Improve: Add support for app key in ae region
V. 3.8.2 - Nov 19, 2025
- Improve: Add UploadService fallback when WorkManager unavailable
- Improve: Add session clock for data/video synchronization
- Refactor: Unify session stop into single path
- Refactor: Replace bitmap with FramePacket for better frame handling
- Fix: Deadlock when app going to background
- Fix: Flutter not drawing issue on PixelCopy
- Fix: Video duration not matching actual session time
- Fix: Session not uploading on Wi-Fi only mode
- Fix: Occlusion issue in screen and view
V. 3.8.1 - Nov 7, 2025
- Refactored Android Project to improve: Session Upload, Screen Tagging, Video Recording, Compose Occlusion, Frame Pipeline, ServiceHandler and many more.
V. 3.7.3 - Sept 17, 2025
- Fix: resolve session upload issue in release mode
V. 3.7.2 - Aug 21, 2025
- Fix: Red screen appearing when pause/resuming recording and when short breaks are created
- Fix: Occlusion skipping on WebView
- Improve: Shipping AI Text Occlusion as a new optional module
V. 3.7.1 - Jul 29, 2025
- Added: Screen Action / Smart Events support for Jetpack Compose
- Fix: Google Maps ClassNotFoundException
V. 3.7.0 - Jul 1, 2025
- Added: AI Occlusion feature
V. 3.6.43 - Jun 11, 2025
- Fix: Google ads not being clickable
- Fix: Fixed tag on Integration log
- Fix: Crash due to PixelCopyRequest
- Fix: Session shows 00 time stamp
- Fix: Delayed Occlusion elements make PII Data show in screen transitions
- Fix: Flutter Occluded view is being visible while scrolling or navigating
V. 3.6.41 - April 29, 2025
- Fixed occlusion being removed if bottom sheet is presented
- Fixed crash issue for map view in React Native
V. 3.6.40 - April 16, 2025
- Fix: Prevent capturing occluded screens information.
- Fix: ANRs on Android.
- Fix: Flutter crash.
- Improvement: Implement cancel Api.
V. 3.6.39 - March 5, 2025
- Fix: Flutter crash issue due to v2 embedding.
- Fix: Debug logs not reporting correctly.
- Fix: Black screen on few frames.
V. 3.6.38 - February 14, 2025
- Fix: Fixed App Launch Metrics
- Fix: OutOfMemoryError
- Improvement: Excessive logging when parsing HTML
V. 3.6.37 - January 21, 2025
- Added: Added Integration Log
- Fix: crash on Google ad view.
- Fix: Occlusion persists in React Native
V. 3.6.36 - December 17, 2024
- Fix: Flutter Occlusion Skip Issue
- Improvement: Send the video of debug session in new kinesis pipeline to make it available in dashboard sooner.
V. 3.6.35 - December 6, 2024
- Fix: App crash on launch in multidex projects
- Fix: Handled NoSuchMethodError when using reflection
V. 3.6.34 - November 14, 2024
- Fix: Jetpack Compose Views were tagged with incorrect information. SDK now detects clicks on Compose View and tag with null information.
- Fix: Flutter Android - Crash when applying multiple occlusions.
V. 3.6.33 - October 29, 2024
- Improvement: Ignore mobile data limit for data file.
- Fix: Resolve manually tagged screen not being recorded on first start.
- New: Added App launch time metrics.
V. 3.6.32 - September 20, 2024
- Fix: Fixed issue where force-closed session was written with empty timeline data.
- Fix: Handled
DeadSystemExceptionwhen retrieving app version name. - Fix: Resolved issue where user properties were not registered.
V. 3.6.31 - September 11, 2024
- Fix: WebView element occlusion support for native and cross-platform wrappers.
- Fix: Prevented
SurfaceViewrendering inandroidx.camera.view.PreviewViewto avoid recording the camera preview. - Fix: Fixed video filter issues where sessions satisfying filter conditions were not discarded.
- Improvement: Reduced main thread usage during SDK initialization to fix ANR.
- Fix: Fixed issue where session ended after set time, even with
allowShortBreakset to false.
V. 3.6.30 - August 7, 2024
- Fix: Cache verification response to prevent re-verification before expiration.
- Fix: Ignored screen set on dashboard was not reflected on warm start of the app.
- Fix: Safely handle fatal crash,
ArrayIndexOutOfBoundsException @ ScreenTagManagerImpl.
V. 3.6.29 - July 19, 2024
- Fix: Session was not stopped correctly when
androidx.startup.InitializationProvideris removed from the manifest. SDK now falls back to the legacy approach for app lifecycle detection whenInitializationProvideris unavailable.
V. 3.6.28 - June 27, 2024
- Fix: Fixed issue where the first frame after a view appears was not occluded in Jetpack Compose.
- Improvement: Improved occlusion synchronization during view movement by drawing the occlusion rectangle before and after screenshots in Jetpack Compose.
- Fix: Resolved WebView rendering black session video frames in Flutter apps.
- Fix: Fixed dialogs not rendering correctly in Flutter hybrid applications.
V. 3.6.27 - May 31, 2024
- Improvement: Force close support for data file.
- Improvement: Fragment tagging improvements.
- Improvement: Improved exception handling on screen action implementation.
- Fix: Handled
FileNotFoundException.
V. 3.6.26 - May 13, 2024
- Fix: Fixed an issue where sessions were not stopping correctly from cross-platform plugins, which was present in the previous version.
V. 3.6.24 - April 1, 2024
- Fix: Accurate Screen Action detection when interacting with elements that would result in layout updates.
- Fix: Button text change when clicked was not captured accurately.
- Fix: UI properties were tracked on full-screen occlusion.
- Fix: Screen Action for
ListPreferencedata was not captured on click.
V. 3.6.23 - March 18, 2024
- Fix: Prevent
NoSuchElementExceptiondue to race condition on preparing screen bitmap. - Fix: Get Screen action of responsive view.
V. 3.6.22 - February 29, 2024
- Fix:
PixelCopyerror log printed while navigating through activities. - Fix: Previous screen action details were registered for new screen actions in some specific scenarios.
V. 3.6.21 - February 1, 2024
- Fix: View within
BottomSheetFragmentwas not occluded when shown navigating to a new activity. - Fix: View type was sent for occluded view.
- New: Ability to add wrapper info on the tagged screen data.
V. 3.6.20 - January 23, 2024
- Fix: Rage tap session filter did not work.
- Fix: OutOfMemory (OOM) error while encrypting very large videos.
- Fix: Fatal crash with
AssertionErrorwhile looping through layout for screen action. - Fix: Not disabling screen action when accessibility service is enabled.
- Fix: Occluding parent view did not prevent screen action tracking of its child view.
V. 3.6.19 - December 13, 2023
- Fix: Crash - Null cannot be cast to non-null type
android.app.Activity. - Fix: Exception while navigating between Activities.
- Fix: Main thread blocked causing ANR on Android API level 21 and 22.
- New: Added pending session count to verification request.
- Fix: Internal debug logs were only cleared when verification response has status true.
V. 3.6.18 - November 9, 2023
- Fix: Data and video time inconsistency, skipped frame.
- Fix: Screen action data was visible for the occluded view.
- Fix:
Surfaceisn't valid,IllegalArgumentExceptionwhen SDK tries to take screenshot of invalid surface. - Fix: Fatal crash
ArrayIndexOutOfBoundsExceptionandConcurrentModificationExceptiononScreenActionViewsRepositoryImpl.
V. 3.6.17 - October 20, 2023
- Fix: OutOfMemoryError on low-end devices.
- Fix: View time of screen being 0 with gesture time being greater than view arrival time.
- Fix: GLSurfaceView rendered black.
V. 3.6.16 - October 6, 2023
- Fix: Occlusion drawing shift on some devices.
- Fix: Occlusion affecting dialogs.
- Fix: Fatal crash "IllegalStateException: Underflow in restore - more restores than saves".
- Fix: Multi-region infrastructure support.
V. 3.6.15 - September 15, 2023
- Fix: Veracode flagging for "Improper Resource Shutdown or Release".
- Fix: Compose UI dependency updated to version 1.4.3.
- Fix: React Native -
MapViewnot recorded on screen video. - New: Send app environment variable in the verification request.
V. 3.6.14 - August 28, 2023
- Fix: Android: No video uploaded in session if user presses device home button.
- Fix: Android: Missing sessions/SDK not starting if minification is added to app.
- Fix: React Native - Android Native OutOfMemory (OOM) crashes.
Updated about 8 hours ago
Did this page help you?
