Commit bd42563
fix(rewards): improve VIP splash layout on small screens (#32187)
## **Description**
The VIP splash screen used fixed sizing (38px title, full-size fox
image, tall footer buttons) that felt crowded on compact devices. The
referee splash variant is especially tight because it adds "Referred by"
footer text above the action buttons.
This PR adds a responsive layout for screens shorter than 750px,
following the same breakpoint pattern used in `CardWelcome`:
- Scale the gradient title from 38px to 28px
- Scale the fox hero image down (max 260px wide, preserving aspect
ratio) and reduce its top margin
- Compact the footer with tighter gaps/padding and shorter primary
(`h-10`) and secondary (`h-8`) buttons
`mt-24` and `mt-[18px]` spacing for the title and description are
unchanged.
## **Changelog**
CHANGELOG entry: Fixed VIP splash screen layout on smaller devices
## **Related issues**
Refs: N/A
## **Manual testing steps**
```gherkin
Feature: VIP splash responsive layout
Scenario: VIP splash renders proportionally on a small device
Given the app is running on a simulator with screen height below 750px (e.g. iPhone SE)
And the user navigates to the VIP splash screen
When the splash screen is displayed
Then the title uses the smaller 28px font size
And the fox image is scaled down
And the footer buttons use the compact heights
Scenario: VIP referee splash fits with referral footer on a small device
Given the app is running on a small simulator
And the user is a VIP referee who has not yet accepted the invite
When the referee splash screen is displayed
Then the "Referred by" text, Continue button, and Not now button fit without crowding the title
Scenario: VIP splash layout is unchanged on large devices
Given the app is running on a simulator with screen height at or above 750px (e.g. iPhone 15 Pro Max)
When the VIP splash screen is displayed
Then the title, fox image, and footer buttons use the original sizing
```
- [x] `yarn jest VipSplashGradientTitle.test.tsx
VipSplashScreenLayout.test.tsx --coverage=false`
## **Screenshots/Recordings**
N/A — layout changes are best verified on small vs. large simulators;
screenshots can be added after manual QA.
### **Before**
N/A
### **After**
iPhone 13 Mini
<img width="1080" height="2340" alt="Simulator Screenshot - iPhone 13
mini - 2026-06-22 at 16 16 03"
src="https://github.com/user-attachments/assets/458c7dd1-a257-40f1-822d-038a3b732e24"
/>
iPhone 14
<img width="1179" height="2556" alt="Simulator Screenshot - E2E Test -
2026-06-22 at 16 19 45"
src="https://github.com/user-attachments/assets/9ff4e841-d6c2-4a5d-aa03-def3727d6d25"
/>
## **Pre-merge author checklist**
- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
#### Performance checks (if applicable)
- [ ] I've tested on Android
- Ideally on a mid-range device; emulator is acceptable
- [ ] I've tested with a power user scenario
- Use these [power-user
SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93)
to import wallets with many accounts and tokens
- [ ] I've instrumented key operations with Sentry traces for production
performance metrics
- See [`trace()`](/app/util/trace.ts) for usage and
[`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274)
for an example
## **Pre-merge reviewer checklist**
- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> UI-only responsive styling in the VIP rewards splash with no auth,
data, or navigation logic changes; behavior on tall screens is
preserved.
>
> **Overview**
> Adds a **750px screen-height breakpoint** so the VIP splash layout
compacts on shorter devices while leaving large-screen sizing unchanged.
>
> **`VipSplashGradientTitle`** now reads `useWindowDimensions` and
switches title `fontSize`/`lineHeight` from **38px** to **28px** below
the threshold (replacing fixed Tailwind `text-[38px]`).
>
> **`VipSplashScreenLayout`** applies the same breakpoint to scale the
fox hero (**max 260px** wide, aspect ratio preserved), reduce fox top
margin and footer gap/padding, and use shorter primary (**h-10**) and
secondary (**h-8**) buttons. Shared sizing values live in
**`Vip.constants`**, with unit tests mocking window dimensions for both
breakpoints.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
c67c98e. 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: Cursor <cursoragent@cursor.com>1 parent 7a23062 commit bd42563
5 files changed
Lines changed: 188 additions & 12 deletions
File tree
- app/components/UI/Rewards/components/Vip
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
12 | 17 | | |
13 | 18 | | |
14 | 19 | | |
| |||
Lines changed: 65 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
4 | 20 | | |
5 | 21 | | |
6 | 22 | | |
| |||
9 | 25 | | |
10 | 26 | | |
11 | 27 | | |
| 28 | + | |
12 | 29 | | |
13 | 30 | | |
14 | 31 | | |
| 32 | + | |
15 | 33 | | |
16 | | - | |
| 34 | + | |
17 | 35 | | |
18 | 36 | | |
19 | 37 | | |
| |||
58 | 76 | | |
59 | 77 | | |
60 | 78 | | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
61 | 88 | | |
62 | 89 | | |
63 | 90 | | |
| |||
66 | 93 | | |
67 | 94 | | |
68 | 95 | | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
69 | 133 | | |
Lines changed: 17 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
7 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
8 | 14 | | |
9 | 15 | | |
10 | 16 | | |
| |||
22 | 28 | | |
23 | 29 | | |
24 | 30 | | |
| 31 | + | |
25 | 32 | | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
26 | 37 | | |
27 | | - | |
| 38 | + | |
28 | 39 | | |
29 | 40 | | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
30 | 45 | | |
31 | 46 | | |
32 | 47 | | |
| |||
Lines changed: 68 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | | - | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
7 | 22 | | |
8 | 23 | | |
9 | 24 | | |
| |||
105 | 120 | | |
106 | 121 | | |
107 | 122 | | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
108 | 129 | | |
109 | 130 | | |
110 | 131 | | |
| |||
154 | 175 | | |
155 | 176 | | |
156 | 177 | | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
157 | 224 | | |
Lines changed: 33 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
| 1 | + | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
20 | 23 | | |
21 | 24 | | |
22 | 25 | | |
| |||
72 | 75 | | |
73 | 76 | | |
74 | 77 | | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
75 | 94 | | |
76 | 95 | | |
77 | 96 | | |
| |||
97 | 116 | | |
98 | 117 | | |
99 | 118 | | |
100 | | - | |
| 119 | + | |
101 | 120 | | |
102 | | - | |
103 | | - | |
| 121 | + | |
| 122 | + | |
104 | 123 | | |
105 | 124 | | |
106 | 125 | | |
107 | | - | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
108 | 129 | | |
109 | 130 | | |
110 | 131 | | |
111 | 132 | | |
112 | 133 | | |
113 | | - | |
| 134 | + | |
| 135 | + | |
114 | 136 | | |
115 | 137 | | |
116 | 138 | | |
| |||
127 | 149 | | |
128 | 150 | | |
129 | 151 | | |
130 | | - | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
131 | 156 | | |
132 | 157 | | |
133 | 158 | | |
| |||
0 commit comments