Skip to content

feat: 7.43.0 #14016

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 242 commits into from
Mar 27, 2025
Merged

feat: 7.43.0 #14016

merged 242 commits into from
Mar 27, 2025

Conversation

metamaskbot
Copy link
Collaborator

@metamaskbot metamaskbot commented Mar 14, 2025

🚀 v7.43.0 Testing & Release Quality Process

Hi Team,
As part of our new MetaMask Release Quality Process, here’s a quick overview of the key processes, testing strategies, and milestones to ensure a smooth and high-quality deployment.


📋 Key Processes

Testing Strategy

  • Developer Teams:
    Conduct regression and exploratory testing for your functional areas, including automated and manual tests for critical workflows.
  • QA Team:
    Focus on exploratory testing across the wallet, prioritize high-impact areas, and triage any Sentry errors found during testing.
  • Customer Success Team:
    Validate new functionalities and provide feedback to support release monitoring.

GitHub Signoff

  • Each team must sign off on the Release Candidate (RC) via GitHub by the end of the validation timeline (Tuesday EOD PT).
  • Ensure all tests outlined in the Testing Plan are executed, and any identified issues are addressed.

Issue Resolution

  • Resolve all Release Blockers (Sev0 and Sev1) by Tuesday EOD PT.
  • For unresolved blockers, PRs may be reverted, or feature flags disabled to maintain release quality and timelines.

Cherry-Picking Criteria

  • Only critical fixes meeting outlined criteria will be cherry-picked.
  • Developers must ensure these fixes are thoroughly reviewed, tested, and merged by Tuesday EOD PT.

🗓️ Timeline and Milestones

  1. Today (Friday): Begin Release Candidate validation.
  2. Tuesday EOD PT: Finalize RC with all fixes and cherry-picks.
  3. Wednesday: Buffer day for final checks.
  4. Thursday: Submit release to app stores and begin rollout to 1% of users.
  5. Monday: Scale deployment to 10%.
  6. Tuesday: Full rollout to 100%.

✅ Signoff Checklist

Each team is responsible for signing off via GitHub. Use the checkbox below to track signoff completion:

Team sign-off checklist

  • Accounts
  • Assets
  • Confirmations
  • Design System
  • Extension Platform
  • Identity
  • MMI
  • Mobile Platform
  • Ramp
  • Snaps Platform
  • Solana
  • Stake
  • Swaps and Bridge
  • Transactions

This process is a major step forward in ensuring release stability and quality. Let’s stay aligned and make this release a success! 🚀

Feel free to reach out if you have questions or need clarification.

Many thanks in advance

Reference

owencraston and others added 30 commits February 13, 2025 21:03
…ction controller etc) (#13436)

<!--
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**

This PR updates the
[AccountsController](https://github.com/MetaMask/core/blob/main/packages/accounts-controller/CHANGELOG.md#2310)
and the
[TransactionController](https://github.com/MetaMask/core/blob/main/packages/transaction-controller/CHANGELOG.md#4510).
These are the two major updates however there are a few smaller peer dep
updates as well. Here is a description of the changes...

### "@metamask/accounts-controller": "^21.0.0" -> 23.1.0"
-
[changelog](https://github.com/MetaMask/core/blob/main/packages/accounts-controller/CHANGELOG.md#2310)
- Breaking changes:
- BREAKING: Now requires
SnapKeyring:account{AssetList,Balances,Transactions}Updated events to be
registered on the messenger (MetaMask/core#5190)
- BREAKING: Bump @metamask/snaps-controllers peer dependency from ^9.7.0
to ^9.19.0 (MetaMask/core#5265)
    - Bump @metamask/base-controller from ^7.1.1 to ^8.0.0
- Non breaking changes:
- Bump @metamask/keyring-api" from ^16.1.0 to ^17.0.0
(MetaMask/core#5280)
- Bump @metamask/eth-snap-keyring from ^9.1.1 to ^10.0.0
(MetaMask/core#5280)
- Bump @metamask/snaps-sdk from ^6.7.0 to ^6.17.1
(MetaMask/core#5220),
(MetaMask/core#5265)
- Bump @metamask/snaps-utils from ^8.9.0 to ^8.10.0
(MetaMask/core#5265)

### "@metamask/transaction-controller": "^43.0.0" -> 45.1.0
-
[changelog](https://github.com/MetaMask/core/blob/main/packages/transaction-controller/CHANGELOG.md#4510)
- Breaking changes:
- BREAKING: Bump @metamask/accounts-controller peer dependency from
^22.0.0 to ^23.0.0

### "@metamask/keyring-api": "^13.0.0" -> 17.0.0
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-api/CHANGELOG.md#1700)
- Breaking changes:
- BREAKING: Make CaipAssetType type more restritive
(MetaMask/accounts#150) It used to be a string
but it has been restricted with a template literal type that matches
CAIP-19 asset type.
- BREAKING: Make specific *AccountStruct.scopes more strict
(MetaMask/accounts#159)
- BREAKING: Remove CAIP redefinitions
(MetaMask/accounts#167) We now rely on CAIP
definitions coming @metamask/utils.
- BREAKING: Enforce that scopes contains CAIP-2 chain IDs
(MetaMask/accounts#165) Initially scopes
accepted CAIP-2 namespaces as well to address the EVM EOA accounts that
supports all EVM chains. This has been dropped in favor of eip155:0
scope.
- BREAKING: Rename *Scopes enums to *Scope
(MetaMask/accounts#165)
- BREAKING: Use CaipAccountId for ResolvedAccountAddress.address
(MetaMask/accounts#186) This was missing from
SIP-26, but we expect this address to be CAIP-10 compliant.

### "@metamask/keyring-internal-api": "^2.0.0" -> 4.0.2
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-internal-api/CHANGELOG.md#402)
- Breaking changes
- BREAKING: Bump @metamask/keyring-api from ^14.0.0 to ^15.0.0
(MetaMask/accounts#160) The scopes from each
*AccountStruct types is now more strict which impact all
Internal*AccountStruct types.
- BREAKING: Bump @metamask/keyring-api from ^15.0.0 to ^16.0.0
(MetaMask/accounts#172)
The scopes from each *AccountStruct types is now more strict (remove
support of CAIP-2 namespaces) which impact all Internal*AccountStruct
types.
- Bump @metamask/keyring-api from ^16.1.0 to ^17.0.0
(MetaMask/accounts#192)

### "@metamask/eth-snap-keyring": "^7.1.0" -> 10.0.0
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-snap-bridge/CHANGELOG.md)
- Breaking changes:
- BREAKING: Bump @metamask/keyring-api from ^12.0.0 to ^13.0.0
(MetaMask/accounts#101)
This change was not properly reported as breaking on the 7.1.0.
KeyringAccount and InternalAccount have a new required field (scopes)
and are part of the public API.
- BREAKING: Bump @metamask/keyring-internal-api from ^1.0.0 to ^2.0.0
(MetaMask/accounts#135)
This change was not properly reported as breaking on the 7.1.0.
InternalAccount extends KeyringAccount which has a new required field
(scopes) and is part of the public API.
- BREAKING: Bump @metamask/keyring-snap-internal-client from ^1.0.0 to
^2.0.0 (MetaMask/accounts#135)
This change was not properly reported as breaking on the 7.1.0.
KeyringAccount has a new required field (scopes) and is part of the
public API.
- BREAKING: Use Messenger instead of SnapsController
(MetaMask/accounts#152)
This allows to break the runtime dependency we had with some snaps-*
pacakges.
- BREAKING: Make scopes more strict
(MetaMask/accounts#159)
We now use specific *AccountStucts when checking created/updated
accounts to make the scopes sent by the Snap are valid regarding their
account type definition.
- BREAKING: Use CaipAccountId for ResolvedAccountAddress.address
(MetaMask/accounts#186)
This was missing from SIP-26, but we expect this address to be CAIP-10
compliant.

### "@metamask/snaps-sdk": "^6.13.0" -> 6.17.1
-
[changelog](https://github.com/MetaMask/snaps/blob/main/packages/snaps-sdk/CHANGELOG.md#6171)
- no breaking changes

### "@metamask/snaps-utils": "^8.6.1" -> ^8.10.0
-
[changelog](https://github.com/MetaMask/snaps/blob/main/packages/snaps-utils/CHANGELOG.md#8100)
- no breaking changes

## **Related issues**

Fixes: #13374
Fixes: #13377

## **Manual testing steps**

#### Testing snap accounts
1. ensure you are building metamask flask by setting the value of
`METAMASK_BUILD_TYPE` to `flask` in your `.js.env`
2. source .js.env
3. yarn setup
4. yarn start:ios
5. create/import a wallet
6. click on the selected account at the top of the home page
7. click on the Add account button
8. then click the Add Solana account (Beta) button
9. a popup with a suggested name should appeaer
10. click OK, the account should now be added to your account list. if
you have a balance on this address then it should show in the portfolio
view.
11. repeat the above steps with the Bitcoin and Bitcoin testnet account

#### Testing transactions
1. ensure you are NOT building flask by setting the value of
`METAMASK_BUILD_TYPE` to `main` in your `.js.env`
2. source .js.env
3. yarn setup
4. yarn start:ios 
5. import an account that has funds
6. click on the selected account at the top of the screen and the
account list should open
7. then click on the add account button, then click add account
8. a new eth account should appear in your wallet
9. click on main bottom tab navigator icon which should open a list of
actions, select Send.
10. the Send flow should open.
11. set your from account to the account that has funds and the to
account to your newly created account.
12. type in a valid amount then go through the rest of the send flow
13. in the end the transaction should go through.
14. the account balances on the home page should be updated

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

On-boarding and Account Creation Flow


https://github.com/user-attachments/assets/2ccd8fb4-4857-4a99-ab52-cdb071bd0447

Send flow


https://github.com/user-attachments/assets/da81d49c-b472-49a7-83c4-1d1046521072


## **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
- [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.

## **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.
<!--
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**
This PR updates the Header for the Token details view, based on this
[design update
](https://www.figma.com/design/bkJ9Ot0HGXiakMqZtQfs8G/Design-Quality?node-id=2362-458)by
@amandaye0h . Specifically
- Left and right button icons are now using the `ButtonIcon` component
with the large size
- Overflow icon is updated to vertical version
- Alignment of header is now top aligned
<!--
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?
-->

## **Related issues**

Fixes: #11854

## **Manual testing steps**

1. Go to Wallet
2. Click on a token
3.

## **Screenshots/Recordings**

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

### **Before**
![Token 2 -
Dark](https://github.com/user-attachments/assets/2696b7a8-e726-4048-828c-cd912e63f4c2)
![Token 2 -
Light](https://github.com/user-attachments/assets/1d953931-1d32-4daf-bf65-e68148ae4454)

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

### **After**

https://github.com/user-attachments/assets/d1e0c824-f403-4f34-95c0-5d27c0dd6b3b


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

## **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
- [ ] 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.

## **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.
<!--
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**

- add empty options to match params order
- fix unit test (complete rewrite as it was not properly testing the
existing code, it was fake green!)
- add non regression unit test for this new bug fix
- update SelectComponent UI component to include testID to properly test
the feature

## **Related issues**

Fixes #3414

## **Manual testing steps**

1. Start app on Android
2. Go to privacy settings
3. activate ipfs gateway switch
4. check ipfs list is populated
5. Test on iOS too.

## **Screenshots/Recordings**

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

### **Before**

See [issue
comment](#3414 (comment))

### **After**


[screen_ipfs_fixed.webm](https://github.com/user-attachments/assets/86227026-720b-4d20-8fc7-6ffc0a732e5c)

## **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
- [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.

## **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.
…ding (#13458)

<!--
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**

This is a solution for preventing somebody from draining holesky ETH
from our test account as the SRP is currently exposed. Basically the
stake account containing the Holesky ETH is now imported from the ENV
variable `MM_STAKE_TEST_ACCOUNT_PRIVATE_KEY` containing the PK of the
account. To run the tests locally engineers will need to set the value
found 1Password and add it to `.js.env`

I also reduced the amount of ETH used for staking as requested by the
stake team

## **Related issues**

Fixes:
#13433

## **Manual testing steps**

1. yarn test:e2e:android:debug:run
e2e/specs/stake/stake-action-smoke.spec.js

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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
- [ ] 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**

- [x] 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.
## **Description**

Removing the SRP video (saving 7.5 mb) and replaced with new designs
[here](https://www.figma.com/design/pViOUcmjwhEzFsdrwknpNc/Onboarding-redesign?node-id=1-117&t=SrTBBEz0dgAQsaoU-1)
In the future we are doing a bigger redesign. This is a small step
towards it

## **Related issues**

Fixes:

## **Manual testing steps**

1. Fresh install of the app
2. Create a new wallet and going through onboarding flow, make sure the
new design is there and fits on all devices
3. Afterwards goto settings and goto "Security and Privacy" to make sure
its removed altogether (no design)

## **Screenshots/Recordings**

### Larger Devices
iPhone 16

<img
src="https://github.com/user-attachments/assets/a470060d-292f-46fc-acbe-2d3eea859557"
width="250px" />

### Smaller Devices

iPhone SE


https://github.com/user-attachments/assets/f2f45941-1b1d-4f2b-8151-c0028183f1f0

Pixel 2

<img
src="https://github.com/user-attachments/assets/94ebea2e-100b-469a-afbc-f61369e2ee5f"
width="250px" />

### **Before**

<img
src="https://github.com/user-attachments/assets/a9c9011c-a466-4d1b-bcac-fcf930e1c5c1"
width="250px" />


### **After**

<img
src="https://github.com/user-attachments/assets/20f44bf9-17fe-440e-984e-69ce18a2b70f"
width="250px" />


## **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
- [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.

## **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.
<!--
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**

This PR enables Smart Transactions (STX) in MetaMask Mobile by default
through migration number #68 for users who have either opted out with
notification if the Smart Transactions toggle has been enabled for them.

Docs:
[SmartTransactionsMigrationBanner](https://www.notion.so/consensys/SmartTransactionsMigrationBanner-Feature-Documentation-180fc61a326e80a19da2ce55e6c8687f)

How it works (if user does not have STX enabled or prior STX Transaction
history:

- Upon Migration STX is enabled in Settings:
- A banner alert will displays on the following transaction
confirmations
   - Send Confirmation flow
   - Swaps confirmation flow
   - Contract deployment & interactions (deploy, minting, etc.)

In the case a user migrates from a previous version of the Mobile app
and the migration runs and sets STX toggle "ON" in `Settings > Advanced
> Smart Transactions`, they will receive an Alert on transaction
confirmation screens until dismissed, or by clicking on the "Higher
success rates" link within the alert. If they click on the link in the
banner alert they will get sent to: [What is 'Smart
Transactions'?](https://support.metamask.io/transactions-and-gas/transactions/smart-transactions/)
for more information. When returning to the confirmation they just
navigated from the banner alert should not show and should never show
again.

Edge Cases: 

If a user is new and setting up a wallet for the first time, they will
not receive the Banner Alert. If a user imports a new wallet during a
fresh install of the extension on a new browser or recovers a wallet,
it's possible they may not see the alert if STX was on in a previous
install. The STX Banner Alert is dismissed and will not show again if a
user is in the state to get shown the banner and toggles STX off
independently even if they do not physically dismiss the STX Banner
Alert.

Migration Logic:

1. If `smartTransactionsOptInStatus` is `null` (new/never interacted)
 - Sets status to true
 - Enables notification flag
2. If status is false (previously opted out):
 - With no Ethereum Mainnet STX activity: Sets to true with notification
 - With existing Mainnet STX activity: Preserves user preference
3. If status is true: No changes needed

UI Components:

Implements `SmartTransactionsMigrationBanner` component for user
notification.

The notification system bridges the migration changes with the UI,
ensuring users are informed of the STX enablement while maintaining
their ability to opt out through settings.

Target release: release-7.39.0
Affected user base: ~5.7M users who previously opted out of STX but have
no STX activity.

## **Running Unit Tests**

Migration 067 test: 

```bash
yarn jest "./app/store/migrations/068.test.ts" --no-cache
```

SmartTransactions Migration Banner component test: 

```bash
yarn jest "./app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.test.ts" --no-cache
```

QuotesView component test: 

```bash
yarn jest "./app/components/UI/Swaps/QuotesView.test.ts" --no-cache
```

SendFlow component test: 

```bash
yarn jest "./app/components/Views/confirmations/SendFlow/Confirm/index.test.tsx" --no-cache
```

TransactionReview component test: 

```bash
yarn jest "./app/components/Views/confirmations/components/TransactionReview/index.test.tsx" --no-cach
```

## **Manual testing steps**

**Test Migration (using a wallet/account with no STX Transactions)**
Start with an older repo version:

**Terminal #1**

```bash
git checkout tags/v7.32.0
```
```bash
yarn setup && yarn watch
```

**Terminal #2**

```bash
yarn start:ios
```

1. Import or setup a wallet without STX transactions, launch the wallet
(do not enable STX if prompted), check that toggle is OFF in: `Settings
> Advanced > Smart Transactions`

2. Switch to feature branch and run app:

**Terminal #1**

```bash
git checkout feat/enable-stx-migration
```
```bash
yarn setup && yarn watch
```

**Terminal #2**

```bash
yarn start:ios
```

3. Test that Alert only shows during confirmation screens for
transactions and contract interactions, but not for signing
4. Create a Send transaction to your own wallet for `0.0001` ETH
5. Ensure that Smart Transactions Banner Alert IS showing
6. Start a Swaps transaction on Ethereum Mainnet
7 Ensure that Smart Transactions Banner Alert IS showing
8. Try several Signs (ETH Sign, Personal Sign, Sign Typed Data, etc..)
and ensure the STX Banner Alert does not show on those confirmations
screens.
9. Ensure that the Smart Transactions Banner Alert is only showing on
STX supported chains:
  - Ethereum
  - Sepolia
10. Ensure that link in alert "Higher success rates" link (inspect) goes
to: [What is 'Smart
Transactions'?](https://support.metamask.io/transactions-and-gas/transactions/smart-transactions/)
11. Dismiss the Smart Transactions Banner Alert 
12. Create a Send transaction to your own wallet for `0.0001` ETH
13. Ensure that Smart Transactions Banner Alert IS NOT showing

* Note: The Smart Transactions Banner Alert should not show up on chains
like Linea which are not supported

## **Screenshots/Recordings**

The following before and after screenshots show the state of varying
Mobile views like Swaps, Send, Contract Deployment, Signing, etc.. that
show the `SmartTransactionsMigrationBanner` component and how it's
displayed on each view. The before shows the view without the component
being rendered and the after (after migration and before dismissal) show
the component as it will appear for the user on each view.

### **Before**

<img width="150" alt="01-stx_before"
src="https://github.com/user-attachments/assets/f526d21a-8a38-40ed-810e-1c102636ccbb"
/>

<img width="150" alt="02-send_before"
src="https://github.com/user-attachments/assets/78155c14-295d-4d8a-94b6-6845158b29bf"
/>

<img width="150" alt="02-sendLegacy_before"
src="https://github.com/user-attachments/assets/8f0049c5-ab00-45d0-adae-ed7d203ec79d"
/>

<img width="150" alt="04-signTypedDataV4_before"
src="https://github.com/user-attachments/assets/07eef175-a431-4c88-a752-db8ea16c3328"
/>

<img width="150" alt="06-contractInteraction_before"
src="https://github.com/user-attachments/assets/dcb63432-9f2d-4589-b6b6-25d5e13ea28f"
/>

<img width="150" alt="05-contractDeployment_before"
src="https://github.com/user-attachments/assets/61dbc3f6-599b-435b-a994-07b1e1f41bcf"
/>

### **After**
<img width="150" alt="01-stx_after"
src="https://github.com/user-attachments/assets/dae49867-093d-475f-a16c-911e79406e3f"
/>

<img width="150" alt="02-send_after"
src="https://github.com/user-attachments/assets/5152d738-304d-4fa8-a835-84c4ba22878b"
/>

<img width="150" alt="02-sendLegacy_after"
src="https://github.com/user-attachments/assets/84eebe4f-f374-48de-9f4a-76ab33da64f2"
/>

<img width="150" alt="04-signTypedDataV4_after"
src="https://github.com/user-attachments/assets/c99b0251-2a9b-4f3a-83c3-a3ab5d6523ac"
/>

<img width="150" alt="06-contractInteraction_after"
src="https://github.com/user-attachments/assets/09731034-a4cc-40f1-b5ff-23b2eccee0d5"
/>

<img width="150" alt="05-contractDeployment_after"
src="https://github.com/user-attachments/assets/3c0ab0ba-2188-45e3-b0ae-622800f76773"
/>

<img width="150" alt="09-swap_after"
src="https://github.com/user-attachments/assets/0943676d-eb21-4aa1-a975-3545d029bf34"
/>

<img width="150" alt="09-swap_after"
src="https://github.com/user-attachments/assets/1b50c741-3105-4fb0-b010-ba08111ead89"
/>

## **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
- [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.

## **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.

---------

Co-authored-by: metamaskbot <[email protected]>
<!--
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**

This PR fixes the swap chart tests and removes some bug workarounds now
that the bug has been fixed

## **Related issues**

Fixes: 13504

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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
- [ ] 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.

## **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.
…3503)

## **Description**

Added stories for the
`app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.tsx`
component. Also, fixed a centering issue when animating

## **Related issues**

Fixes:
[#13492](#13492)

## **Manual testing steps**

1. Goto swaps page
2. When getting a quote you should see the animation with the fox
3. Open Storybook to view component under "Component Animations"

## **Screenshots/Recordings**

### Stories



https://github.com/user-attachments/assets/b63e64d4-0e5a-4966-9683-c20b732e27b5


### **Before**

NOTE: The animation slowly moves off center


https://github.com/user-attachments/assets/f491b7b2-5d03-470c-b8c4-110a942b9d92


### **After**


https://github.com/user-attachments/assets/aa4763ec-aafa-42ef-83b6-ddbeffd8afa8



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

## **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
- [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.

## **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.
<!--
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**

This PR removes an obsolete e2e test. Furthermore, the
CHAIN_PERMISSIONS: FALSE flag in the regression pipeline was removed
since chain permissions are on by default.

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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.
## **Description**

Add navigation for opening confirmation pages.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4143

## **Manual testing steps**

1. Go to test dapp
2. Open signature pages and check navigation

## **Screenshots/Recordings**

Dapp Requests:


https://github.com/user-attachments/assets/a82e7170-d9d5-4574-9772-418b253a7f48

Staking:


https://github.com/user-attachments/assets/bfe0d65c-fc00-4561-8b61-1e55bad104a4

## **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
- [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.

## **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.
<!--
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**
The account tracker polling was executed twice—once in the constructor
and again in the `useAccountTrackerPolling` hook. This caused additional
requests to be sent by the app, leading to performance issues.

<!--
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?
-->

## **Related issues**

Fixes: #13345 

## **Manual testing steps**

1. Go to network tab
2. Verify that the request sent to get the balances are not sent twice

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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.
#13441)

## **Description**

This is another partial PR from our large draft feature branch:
#13006

We have 1 (or 2) more PRs to do the integration and then push
notifications are in!

## **Related issues**

Fixes:

## **Manual testing steps**

No testing steps yet, this PR is not (yet) testable as the feature is
not released and incomplete.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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
- [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.

## **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.
## **Description**

PR to fix account selector balance

## **Related issues**

Fixes: #13476
## **Manual testing steps**

1. Go to this page...
2.
3.

## **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/0ec13f45-3ca0-45e3-81c3-e202d1277b73


## **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.
<!--
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?
-->
Bump detox version to 20.33.0. This required additional changes to the
build scripts.

## **Related issues**

Fixes: #13321 

## **Manual testing steps**

Should continue to be able to run e2e locally.
Should continue to be able to run e2e on bitrise.


## **Screenshots/Recordings**

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

### **Before**

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

### **After**

<!-- [screenshots/recordings] -->
See linked issue.
## **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
- [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.

## **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.
## **Description**

fixes main aggregated balance
## **Related issues**

Fixes: #13478

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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.
## **Description**

update plist to include CFBundleIconName for app icons

## **Related issues**

Fixes:

## **Manual testing steps**

1. View `ios/MetaMask/Info.plist` to confirm `CFBundleIconName` is there
2.
3.

## **Screenshots/Recordings**

NA

### **Before**

NA

### **After**

NA

## **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
- [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.

## **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.
## **Description**

- Added additional app icons
- Removed unused tint fields in `Contents.json`
- Updated `info.plist`

## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

NA

### **Before**

NA

### **After**

NA

## **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
- [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.

## **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.
<!--
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**

Adds hook that encapsulates the component logic, and unit tests.
<!--
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?
-->

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4081

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

<img width="320" alt="Screenshot 2025-02-13 at 12 37 26"
src="https://github.com/user-attachments/assets/6e2181ba-5ce0-4da4-aa6b-465964d84da1"
/>


## **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.
…#13369)

<!--
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**

- Add redesign Permit support
  - Displays appropriate title and subtitle
  - Displays "Spender" if applicable 
- Fix InfoRow padding and alignment
- InfoRow alignItems: 'baseline' was causing inconsistent alignment
since each wrapped row has its own relative baseline
- Fix Permit Simulation values not aligning to the right
- Updates DisplayURL test
  - replaces snapshot test
  - fix toBeDefined → toBeTruthy to ensure test checks null case

## **Related issues**

Fixes: MetaMask/MetaMask-planning#3919 (Permit
support)
Fixes: #13368 (Permit
Simulation value alignment)

## **Manual testing steps**

1. Go to a test dapp 
https://develop.d3bkcslj57l47p.amplifyapp.com/ or
https://metamask.github.io/test-dapp/
2. Test various Permit signatures

## **Screenshots/Recordings**

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

### **Before**

<img width="320"
src="https://github.com/user-attachments/assets/ae196a59-284c-4b6b-90fa-20f4ed84850c">
<img width="320"
src="https://github.com/user-attachments/assets/dc910b1d-4c1a-4d13-94a0-777802c0f7dc">


### **After**

<img width="320"
src="https://github.com/user-attachments/assets/38dda8c0-61b9-466b-9b9a-581ef61e380a">
<img width="320"
src="https://github.com/user-attachments/assets/8a510a1a-1ec3-484e-b191-3e3d684a6718">
<img width="320"
src="https://github.com/user-attachments/assets/11b387c6-beb8-4332-b6af-b276e311077d">

## **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.
<!--
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?
-->

## **Related issues**

Fixes:
[#4220](MetaMask/MetaMask-planning#4220)

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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.
<!--
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**
This PR adds the `<EarnTokenList />` component which displays a list of
supported staking and lending tokens. Portions of the EarnTokenList are
still hardcoded until we add data-fetching.

#### Network Switching
- The active network will be switched automatically if a token that
isn't on the current network is selected (e.g. Base USDC)

#### Filtering Out Ineligible Tokens
- Staking tokens won't be displayed in the list if a user isn't eligible
to stake
- Lending tokens won't be displayed in the list if a user isn't eligible
to lend.

#### Token Display Order
- Tokens where a user has a balance will be displayed first
- Tokens where a user **doesn't** have a balance will **still** be
displayed with an APR estimate.
 
<!--
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?
-->

#### Reason for change
This is part of the Stablecoin Lending initiative.

## **Related issues**

- [STAKE-898: [FE] Build 'Select Token' component for Earn
Products](https://consensyssoftware.atlassian.net/browse/STAKE-898)

## **Manual testing steps**
1. Add `export MM_STABLECOIN_LENDING_UI_ENABLED=true` to your `.js.env`
file
2. From the home screen (asset list), click on the wallet action button
(the center blue bottom in the bottom tab bar with 2 arrows)
3. Select the "Earn" action
4. Select any token
5. The network should change automatically if not already selected
6. You should be redirected to the input screen. This screen should have
a title of `Stake ETH` or `Deposit ${token.symbol}` depending on your
selection during step 4

## **Screenshots/Recordings**

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

### **Designs**

https://www.figma.com/design/HSYn1fXfnBvDwHvBO1ZZHb/Earn?m=auto&node-id=7079-143568

### **Before**

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

https://github.com/user-attachments/assets/20c73603-9111-4f11-81f4-3edf9d8580ac


### **After**

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

https://github.com/user-attachments/assets/b265e999-6672-4a3d-b5e8-5ab5ebc56c2c


## **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
- [ ] 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.

## **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.

---------

Co-authored-by: tommasini <[email protected]>
<!--
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**

* Update accounts controller (^24), assets controller(^50) and
transaction controller(^46)
* Handle breaking changes of assets controllers
* Update the patch of assets controllers to be on v50
* Add MultichainNetworkController v0.1.1 (Although only added and not
used at this PR, setActiveNetwork will be refactored in a follow up PR)


## **Related issues**

Fixes:

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**


https://github.com/user-attachments/assets/cb378ce5-1e46-45f1-8520-1f18cb4b3b02


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

## **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
- [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.

## **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.

---------

Co-authored-by: Gustavo Antunes <[email protected]>
<!--
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?
-->

## **Related issues**

Fixes: MetaMask/MetaMask-planning#3941

## **Manual testing steps**

1. Go to the test dapp
2. Perform transactions and signatures in the section `PPOM - Malicious
Transactions and Signatures`
3. Test one previous supported chain and another chain outside the list
below:

```
// previous supported chains
ARBITRUM = '0xa4b1'
AVALANCHE = '0xa86a'
BASE = '0x2105'
BERACHAIN = '0x138d4'
BSC = '0x38'
LINEA_MAINNET = '0xe708'
MAINNET = '0x1'
METACHAIN_ONE = '0x1b6e6'
OPBNB = '0xcc'
OPTIMISM = '0xa'
POLYGON = '0x89'
SCROLL = '0x82750'
SEPOLIA = '0xaa36a7'
ZKSYNC_ERA = '0x144'
```

## **Screenshots/Recordings**


https://github.com/user-attachments/assets/21da834d-e8e4-42df-be9f-08c8cb897b70


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

### **Before**

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

### **After**

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

## **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
- [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.

## **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.
…3555)

<!--
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**

Brings first party contract list up to date to match the [extension's
when it comes to staking
contracts](https://github.com/MetaMask/metamask-extension/blob/main/shared/constants/first-party-contracts.ts#L24).

<!--
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?
-->

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4221

## **Manual testing steps**

1. Go to this page...
2.
3.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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.
## **Description**

Add scroll button similar to extension on confirmation pages. The scroll
button added is almost exactly like extension except for hover styles,
it does not have hover styles.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4090

## **Manual testing steps**

1. Go to test dapp
2. Open long signature like seaport bulk request
3. Check scroll button that appears

## **Screenshots/Recordings**

https://github.com/user-attachments/assets/3e7b5548-9d3c-4f37-a394-8357b586e98a

## **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
- [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.

## **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.
## **Description**

Reject transaction as user closes modal by swiping out.

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4231

## **Manual testing steps**

1. Open signature request in test dapp
2. Swiping out modal should reject the transaction

## **Screenshots/Recordings**

https://github.com/user-attachments/assets/0ac41b2b-96d5-4809-b2c5-f109d990585d

## **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
- [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.

## **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.
## **Description**

tooltip display for text should have label, this change is suggestion of
design team

## **Related issues**

Fixes: MetaMask/MetaMask-planning#4230

## **Manual testing steps**

1. Go to test dapp
2. Open permit and detailed message
3. Click token value to see tooltip and ensure it has label

## **Screenshots/Recordings**
<img width="398" alt="Screenshot 2025-02-18 at 3 49 39 PM"
src="https://github.com/user-attachments/assets/7c586eed-2d51-48ea-b0a8-6bfc2b68c1ef"
/>

## **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
- [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.

## **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.
## **Description**

Bump `@metamask/notification-services-controller` from `^0.15.0` to
`^0.21.0`

## **Related issues**

Fixes:

## **Manual testing steps**

N/A
Just need to make sure the app doesn't crash.

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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.
<!--
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**
This PR adds comprehensive unit tests for components involved in
managing network permissions.

### Key Changes
- NetworkSelectorList tests:
  - Snapshot tests for rendering verification.
  - Tests for network selection and right accessory rendering.
- NetworkConnectMultiSelector tests:
  - Simulate network permission update flows.
- Validate handling of multi-select behavior and correct chain ID usage.
- ConnectionDetails tests:
- Verify proper rendering and date formatting for network permission
details.
- PermittedNetworksInfoSheet tests:
- Ensure the info sheet renders the correct title, description, and
action button.
- PermissionsManager tests:
- Check that the component renders the empty state when no network
permissions exist.


<!--
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?
-->

## **Related issues**

Contributes to:
MetaMask/MetaMask-planning#3664

## **Manual testing steps**

1. run jest for each test file, npx jest <test-file-path>, or just yarn
test:unit

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **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.
…etworkController (#13556)

## **Description**

Update setActiveNetwork function to be called from
MultichainNetworkController instead of NetworkController


## **Related issues**

Fixes:

## **Manual testing steps**

1. Add network via dapp
2. Add network via popular list
3. Add custom network
4. Remove selected network

## **Screenshots/Recordings**

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

### **Before**

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

### **After**



https://github.com/user-attachments/assets/63ca6d56-a523-46f0-a7a8-a861fc05d81d



https://github.com/user-attachments/assets/c6d07314-9b47-4a70-a287-73b452ebf190



## **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).
- [ ] 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.

## **Pre-merge reviewer checklist**

- [ ] 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.
@sethkfman sethkfman requested review from a team as code owners March 27, 2025 19:23
Copy link
Contributor

github-actions bot commented Mar 27, 2025

https://bitrise.io/ Bitrise

❌❌❌ pr_smoke_e2e_pipeline failed on Bitrise! ❌❌❌

Commit hash: 738aa6b
Build link: https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/01fe4ec8-0749-49d7-9043-24775fe84e78

Note

  • You can kick off another pr_smoke_e2e_pipeline on Bitrise by removing and re-applying the Run Smoke E2E label on the pull request

Tip

  • Check the documentation if you have any doubts on how to understand the failure on bitrise

@sethkfman sethkfman added Run Smoke E2E Requires smoke E2E testing and removed Run Smoke E2E Requires smoke E2E testing labels Mar 27, 2025
Copy link
Contributor

github-actions bot commented Mar 27, 2025

https://bitrise.io/ Bitrise

❌❌❌ pr_smoke_e2e_pipeline failed on Bitrise! ❌❌❌

Commit hash: 9523566
Build link: https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/a7e243a8-397e-4b48-9556-5e2376e8e043

Note

  • You can kick off another pr_smoke_e2e_pipeline on Bitrise by removing and re-applying the Run Smoke E2E label on the pull request

Tip

  • Check the documentation if you have any doubts on how to understand the failure on bitrise

@sethkfman
Copy link
Contributor

@SocketSecurity ignore-all

@sethkfman sethkfman enabled auto-merge March 27, 2025 20:10
@sethkfman
Copy link
Contributor

@metamaskbot update-attributions

@metamaskbot
Copy link
Collaborator Author

Attributions updated

@sethkfman sethkfman added Run Smoke E2E Requires smoke E2E testing and removed Run Smoke E2E Requires smoke E2E testing labels Mar 27, 2025
Copy link
Contributor

github-actions bot commented Mar 27, 2025

https://bitrise.io/ Bitrise

❌❌❌ pr_smoke_e2e_pipeline failed on Bitrise! ❌❌❌

Commit hash: 9152dbd
Build link: https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/fca0bec9-4bb7-4dc8-ba7a-ec17ccef14f4

Note

  • You can kick off another pr_smoke_e2e_pipeline on Bitrise by removing and re-applying the Run Smoke E2E label on the pull request

Tip

  • Check the documentation if you have any doubts on how to understand the failure on bitrise

Copy link

@sethkfman sethkfman merged commit c6074ee into stable Mar 27, 2025
35 of 37 checks passed
@sethkfman sethkfman deleted the release/7.43.0 branch March 27, 2025 21:51
@github-actions github-actions bot locked and limited conversation to collaborators Mar 27, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Run Smoke E2E Requires smoke E2E testing team-bot
Projects
None yet
Development

Successfully merging this pull request may close these issues.