Skip to content

chore(runway): cherry-pick chore: removes quickbuy keyboard abtest and feature flag - #34110

Merged
sleepytanya merged 1 commit into
release/8.6.0from
runway-cherry-pick-8.6.0-1785488385
Jul 31, 2026
Merged

chore(runway): cherry-pick chore: removes quickbuy keyboard abtest and feature flag#34110
sleepytanya merged 1 commit into
release/8.6.0from
runway-cherry-pick-8.6.0-1785488385

Conversation

@runway-github

@runway-github runway-github Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Description

Removes the socialAiTSA905AbtestQuickBuyKeyboard A/B test and its
associated logic so Quick Buy always shows the numeric keyboard (and no
longer offers the percentage slider).

Why: For 8.6.0 we want the keyboard as the only Quick Buy amount
input, so this A/B test is no longer needed.

Why remove the flag (not just default to treatment): On 8.5.0, a
small bug means we need to keep the flag at 100% control. If we left
the flag in place for 8.6.0, we would need 100% treatment on 8.6.0
while keeping 100% control on 8.5.0 — an unnecessarily complex
LaunchDarkly split across versions. Removing the flag in 8.6.0 avoids
that conflict.

This PR:

  • Deletes the keyboard vs slider A/B config and analytics registry
    mapping
  • Removes useKeyboard branching across Quick Buy
    Root/Context/footer/keypad/amount/skeleton
  • Deletes QuickBuyPercentageSlider and the control (slider) UI path
  • Leaves the separate TSA-612 Asset Details Quick Buy A/B test untouched

Changelog

CHANGELOG entry: Updated Quick Buy to always use the numeric keyboard
for amount entry

Related issues

Fixes: TSA-963

Manual testing steps

Feature: Quick Buy keyboard-only amount entry

  Scenario: user opens Quick Buy and enters an amount with the keypad
    Given the user opens Quick Buy for a supported token

    When the sheet finishes opening
    Then the numeric keypad is shown by default
    And the percentage slider is not shown

    When the user types an amount on the keypad
    And taps Buy
    Then the trade flow proceeds with the entered amount

  Scenario: user selects a quick-amount pill
    Given Quick Buy is open with the keypad visible

    When the user taps a buy quick-amount pill
    Then the amount updates to that preset
    And the keypad is dismissed

    When the user taps the amount headline
    Then the keypad reopens

Screenshots/Recordings

N/A — removes an A/B branch; keyboard UI is unchanged from the treatment
path already shipping.

Before

Control: percentage slider. Treatment: numeric keypad.

After

Numeric keypad only (former treatment).

Pre-merge author checklist

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

    to import wallets with many accounts and tokens
  • I've instrumented key operations with Sentry traces for production
    performance metrics
  • See trace() for usage and
    addToken
    for an example

For performance guidelines and tooling, see the Performance
Guide
.

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. 0ad0074

…d feature flag cp-8.6.0 (#34073)

<!--
Please submit this PR as a draft initially.

Do not mark it as "Ready for review" until this PR meets the canonical
Definition of Ready For Review in `docs/readme/ready-for-review.md`.

In short: the template must be materially complete (not just section
titles
present), all status checks must be currently passing, and the only
expected
follow-up commits must be reviewer-driven.
-->
<!--
mms-check directive vocabulary — read by
.github/scripts/shared/pr-template-checks.ts
at module load to build the validation plan. Directives are invisible in
rendered
markdown and must NOT be removed or edited without updating the
validator registry.

  type=text           Section must contain non-placeholder prose.
  type=changelog      Section must have a valid CHANGELOG entry: line.
type=issue-link Section must have a Fixes:/Closes:/Refs: line with a
value.
type=manual-testing Section must have real testing steps or an explicit
N/A.
type=screenshot Section must have evidence (image/URL) or an explicit
N/A.
type=checklist Section must have all checkboxes consciously checked.
required=true|false Whether a missing/invalid section runs the validator
at all.
blocking=true|false Whether a failure of this check fails the CI
workflow.
Default: false — failures are shown as warnings in the sticky
                      comment but do not block the PR.

Sections without a directive are checked for structural presence only.
-->

## **Description**

<!-- mms-check: type=text required=true -->

Removes the `socialAiTSA905AbtestQuickBuyKeyboard` A/B test and its
associated logic so Quick Buy always shows the numeric keyboard (and no
longer offers the percentage slider).

**Why:** For **8.6.0** we want the keyboard as the only Quick Buy amount
input, so this A/B test is no longer needed.

**Why remove the flag (not just default to treatment):** On **8.5.0**, a
small bug means we need to keep the flag at **100% control**. If we left
the flag in place for 8.6.0, we would need **100% treatment** on 8.6.0
while keeping **100% control** on 8.5.0 — an unnecessarily complex
LaunchDarkly split across versions. Removing the flag in 8.6.0 avoids
that conflict.

This PR:
- Deletes the keyboard vs slider A/B config and analytics registry
mapping
- Removes `useKeyboard` branching across Quick Buy
Root/Context/footer/keypad/amount/skeleton
- Deletes `QuickBuyPercentageSlider` and the control (slider) UI path
- Leaves the separate TSA-612 Asset Details Quick Buy A/B test untouched

## **Changelog**

<!-- mms-check: type=changelog required=true blocking=true -->

CHANGELOG entry: Updated Quick Buy to always use the numeric keyboard
for amount entry

## **Related issues**

<!-- mms-check: type=issue-link required=true -->

Fixes: TSA-963

## **Manual testing steps**

<!-- mms-check: type=manual-testing required=true -->

```gherkin
Feature: Quick Buy keyboard-only amount entry

  Scenario: user opens Quick Buy and enters an amount with the keypad
    Given the user opens Quick Buy for a supported token

    When the sheet finishes opening
    Then the numeric keypad is shown by default
    And the percentage slider is not shown

    When the user types an amount on the keypad
    And taps Buy
    Then the trade flow proceeds with the entered amount

  Scenario: user selects a quick-amount pill
    Given Quick Buy is open with the keypad visible

    When the user taps a buy quick-amount pill
    Then the amount updates to that preset
    And the keypad is dismissed

    When the user taps the amount headline
    Then the keypad reopens
```

## **Screenshots/Recordings**

<!-- mms-check: type=screenshot required=true -->

N/A — removes an A/B branch; keyboard UI is unchanged from the treatment
path already shipping.

### **Before**

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

Control: percentage slider. Treatment: numeric keypad.

### **After**

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

Numeric keypad only (former treatment).

## **Pre-merge author checklist**

<!-- mms-check: type=checklist required=true -->

- [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
- [x] 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

For performance guidelines and tooling, see the [Performance
Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers).

## **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.
@runway-github
runway-github Bot requested review from a team as code owners July 31, 2026 08:59
@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.

@metamask-ci metamask-ci Bot added the team-bots Bot team (for MetaMask Bot, Runway Bot, etc.) label Jul 31, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

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

All E2E tests pre-selected.

View GitHub Actions results

@github-actions github-actions Bot added size-XL risk:low AI analysis: low risk labels Jul 31, 2026
@sonarqubecloud

Copy link
Copy Markdown

@sleepytanya
sleepytanya merged commit afc264c into release/8.6.0 Jul 31, 2026
137 of 138 checks passed
@sleepytanya
sleepytanya deleted the runway-cherry-pick-8.6.0-1785488385 branch July 31, 2026 16:19
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 31, 2026
@metamaskbot metamaskbot added the release-8.6.0 Issue or pull request that will be included in release 8.6.0 label Aug 3, 2026
@gauthierpetetin

Copy link
Copy Markdown
Contributor

No release label on PR. Adding release label release-8.6.0 on PR, as PR was cherry-picked in branch 8.6.0.

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

Labels

release-8.6.0 Issue or pull request that will be included in release 8.6.0 risk:low AI analysis: low risk size-XL team-bots Bot team (for MetaMask Bot, Runway Bot, etc.)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants