Describe the bug
On Android, package-selection-driven visibility can fail to update correctly inside a paywall package item.
The UX problem is that when a user selects a package, a layer inside that package card that should disappear for the selected state can remain visible. The selection itself changes, but the card does not fully update to reflect the new
visual state, so the paywall looks stale or inconsistent.
iOS (correct behavior):

Android (wrong behavior):

- Environment
- Platform: Android
- SDK version: 9.29.0
- OS version: 14
- Android Studio version: -
- How widespread is the issue. Percentage of devices affected: -
- Debug logs (https://docs.revenuecat.com/docs/debugging) that reproduce the issue
- Steps to reproduce, with a description of expected vs. actual behavior
- Create a paywall with multiple packages.
- Add a conditional layer inside a package item that should hide once that package becomes selected.
- Open the paywall on Android.
- Tap that package.
A possible culprit is the selected-package evaluation in StackComponentState.kt. In particular, override resolution appears to use:
selectedPackageIdentifier = applicablePackage?.identifier
while applicablePackage appears to resolve like this:
style.rcPackage ?: selectedPackageProvider()
Describe the bug
On Android, package-selection-driven visibility can fail to update correctly inside a paywall package item.
The UX problem is that when a user selects a package, a layer inside that package card that should disappear for the selected state can remain visible. The selection itself changes, but the card does not fully update to reflect the new
visual state, so the paywall looks stale or inconsistent.
iOS (correct behavior):

Android (wrong behavior):

A possible culprit is the selected-package evaluation in
StackComponentState.kt. In particular, override resolution appears to use:selectedPackageIdentifier = applicablePackage?.identifierwhile
applicablePackageappears to resolve like this: