Skip to content

Release/9.29.1#3320

Open
facumenzella wants to merge 3 commits intolatest-minorfrom
release/9.29.1
Open

Release/9.29.1#3320
facumenzella wants to merge 3 commits intolatest-minorfrom
release/9.29.1

Conversation

@facumenzella
Copy link
Copy Markdown
Member

@facumenzella facumenzella commented Apr 9, 2026

RevenueCatUI SDK

Paywallv2

✨ New Features


Note

Medium Risk
Updates paywall rendering logic to conditionally hide/show package components based on new visible fields and override evaluation, which could affect paywall display in production. Version/doc release bumps are low risk, but UI behavior changes warrant careful review and testing across conditions.

Overview
Bumps the SDK release to 9.29.1 (version files, sample app dependency pins, docs S3 deploy path, and changelogs).

Adds Paywallv2 package-level visibility: PackageComponent now supports a visible flag plus conditional overrides via PartialPackageComponent, and RevenueCatUI evaluates those overrides at runtime to hide PackageComponentView when not visible.

Extends style/state plumbing to carry package override metadata and offer eligibility, updates unsupported-condition detection for package overrides, and adds unit/UI tests plus refreshed backend-integration golden responses.

Reviewed by Cursor Bugbot for commit 86dea6f. Bugbot is set up for automated code reviews on this repo. Configure here.

facumenzella and others added 2 commits April 9, 2026 14:42
…verrides (#3279)

## Summary

Implements Android SDK support for khepri#18819 which adds a `visible`
field and `overrides` to the `Package` and `PartialPackage` schema,
allowing packages to be hidden by Rules.

- Adds `visible: Boolean?` and `overrides:
List<ComponentOverride<PartialPackageComponent>>` to `PackageComponent`
- Adds `PartialPackageComponent` with `visible: Boolean?` (mirrors
khepri's `PartialPackage`)
- Adds `PresentedPackagePartial` following the existing partial
component pattern
- `PackageComponentStyle` now implements `PackageContext` and carries
package-level `visible`, `overrides`, and `offerEligibility`
- New `PackageComponentState` evaluates overrides at render time (window
size, selection, offer eligibility, custom variables)
- `PackageComponentView` gates rendering on the resolved package-level
visibility
- `containsUnsupportedCondition` updated to check package-level
overrides

## Test plan

- [x] Unit tests: deserialization of new `visible` and `overrides`
fields (`PackageComponentTests`)
- [x] Unit tests: `StyleFactory` correctly populates `visible` and
`overrides` on `PackageComponentStyle` (`StyleFactoryTests`)
- [x] Unit tests: `containsUnsupportedCondition` detects unsupported
conditions in package overrides (`ContainsUnsupportedConditionTests`)
- [x] UI tests: package hidden when `visible=false`, shown when
`visible=true`, and toggled via `selected_package` override condition
(`VisibilityConditionTests`)
- [x] Snapshot tests: need to be regenerated after merging (run `bundle
exec fastlane generate_snapshots_RCUI`)

## Related

- Backend PR: RevenueCat/khepri#18819
- iOS implementation adds the same feature in
`PaywallPackageComponent.swift` + `PackageComponentViewModel.swift`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Changes paywall rendering behavior by conditionally hiding
`PackageComponent`s based on new rule evaluation, which could affect
purchase UI visibility if misconfigured; coverage is improved with new
unit/UI tests.
> 
> **Overview**
> Adds package-level visibility control to paywalls by extending
`PackageComponent` with an optional `visible` flag plus conditional
`overrides` (via new `PartialPackageComponent`).
> 
> On the UI side, introduces `PresentedPackagePartial` and a new
`PackageComponentState` that evaluates package overrides at render time
(screen size/selection/offer eligibility/custom variables) and updates
`PackageComponentView` to skip rendering when the resolved visibility is
false; `StyleFactory` now builds and carries these overrides/visibility
(defaulting to visible) and `containsUnsupportedCondition` now considers
package-level overrides. Tests are expanded to cover JSON
deserialization, style creation defaults, unsupported-condition
detection, and Compose visibility behavior for packages.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
0abf6ab. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit e224b09. Configure here.

<html>
<head>
<meta http-equiv="refresh" content="0; url=https://sdk.revenuecat.com/android/9.28.1/index.html" />
<meta http-equiv="refresh" content="0; url=https://sdk.revenuecat.com/android/9.29.0/index.html" />
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs index.html redirects to wrong version

Medium Severity

The docs/index.html redirect points to 9.29.0/index.html, but the CI deploy step syncs docs to the 9.29.1 path on S3. After deployment, visitors hitting the docs root will be redirected to the 9.29.0 documentation instead of the newly deployed 9.29.1 docs. The redirect URL needs to match the version being deployed.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit e224b09. Configure here.

@vegaro vegaro changed the base branch from main to latest-minor April 9, 2026 13:09
Copy link
Copy Markdown
Member

@vegaro vegaro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good

…3302)

This PR automatically updates the golden test files in
`purchases/src/test/resources/backend_integration_tests_golden/` based
on the latest backend integration test results.

Generated from branch: `main`

Please review the changes to ensure they are expected.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Only updates golden JSON fixtures used by backend integration tests;
no production code changes. Risk is limited to potentially masking an
unintended backend response change if the removed field was important to
assert.
> 
> **Overview**
> Updates the `ProductionBackendIntegrationTest` golden response
fixtures for both offerings and verified-offerings requests.
> 
> The expected JSON now reflects a slightly smaller payload:
`Content-Length` is updated and the `published_fonts` field is no longer
present in the paywall components payload.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
b12023d. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@tonidero
Copy link
Copy Markdown
Contributor

tonidero commented Apr 9, 2026

Nice, I think this can be closed now?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants