Fix 1px seam between sliding multipage paywall pages#3526
Merged
Conversation
The two page surfaces were positioned by independent translationX expressions, leaving a sub-pixel gap between the two graphics layers that rendered as a 1px white line (the background showing through) during the slide. Snap the incoming surface's edge to a whole pixel and derive the outgoing offset from it so the two surfaces share an identical edge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
facumenzella
approved these changes
Jun 2, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3526 +/- ##
=======================================
Coverage 80.04% 80.04%
=======================================
Files 370 370
Lines 15049 15049
Branches 2074 2074
=======================================
Hits 12046 12046
Misses 2161 2161
Partials 842 842 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Only the pixel-snapping test can actually falsify the old implementation. The other tests (progress 0/1 boundaries, adjacency loop, backward direction, parked step) pass with the pre-fix code and add noise without signal. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
matteinn
pushed a commit
to matteinn/purchases-android
that referenced
this pull request
Jun 5, 2026
**This is an automatic release.** ## RevenueCat SDK ### ✨ New Features * Add presented offering context to custom paywall events (RevenueCat#3424) via Rick (@rickvdl) * Add Workflows list endpoint (RevenueCat#3509) via Cesar de la Vega (@vegaro) ## RevenueCatUI SDK ### Paywalls_v2 #### 🐞 Bugfixes * Fix 1px seam between sliding multipage paywall pages (RevenueCat#3526) via Cesar de la Vega (@vegaro) ### 🔄 Other Changes * refactor: extract Offering.presentedOfferingContext() helper and apply across SDK (RevenueCat#3513) via Rick (@rickvdl) * Add JSON Logic string + array operators (RevenueCat#3485) via Antonio Pallares (@ajpallares) * Add ForbiddenPublicSealedClass detekt rule (RevenueCat#3503) via Toni Rico (@tonidero) * Update baseline profiles (RevenueCat#3519) via RevenueCat Git Bot (@RCGitBot) * build(deps): bump fastlane-plugin-revenuecat_internal from `af7bb5c` to `ce6a7ef` (RevenueCat#3515) via dependabot[bot] (@dependabot[bot]) * Add JSON Logic comparison operators (<, <=, >, >=) (RevenueCat#3484) via Antonio Pallares (@ajpallares) * Add JSON Logic arithmetic operators (+, -, *, /, %) (RevenueCat#3483) via Antonio Pallares (@ajpallares) * Add WorkflowEvent model and backend serialization (RevenueCat#3486) via Cesar de la Vega (@vegaro) * RulesEngine: add JSON Logic predicate evaluator (RevenueCat#3482) via Antonio Pallares (@ajpallares) * Add :rules-engine-internal skeleton module (RevenueCat#3478) via Antonio Pallares (@ajpallares) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Version bump and changelog/docs/CI path updates only; no application logic changes in the diff. > > **Overview** > This **automatic release** finalizes **Android SDK 10.8.0** by replacing **`10.8.0-SNAPSHOT`** with **`10.8.0`** across versioning (`gradle.properties`, `.version`, `Config.frameworkVersion`), sample apps, and changelog files. > > Release notes for **10.8.0** are recorded in **`CHANGELOG.md`** / **`CHANGELOG.latest.md`** (workflows list API, paywall offering context on custom events, multipage paywall seam fix, rules-engine/JSON Logic work, etc.). **Docs publishing** now targets **`10.8.0`** on S3, and **`docs/index.html`** redirects to the new doc URL. > > There are **no functional code changes** in this diff beyond version strings and release metadata. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit c3048b8. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A 1px white line showed between the two pages during a multipage paywall slide. The two surfaces were positioned by independent
translationXexpressions, so their shared edge landed at a sub-pixel position and the two graphics layers didn't fully cover it, letting the background show through.The problem was a calculation that output a float number, so the number wouldn't match between in and out transitions
Note
Low Risk
Localized Compose graphics-layer math for workflow paywall animations only; no purchase, auth, or data-path changes.
Overview
Fixes a 1px seam visible between multipage workflow paywall pages during horizontal slide transitions.
Slide
translationXis no longer computed independently for incoming and outgoing steps. A newworkflowSlideTranslationXhelper rounds the incoming surface to whole pixels and sets the outgoing offset from that value so both layers share the same edge and sub-pixel gaps do not show the background.WorkflowSlideTranslationXTestlocks in the rounding and derived-offset behavior.Reviewed by Cursor Bugbot for commit 665784f. Bugbot is set up for automated code reviews on this repo. Configure here.