Skip to content

Fix 1px seam between sliding multipage paywall pages#3526

Merged
vegaro merged 2 commits into
mainfrom
cesar/fix-workflow-slide-seam
Jun 3, 2026
Merged

Fix 1px seam between sliding multipage paywall pages#3526
vegaro merged 2 commits into
mainfrom
cesar/fix-workflow-slide-seam

Conversation

@vegaro

@vegaro vegaro commented Jun 2, 2026

Copy link
Copy Markdown
Member

A 1px white line showed between the two pages during a multipage paywall slide. The two surfaces were positioned by independent translationX expressions, 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 translationX is no longer computed independently for incoming and outgoing steps. A new workflowSlideTranslationX helper 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. WorkflowSlideTranslationXTest locks 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.

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>
@vegaro vegaro marked this pull request as ready for review June 2, 2026 15:15
@vegaro vegaro requested a review from a team as a code owner June 2, 2026 15:15
@vegaro vegaro requested a review from facumenzella June 2, 2026 15:15
@codecov

codecov Bot commented Jun 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 80.04%. Comparing base (834784a) to head (665784f).

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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>
@vegaro vegaro enabled auto-merge June 3, 2026 04:40
@vegaro vegaro added this pull request to the merge queue Jun 3, 2026
Merged via the queue into main with commit 4ced753 Jun 3, 2026
38 checks passed
@vegaro vegaro deleted the cesar/fix-workflow-slide-seam branch June 3, 2026 05:12
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 -->
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.

2 participants