SIGN IN SIGN UP

fix(replay): Fix Compose masking on obfuscated/minified builds (#5503)

* try to run replay tests on gh emulators

* Format code

* feat(replay): fail fast on swallowed Compose masking errors in CI

Add an internal SentryReplayDebug.failFast switch (gated on the
io.sentry.replay.compose.fail-fast system property) that re-throws the
exceptions ComposeViewHierarchyNode normally swallows in fromComposeNode
and fromView. Enabled in the sentry-samples-android app and the on-device
ReplayTest/ReplaySnapshotTest so our release/obfuscated builds running on
real devices in CI crash instead of silently degrading masking. Defaults
off, so customers are unaffected.

Also add consumer proguard keep rules for the LayoutNode internals
(getChildren/getOuterCoordinator/getCollapsedSemantics) that are looked up
via reflection on Compose < 1.10, so R8 doesn't strip or rename them.

Also guard the on-device tests against GitHub-hosted emulators, which
can't capture screenshots reliably.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Sentry Github Bot <bot+github-bot@sentry.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
R
Roman Zavarnitsyn committed
abcd8895429bce96de12618799bf303bb34d2312
Parent: b936425
Committed by GitHub <noreply@github.com> on 6/8/2026, 3:37:59 PM