Skip to content

chore(runway): cherry-pick feat: warning prompt - cp-7.74.0#29082

Merged
chloeYue merged 1 commit into
release/7.74.00from
runway-cherry-pick-7.74.0-1776736045
Apr 21, 2026
Merged

chore(runway): cherry-pick feat: warning prompt - cp-7.74.0#29082
chloeYue merged 1 commit into
release/7.74.00from
runway-cherry-pick-7.74.0-1776736045

Conversation

@runway-github

@runway-github runway-github Bot commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Description

Google Sign-In on seedless accounts will require iOS 17.4 or later in a
future release. Users on older iOS versions need a clear, repeatable
nudge to update or back up their Secret Recovery Phrase before support
is removed.

This change adds a post-login saga that, on iOS below 17.4, waits
for wallet navigation to settle, then may present a reminder sheet
with dedicated copy (distinct from the initial onboarding warning). The
reminder is shown only when blocking mode is off (so it does not
compete with the blocking UX), the user is on the seedless Google
flow, and they have not dismissed the sheet within the last 7
days
. Dismissal time is stored in onboarding state
(iosGoogleWarningSheetLastDismissedAt) and covered by saga unit tests.
JSDoc was added on related onboarding prompt helpers.

Changelog

CHANGELOG entry: Added periodic reminders after login for Google
seedless users on iOS versions below 17.4 to update iOS or back up their
Secret Recovery Phrase before Google Sign-In requirements change

Related issues

Fixes:

Manual testing steps

Feature: iOS Google version reminder after login

  Scenario: reminder shows for seedless Google on iOS below 17.4 when eligible
    Given the device is iOS with version below 17.4
    And Google login iOS unsupported blocking is disabled
    And the user has a seedless Google account (Google auth connection, seedless login flow)
    And the user has not dismissed the reminder sheet in the last 7 days (or never dismissed it)

    When the user completes login and reaches the wallet
    Then after a short delay a reminder sheet should appear with the "iOS update required" title and reminder copy
    And dismissing the sheet should prevent the same reminder from appearing again within 7 days

  Scenario: no reminder when blocking mode is enabled
    Given the device is iOS with version below 17.4
    And Google login iOS unsupported blocking is enabled

    When the user completes login
    Then the periodic post-login reminder sheet described in this PR should not be shown by this saga

  Scenario: no reminder for non-Google seedless or non-seedless users
    Given the device is iOS with version below 17.4
    And blocking mode is off

    When the user completes login as Apple seedless or a non-seedless account
    Then the periodic post-login reminder sheet should not be shown

  Scenario: reminder can show again after 7 days
    Given the device is iOS with version below 17.4
    And blocking mode is off
    And the user previously dismissed the reminder more than 7 days ago

    When the user logs in again
    Then the reminder sheet may be shown again

Screenshots/Recordings

Before

After

Screen.Recording.2026-04-10.at.2.48.52.PM.mov

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the
    app, test code being changed).
  • 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.

Note

Medium Risk
Touches onboarding/authentication Redux state and introduces a new
always-on root saga that can show blocking UI after login; mistakes
could cause unexpected sheets, analytics noise, or incomplete state
reset on wallet deletion.

Overview
Adds a new onboarding Redux field
(iosGoogleWarningSheetLastDismissedAt) plus actions/selectors to
persist when the iOS Google version warning was last dismissed, and a
CLEAR_ONBOARDING action to reset the entire onboarding slice.

Introduces a new post-login saga (promptIosGoogleWarningSheetSaga)
that, on iOS < 17.4 and for seedless Google accounts, waits for LOGIN,
delays, then conditionally shows a reminder sheet (or error variant when
the blocking feature flag is enabled) with a 7-day cooldown and optional
analytics tracking. Updates onboarding social-login flow to record
dismissal time and enriches the warning metric properties.

Expands onboarding iOS prompt helpers with dedicated reminder/error
copy and new strings, and updates wallet deletion to clear onboarding
state via clearOnboarding() (with corresponding action/reducer/saga
tests added).

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


Co-authored-by: Tyler Chong tyler.chong@consensys.net f77c17a

<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->
Google Sign-In on seedless accounts will require iOS 17.4 or later in a
future release. Users on older iOS versions need a clear, repeatable
nudge to update or back up their Secret Recovery Phrase before support
is removed.

This change adds a **post-login** saga that, on iOS below 17.4, waits
for wallet navigation to settle, then may present a **reminder** sheet
with dedicated copy (distinct from the initial onboarding warning). The
reminder is shown only when **blocking mode is off** (so it does not
compete with the blocking UX), the user is on the **seedless Google**
flow, and they have **not dismissed** the sheet within the last **7
days**. Dismissal time is stored in onboarding state
(`iosGoogleWarningSheetLastDismissedAt`) and covered by saga unit tests.
JSDoc was added on related onboarding prompt helpers.

## **Changelog**

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: Added periodic reminders after login for Google
seedless users on iOS versions below 17.4 to update iOS or back up their
Secret Recovery Phrase before Google Sign-In requirements change

## **Related issues**

Fixes:

## **Manual testing steps**

```gherkin
Feature: iOS Google version reminder after login

  Scenario: reminder shows for seedless Google on iOS below 17.4 when eligible
    Given the device is iOS with version below 17.4
    And Google login iOS unsupported blocking is disabled
    And the user has a seedless Google account (Google auth connection, seedless login flow)
    And the user has not dismissed the reminder sheet in the last 7 days (or never dismissed it)

    When the user completes login and reaches the wallet
    Then after a short delay a reminder sheet should appear with the "iOS update required" title and reminder copy
    And dismissing the sheet should prevent the same reminder from appearing again within 7 days

  Scenario: no reminder when blocking mode is enabled
    Given the device is iOS with version below 17.4
    And Google login iOS unsupported blocking is enabled

    When the user completes login
    Then the periodic post-login reminder sheet described in this PR should not be shown by this saga

  Scenario: no reminder for non-Google seedless or non-seedless users
    Given the device is iOS with version below 17.4
    And blocking mode is off

    When the user completes login as Apple seedless or a non-seedless account
    Then the periodic post-login reminder sheet should not be shown

  Scenario: reminder can show again after 7 days
    Given the device is iOS with version below 17.4
    And blocking mode is off
    And the user previously dismissed the reminder more than 7 days ago

    When the user logs in again
    Then the reminder sheet may be shown again
```

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->



https://github.com/user-attachments/assets/ff925bd7-8cdb-4b60-b8f5-5182c6af70ab




## **Pre-merge author checklist**

- [ ] 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).
- [ ] I've completed the PR template to the best of my ability
- [ ] I've included tests if applicable
- [ ] 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.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] 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]
> **Medium Risk**
> Touches onboarding/authentication Redux state and introduces a new
always-on root saga that can show blocking UI after login; mistakes
could cause unexpected sheets, analytics noise, or incomplete state
reset on wallet deletion.
> 
> **Overview**
> Adds a new onboarding Redux field
(`iosGoogleWarningSheetLastDismissedAt`) plus actions/selectors to
persist when the iOS Google version warning was last dismissed, and a
`CLEAR_ONBOARDING` action to reset the entire onboarding slice.
> 
> Introduces a new post-login saga (`promptIosGoogleWarningSheetSaga`)
that, on iOS < 17.4 and for seedless Google accounts, waits for `LOGIN`,
delays, then conditionally shows a reminder sheet (or error variant when
the blocking feature flag is enabled) with a 7-day cooldown and optional
analytics tracking. Updates onboarding social-login flow to record
dismissal time and enriches the warning metric properties.
> 
> Expands onboarding iOS prompt helpers with dedicated reminder/error
copy and new strings, and updates wallet deletion to clear onboarding
state via `clearOnboarding()` (with corresponding action/reducer/saga
tests added).
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
cd8e7bb. 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: Tyler Chong <tyler.chong@consensys.net>
@runway-github runway-github Bot requested a review from a team as a code owner April 21, 2026 01:47
@github-actions

Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbotv2 metamaskbotv2 Bot added the team-bots Bot team (for MetaMask Bot, Runway Bot, etc.) label Apr 21, 2026
@github-actions github-actions Bot added the risk-high Extensive testing required · High bug introduction risk label Apr 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

⏭️ Smart E2E selection skipped - PR targets a release branch (release/*)

All E2E tests pre-selected.

View GitHub Actions results

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

E2E Fixture Validation — Schema is up to date
12 value mismatches detected (expected — fixture represents an existing user).
View details

@chloeYue chloeYue left a comment

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.

LGTM

@chloeYue chloeYue merged commit f8dfbce into release/7.74.00 Apr 21, 2026
111 checks passed
@chloeYue chloeYue deleted the runway-cherry-pick-7.74.0-1776736045 branch April 21, 2026 06:48
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 21, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

risk-high Extensive testing required · High bug introduction risk size-L team-bots Bot team (for MetaMask Bot, Runway Bot, etc.)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants