Skip to content

Conversation

@sethkfman
Copy link
Contributor

@sethkfman sethkfman commented Jul 9, 2025

Description

This PR sync stable with main for release 7.47.3 & 747.2.

Changelog

CHANGELOG entry:

Related issues

Fixes:

Manual testing steps

  1. NA

Screenshots/Recordings

NA

Before

After

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.

metamaskbot and others added 30 commits May 9, 2025 23:00
…p to v1.27.0 (#15284)

- chore: cp-7.47.0 upgrade solana-wallet-snap to v1.27.0 (#15282)
… v62.0.0 (#15289)

- chore: cp-7.47.0 upgrade assets-controller v62.0.0 (#15261)
… `SendTo` page (#15309)

- fix: cp-7.47.0 Add safe checksum method in `SendTo` page (#15308)

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

This PR aims to fix an issue when user puts an unexpected value into
`to` field in send flow.

It appears from that [the
issue](https://metamask.sentry.io/issues/6582066742/?project=2299799) is
thrown by `toChecksumAddress` because it doesn't expect any incomplete
address. However in send flow UX we let user to type in address
themselves.

To test this you can go `SendTo` page and put `K` for example - and see
the crash. (Screenshot below is fixed version)

**Labels**
Adding `skip-sonar-cloud` as the raised issue was intentional.

![Screenshot 2025-05-14 at 06 44

09](https://github.com/user-attachments/assets/fda651bc-4925-40d8-95ca-2cabd7cbed66)

## **Related issues**

Fixes: #15094

## **Manual testing steps**

1. Go to send flow
2. Input an unexpected address 
3. Confirm warning shown - you shouldn't be proceed next step

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

Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com>
…r migration 73 (#15315)

- fix: cp-7.46.0 cp-7.47.0 Add dummy file for migration 73 (#15302)
…ditional checks for non-evm networks (#15313)

- fix: (cp-7.46.0) network switcher - use additional checks for non-evm
networks (#15283)
…r migration 73 (#15314)

- fix: cp-7.46.0 cp-7.47.0 Add dummy file for migration 73 (#15302)
)

cp-7.46.0 fix account list flakes in e2e tests (#15328)
…page (#15332)

- fix: cp-7.47.0 Add safe checksum method in `SendTo` page (#15308)
…when removing dapp permitted chain (#15354)

- fix: cp-7.47.0 fix endowment:caip25 error when removing dapp permitted
chain (#15352)
…15224) (#15339)

## **Description**

Render a toast indicating that solana dapp connectivity is coming soon
when a user opens the in app browser and their current account is a
Solana account.

Design is here:

https://www.figma.com/design/VqbOpEAsKGogdhZ5IsL4Pu/Solana?m=auto&node-id=2771-7777&t=IUlpwfo4owE10Ybw-1

## **Related issues**

Fixes: #14563

## **Manual testing steps**

1. ensure that you are building beta by editing your
`METAMASK_BUILD_TYPE` to `beta` in the `.js.env` file
2. import or create a wallet
3. create a solona account
4. ensure that the solana account is selected
5. navigate to the browser
6. you should see the Toast that matches the designs pop up
7. now navigate back to the wallet view and select an ethereum account
8. navigate back to the browser
9. notice that the toast does not pop up

## **Screenshots/Recordings**

### **Before**


### **After**

<img width="459" alt="Screenshot 2025-05-08 at 9 42 31 PM"
src="https://github.com/user-attachments/assets/c54c05f3-5e92-443d-b4d2-22408021d507"
/>




https://github.com/user-attachments/assets/6ed3aa9e-e5fe-4715-8146-e5c0a3237ddf


## **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.
…an link on tx details (#15351)

- fix: cp-7.45.0 use correct default etherscan link on tx details
(#14847)
… text to bridge view (#15380)

- fix: cp-7.47.0 add MetaMask fee disclaimer text to bridge view
(#15377)
…ote response fields (#15376)

- fix: cp-7.47.0 bump bridge controllers and update quote response
fields (#15300)
<!--
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 portfolio e2e test is causing instability in the smoke pipeline.
This PR basically qurantine's the e2e.

## **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.
<!--
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 portfolio e2e test is causing instability in the smoke pipeline.
This PR basically qurantine's the e2e.

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

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

## **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
- [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.
# 🚀 v7.46.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
- [x] Accounts  
- [x] Assets  
- [x] Confirmations  
- [x] Earn  
- [x] Hardware Wallets  
- [x] Identity  
- [ ] Mobile Platform  (pending incident resolution)
- [x] Portfolio  
- [x] Product Safety  
- [x] Ramp  
- [x] SDK  
- [x] Snaps Platform  
- [x] Solana  
- [x] Swaps and Bridge  
- [x] Transactions
- [x] Wallet Framework  
- [x] Wallet UX  

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
- Testing plan sheet -
https://docs.google.com/spreadsheets/d/1tsoodlAlyvEUpkkcNcbZ4PM9HuC9cEM80RZeoVv5OCQ/edit?usp=sharing
update version of the app to match 7.46.1 hotfix branch
metamaskbot and others added 10 commits June 26, 2025 17:43
…when viewing Solana asset details (#16776)

- fix(bridge): fix: cp-7.47.3 prevent crash when viewing Solana asset
details (#16770)

## **Description**

Fixes a crash that occurs when viewing asset details for Solana tokens
in the Bridge flow. The issue was caused by `getTokenDetails` assuming
all non-EVM asset addresses are already in CAIP format, when the Bridge
API sometimes returns raw Solana addresses.

## **Related issues**

Fixes #16734
Fixes
[SWAPS-2525](https://consensyssoftware.atlassian.net/browse/SWAPS-2525)

## **Manual testing steps**

1. Navigate to Bridge feature
2. Select Solana as source or destination chain
3. Select any Solana token from the token list
4. Tap on the asset detail info button
5. Verify the asset details screen loads without crashing
6. Verify contract address and other details display correctly

## **Screenshots/Recordings**

<!-- Add screenshots or recordings demonstrating the fix -->

**Before:**



https://github.com/user-attachments/assets/cf41e9fa-ae3d-4336-aefe-40017e831364

**After:**



https://github.com/user-attachments/assets/ccacf57e-1971-42c4-a3d7-a3978e7c954b


## **Pre-merge author checklist**

- [x] I've followed [MetaMask Coding

Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md)
- [x] I've clearly explained what problem this PR solves
- [x] I've linked the issue that this PR fixes
- [x] I've included manual testing steps
- [x] I've included screenshots/recordings if applicable
- [x] I've added unit tests if applicable

## **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 the issue linked above
- [ ] I've checked that all unit tests pass

## **Solution Details**

### **Root Cause**

The `getTokenDetails` function was calling `parseCaipAssetType` directly
on `asset.address` for non-EVM assets, assuming it was already in CAIP
format. However, the Bridge API sometimes returns raw Solana addresses
instead of CAIP-formatted addresses, causing `parseCaipAssetType` to
throw an error.

### **Fix Applied**

Implemented the same defensive approach used in
`useTokenHistoricalPrices`:

```typescript
// Detect if address is already in CAIP format
const isCaipAssetType = asset.address.startsWith(`${asset.chainId}`);

// Convert to CAIP format if needed
const normalizedCaipAssetTypeAddress = isCaipAssetType
  ? asset.address
  : `${asset.chainId}/token:${asset.address}`;
```

### **Benefits**

- ✅ **Fixes crash**: Solana asset details now load without errors
- ✅ **Backward compatible**: Handles both raw and CAIP format addresses
- ✅ **Consistent pattern**: Uses same approach as
`useTokenHistoricalPrices`
- ✅ **Zero breaking changes**: All existing functionality preserved
- ✅ **Future-proof**: Works with any non-EVM chain automatically

### **Testing**

- Added comprehensive unit tests covering both scenarios
- All 12 tests pass including new test cases
- Verified with existing Bridge test suite
- Manual testing confirms crash is resolved


[SWAPS-2525]:

https://consensyssoftware.atlassian.net/browse/SWAPS-2525?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[86633c5](86633c5)

[SWAPS-2525]:
https://consensyssoftware.atlassian.net/browse/SWAPS-2525?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[SWAPS-2525]:
https://consensyssoftware.atlassian.net/browse/SWAPS-2525?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

---------

Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com>
Co-authored-by: tommasini <tommasini15@gmail.com>
<!--
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:

## **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.
@github-actions
Copy link
Contributor

github-actions bot commented Jul 9, 2025

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.

@metamaskbot metamaskbot added the team-mobile-platform Mobile Platform team label Jul 9, 2025
@socket-security
Copy link

socket-security bot commented Jul 9, 2025

No dependency changes detected. Learn more about Socket for GitHub.

👍 No dependency changes detected in pull request

@sethkfman sethkfman changed the title chore: stable sync 7.47.3 chore: stable sync 7.47.3 & 747.2 Jul 9, 2025
@sethkfman sethkfman added No QA Needed Apply this label when your PR does not need any QA effort. No E2E Smoke Needed labels Jul 9, 2025
@sethkfman sethkfman marked this pull request as ready for review July 9, 2025 14:28
@sethkfman sethkfman requested a review from a team July 9, 2025 14:28
@sethkfman sethkfman enabled auto-merge July 9, 2025 14:29
@sonarqubecloud
Copy link

sonarqubecloud bot commented Jul 9, 2025

@sethkfman sethkfman added this pull request to the merge queue Jul 9, 2025
Merged via the queue into main with commit cbe5575 Jul 9, 2025
65 of 67 checks passed
@sethkfman sethkfman deleted the chore/stable-sync-7.47.3 branch July 9, 2025 15:08
@github-actions github-actions bot locked and limited conversation to collaborators Jul 9, 2025
@metamaskbot metamaskbot added the release-7.52.0 Issue or pull request that will be included in release 7.52.0 label Jul 9, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

No QA Needed Apply this label when your PR does not need any QA effort. release-7.52.0 Issue or pull request that will be included in release 7.52.0 team-mobile-platform Mobile Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.