Skip to content

feat: bump solana/kit@8.3.0 - #303

Merged
taran-a merged 4 commits into
mainfrom
feat/bump-solana/kit@8.3.0
Sep 15, 2026
Merged

taran-a merged 4 commits into
mainfrom
feat/bump-solana/kit@8.3.0

Conversation

@taran-a

@taran-a taran-a commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Explanation

Bumps the Solana snap to @solana/kit@^8.3.0 (from ^6.9.0) and the @solana-program/* clients to their Kit 8-compatible versions, enabling full v1 transaction support.

Changes

  • @solana/kit → ^8.3.0; compute-budget → ^0.18.1, system → ^0.14.1, token → ^0.16.1, token-2022 → ^0.17.0

  • Add @solana/sysvars and @solana/zk-sdk (new peer dependencies of token-2022@0.17.0)

  • Add scoped resolution sns-sdk-kit/@solana-program/token: ^0.16.1 — sns-sdk-kit@1.0.1 pins token ^0.14.0, which imports getMinimumBalanceForRentExemption (removed in kit v7) and breaks the bundle build. Mirrors SolanaNameService/sns-sdk#2; drop once sns-sdk-kit@1.1.0 releases

  • Update one TokenHelper test expectation: token-2022 0.17 rounds the interest-bearing conversion up instead of flooring (995847000n → 995847001n); verified stable regardless of wall-clock time

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

@taran-a
taran-a requested review from a team as code owners September 14, 2026 09:22
@taran-a
taran-a deployed to default-branch September 14, 2026 09:22 — with GitHub Actions Active
@socket-security

socket-security Bot commented Sep 14, 2026 •

Copy link
Copy Markdown

@socket-security

socket-security Bot commented Sep 14, 2026 •

Copy link
Copy Markdown

Warning

MetaMask internal reviewing guidelines:

  • Do not ignore-all
  • Each alert has instructions on how to review if you don't know what it means. If lost, ask your Security Liaison or the supply-chain group
  • Copy-paste ignore lines for specific packages or a group of one kind with a note on what research you did to deem it safe.
    @SocketSecurity ignore npm/PACKAGE@VERSION
Action Severity Alert  (click "▶" to expand/collapse)
Warn Low
Environment variable access: npm @solana-program/record reads NODE_ENV

Env Vars: NODE_ENV

Location: Package overview

From: packages/solana-wallet-snap/package.json → npm/@solana-program/token-2022@0.17.0 → npm/@solana-program/record@0.4.1

ℹ Read more on: This package | This alert | What is environment variable access?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should be clear about which environment variables they access, and care should be taken to ensure they only access environment variables they claim to.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@solana-program/record@0.4.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@taran-a
taran-a force-pushed the feat/bump-solana/kit@8.3.0 branch from 22c4298 to aae9bfe Compare September 14, 2026 09:29
);

expect(amount).toBe(995847000n);
expect(amount).toBe(995847001n);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this change necessary?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TokenHelper.test.ts:167 — expected interest-bearing conversion 995847000n → 995847001n. Upstream token-2022 0.17 changed the final rounding (rounds up instead of flooring). Note this is still a behavioral change users could see: interest-bearing balances can now differ by 1 raw unit after conversion.

@taran-a
taran-a requested a review from mikesposito September 14, 2026 09:55
@taran-a

taran-a commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/bitcoin-wallet-snap@2.0.1-preview-aae9bfe
@metamask-previews/snap-networks-utils@1.0.0-preview-aae9bfe
@metamask-previews/solana-wallet-snap@6.0.0-preview-aae9bfe
@metamask-previews/stellar-wallet-snap@0.1.0-preview-aae9bfe
@metamask-previews/tron-wallet-snap@3.2.0-preview-aae9bfe

taran-a and others added 3 commits September 15, 2026 09:08
Co-authored-by: Battambang <frederic.heng@consensys.net>
Co-authored-by: Battambang <frederic.heng@consensys.net>
@taran-a
taran-a requested a review from Battambang September 15, 2026 07:12
@sonarqubecloud

Copy link
Copy Markdown

@taran-a
taran-a added this pull request to the merge queue Sep 15, 2026
Merged via the queue into main with commit 2651451 Sep 15, 2026
95 checks passed
@taran-a
taran-a deleted the feat/bump-solana/kit@8.3.0 branch September 15, 2026 08:20
tirthraj01 pushed a commit to tirthraj01/metamask-mobile that referenced this pull request Oct 2, 2026
<!--
Please submit this PR as a draft initially.

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

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

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

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

## **Description**

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

<details>
<summary>Tron release changelog v4.0.0</summary>

### Added

- Add `signProofOfOwnershipBatch` for signing multiple
proof-of-ownership messages in one request.
([MetaMask#265](MetaMask/internal-snaps#265))
- Emit `Transaction Added`, `Transaction Approved`, and `Transaction
Rejected` for `signTransaction` confirmations
([MetaMask#333](MetaMask/internal-snaps#333))
- Only dApp-initiated transaction confirmations were affected; the
unified send flow already emitted these events.
- Report account synchronization failures to Sentry with the failing
account IDs and their failure reasons
([MetaMask#374](MetaMask/internal-snaps#374))

### Changed

- **BREAKING** Bump `@metamask/keyring-api` from `^23.7.0` to `^24.1.0`
([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/keyring-snap-sdk` from `^9.2.1` to
`^10.0.0` ([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/snaps-sdk` from `^11.2.0` to `^12.0.1`
([MetaMask#214](MetaMask/internal-snaps#214))

### Removed

- **BREAKING** Remove the deprecated `asset` cluster of handlers:
`onAssetHistoricalPrice`, `onAssetsConversion`, `onAssetsLookup` and
`onAssetsMarketData`
([MetaMask#263](MetaMask/internal-snaps#263))

### Fixed

- Emit `Transaction Submitted` from the Wallet Standard
`signAndSendTransaction` path so its transactions no longer reach
`Transaction Finalized` without a matching submit event
([MetaMask#343](MetaMask/internal-snaps#343))
- Tolerate unknown fields in the Token API metadata response so that new
fields added by the API no longer fail validation and fall back to
default token metadata
([MetaMask#320](MetaMask/internal-snaps#320))

</details>
<details>
<summary>Solana release changelog v7.0.0</summary>

### Added

- Add `signProofOfOwnershipBatch` for signing multiple
proof-of-ownership messages in one request.
([MetaMask#256](MetaMask/internal-snaps#256))
- Add back the `endowment:assets` permission for the Solana scopes to
the snap manifest, with no-op `onAssetsLookup`, `onAssetsConversion`,
`onAssetHistoricalPrice`, and `onAssetsMarketData` entry points required
to keep the permission
([MetaMask#274](MetaMask/internal-snaps#274))
- Report account synchronization failures to Sentry with the failing
account IDs and their failure reasons
([MetaMask#376](MetaMask/internal-snaps#376))

### Changed

- **BREAKING:** Bump `@solana/kit` from `^6.9.0` to `^8.3.0` and the
`@solana-program/*` clients (`compute-budget` `^0.18.1`, `system`
`^0.14.1`, `token` `^0.16.1`, `token-2022` `^0.17.0`) to their Kit
8-compatible versions.
([MetaMask#303](MetaMask/internal-snaps#303))
- **BREAKING:** Update the Solana Name Service integration to SNS SDK v1
and the Kit 6.9-compatible Solana program clients
([MetaMask#271](MetaMask/internal-snaps#271))
- **BREAKING** Bump `@metamask/keyring-api` from `^23.7.0` to `^24.1.0`
([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/keyring-snap-sdk` from `^9.2.1` to
`^10.0.0` ([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/snaps-sdk` from `^11.2.0` to `^12.0.1`
([MetaMask#214](MetaMask/internal-snaps#214))
- Reduce `snap_getBip32Entropy` calls in `createAccounts` from two to
one for `bip44:discover` by deriving the activity-check address locally
from the already-fetched coin-type node, and parallelize the entropy
fetch with the existing-accounts state read for all creation paths
([MetaMask#304](MetaMask/internal-snaps#304))
- Coalesce concurrent `AccountsSynchronizer.synchronize` calls for the
same account set so duplicate in-flight syncs (e.g. simultaneous
connection-recovery events across mainnet and devnet) share one run
instead of fanning out redundant asset and transaction fetches
([MetaMask#304](MetaMask/internal-snaps#304))
- Migrate `trackError` and `withCatchAndThrowSnapError` to
`@metamask/snap-networks-utils` `createSnapErrorHandling`, and add
`getSnapProvider` for Snap RPC access
- Extract Snap-owned assets domain logic into `SnapAssetsAdapter`;
`AssetsService` is a thin facade that delegates metadata, market data,
fetch, persist, and account asset reads through the adapter (no Core
routing yet).
([MetaMask#121](MetaMask/internal-snaps#121))
- Align `AssetsService` read API with `snap-networks-utils` /
AssetsController shapes by adding `getAccountAssetByID`,
`getAccountAssetsByIDs`, `getAccountAssetsByScope`, and
`getAccountAssets`, and routing Keyring and Send through them (still
Snap-owned storage).
([MetaMask#120](MetaMask/internal-snaps#120))
- Bump `@metamask/utils` from `^11.9.0` to `^11.11.9`
([MetaMask#161](MetaMask/internal-snaps#161))

### Removed

- **BREAKING** Remove the `onAssetsLookup`, `onAssetsConversion`,
`onAssetHistoricalPrice`, and `onAssetsMarketData` asset handler entry
points, along with the now-unused handler modules and the
`endowment:assets` permission
([MetaMask#261](MetaMask/internal-snaps#261))
- **BREAKING** Remove `AssetsService.fetchAssetsMarketData` and
`SnapAssetsAdapter.fetchAssetsMarketData`, the `TokenPricesService`
class, and `PriceApiClient.getHistoricalPrices`, all of which were only
used by the removed asset handlers
([MetaMask#261](MetaMask/internal-snaps#261))
- Remove the now-unused `PriceApiClient.getFiatExchangeRates` method and
related `ExchangeRate` type, the unused `tokenPrices` unencrypted state
field, the unused `fiatExchangeRates` and `historicalPrices` price API
cache TTL options, and unused price API test mocks
([MetaMask#261](MetaMask/internal-snaps#261))

### Fixed

- **BREAKING:** Preserve dapp-origin `signTransaction` and
`signAndSendTransaction` payloads by signing the decoded transaction
directly ([MetaMask#156](MetaMask/internal-snaps#156))
- Prevent signing dapp transactions with expired blockhashes, and
refresh the blockhash for MetaMask-originated transactions before
signing. ([MetaMask#183](MetaMask/internal-snaps#183))
- Tolerate unknown fields in the Price API spot price and Token API
metadata responses so that new fields
added by the API no longer fail validation
([MetaMask#321](MetaMask/internal-snaps#321))
- Emit an `AccountTransactionsUpdated` keyring event with a pending
`unconfirmed` transaction immediately after broadcasting.


</details>
<details>
<summary>Bitcoin release changelog v3.1.0</summary>

### Added

- Add `signProofOfOwnershipBatch` for signing multiple
proof-of-ownership messages in one request.
([MetaMask#266](MetaMask/internal-snaps#266))
- Emit `Transaction Added`, `Transaction Approved`, and `Transaction
Rejected` tracking events from Bitcoin transaction confirmations
([MetaMask#328](MetaMask/internal-snaps#328),
[MetaMask#329](MetaMask/internal-snaps#329))
- Report account synchronization failures to Sentry with the failing
account IDs and their failure reasons
([MetaMask#375](MetaMask/internal-snaps#375))

### Fixed

- Populate the `from` address of receive transactions by resolving the
addresses that funded them through the chain indexer. Bitcoin inputs
only reference a previous outpoint, so the sender was previously left
empty. ([MetaMask#372](MetaMask/internal-snaps#372))

</details>

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


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

## **Changelog**

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

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

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

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

CHANGELOG entry: null

## **Related issues**

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

n/a

## **Manual testing steps**

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

n/a

## **Screenshots/Recordings**

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

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

### **Before**

n/a

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

### **After**

n/a

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

## **Pre-merge author checklist**

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

<!--
Every checklist item must be consciously assessed before marking this PR
as
"Ready for review". A checked box means you deliberately considered that
responsibility, not that you literally performed every action listed.

Unchecked boxes are ambiguous: they are not an implicit "N/A" and they
are not
a silent "skip". See `docs/readme/ready-for-review.md` for the full
checklist
semantics.
-->

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

#### Performance checks (if applicable)

- [ ] I've tested on Android
  - Ideally on a mid-range device; emulator is acceptable
- [ ] I've tested with a power user scenario
- Use these [power-user
SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93)
to import wallets with many accounts and tokens
- [ ] I've instrumented key operations with Sentry traces for production
performance metrics
- See [`trace()`](/app/util/trace.ts) for usage and
[`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274)
for an example

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

## **Pre-merge reviewer checklist**

<!--
Reviewer checklist items follow the same semantics as the author
checklist: an
unchecked box is ambiguous, a checked box means the reviewer consciously
assessed that responsibility. See `docs/readme/ready-for-review.md`.
-->

- [ ] 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.
LabinatorSolutions pushed a commit to LabinatorSolutions/metamask-extension that referenced this pull request Oct 8, 2026
<!--
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**

<details>
<summary>Tron release changelog v4.0.0</summary>

### Added

- Add `signProofOfOwnershipBatch` for signing multiple
proof-of-ownership messages in one request.
([MetaMask#265](MetaMask/internal-snaps#265))
- Emit `Transaction Added`, `Transaction Approved`, and `Transaction
Rejected` for `signTransaction` confirmations
([MetaMask#333](MetaMask/internal-snaps#333))
- Only dApp-initiated transaction confirmations were affected; the
unified send flow already emitted these events.
- Report account synchronization failures to Sentry with the failing
account IDs and their failure reasons
([MetaMask#374](MetaMask/internal-snaps#374))

### Changed

- **BREAKING** Bump `@metamask/keyring-api` from `^23.7.0` to `^24.1.0`
([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/keyring-snap-sdk` from `^9.2.1` to
`^10.0.0` ([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/snaps-sdk` from `^11.2.0` to `^12.0.1`
([MetaMask#214](MetaMask/internal-snaps#214))

### Removed

- **BREAKING** Remove the deprecated `asset` cluster of handlers:
`onAssetHistoricalPrice`, `onAssetsConversion`, `onAssetsLookup` and
`onAssetsMarketData`
([MetaMask#263](MetaMask/internal-snaps#263))

### Fixed

- Emit `Transaction Submitted` from the Wallet Standard
`signAndSendTransaction` path so its transactions no longer reach
`Transaction Finalized` without a matching submit event
([MetaMask#343](MetaMask/internal-snaps#343))
- Tolerate unknown fields in the Token API metadata response so that new
fields added by the API no longer fail validation and fall back to
default token metadata
([MetaMask#320](MetaMask/internal-snaps#320))

</details>
<details>
<summary>Solana release changelog v7.0.0</summary>

### Added

- Add `signProofOfOwnershipBatch` for signing multiple
proof-of-ownership messages in one request.
([MetaMask#256](MetaMask/internal-snaps#256))
- Add back the `endowment:assets` permission for the Solana scopes to
the snap manifest, with no-op `onAssetsLookup`, `onAssetsConversion`,
`onAssetHistoricalPrice`, and `onAssetsMarketData` entry points required
to keep the permission
([MetaMask#274](MetaMask/internal-snaps#274))
- Report account synchronization failures to Sentry with the failing
account IDs and their failure reasons
([MetaMask#376](MetaMask/internal-snaps#376))

### Changed

- **BREAKING:** Bump `@solana/kit` from `^6.9.0` to `^8.3.0` and the
`@solana-program/*` clients (`compute-budget` `^0.18.1`, `system`
`^0.14.1`, `token` `^0.16.1`, `token-2022` `^0.17.0`) to their Kit
8-compatible versions.
([MetaMask#303](MetaMask/internal-snaps#303))
- **BREAKING:** Update the Solana Name Service integration to SNS SDK v1
and the Kit 6.9-compatible Solana program clients
([MetaMask#271](MetaMask/internal-snaps#271))
- **BREAKING** Bump `@metamask/keyring-api` from `^23.7.0` to `^24.1.0`
([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/keyring-snap-sdk` from `^9.2.1` to
`^10.0.0` ([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/snaps-sdk` from `^11.2.0` to `^12.0.1`
([MetaMask#214](MetaMask/internal-snaps#214))
- Reduce `snap_getBip32Entropy` calls in `createAccounts` from two to
one for `bip44:discover` by deriving the activity-check address locally
from the already-fetched coin-type node, and parallelize the entropy
fetch with the existing-accounts state read for all creation paths
([MetaMask#304](MetaMask/internal-snaps#304))
- Coalesce concurrent `AccountsSynchronizer.synchronize` calls for the
same account set so duplicate in-flight syncs (e.g. simultaneous
connection-recovery events across mainnet and devnet) share one run
instead of fanning out redundant asset and transaction fetches
([MetaMask#304](MetaMask/internal-snaps#304))
- Migrate `trackError` and `withCatchAndThrowSnapError` to
`@metamask/snap-networks-utils` `createSnapErrorHandling`, and add
`getSnapProvider` for Snap RPC access
- Extract Snap-owned assets domain logic into `SnapAssetsAdapter`;
`AssetsService` is a thin facade that delegates metadata, market data,
fetch, persist, and account asset reads through the adapter (no Core
routing yet).
([MetaMask#121](MetaMask/internal-snaps#121))
- Align `AssetsService` read API with `snap-networks-utils` /
AssetsController shapes by adding `getAccountAssetByID`,
`getAccountAssetsByIDs`, `getAccountAssetsByScope`, and
`getAccountAssets`, and routing Keyring and Send through them (still
Snap-owned storage).
([MetaMask#120](MetaMask/internal-snaps#120))
- Bump `@metamask/utils` from `^11.9.0` to `^11.11.9`
([MetaMask#161](MetaMask/internal-snaps#161))

### Removed

- **BREAKING** Remove the `onAssetsLookup`, `onAssetsConversion`,
`onAssetHistoricalPrice`, and `onAssetsMarketData` asset handler entry
points, along with the now-unused handler modules and the
`endowment:assets` permission
([MetaMask#261](MetaMask/internal-snaps#261))
- **BREAKING** Remove `AssetsService.fetchAssetsMarketData` and
`SnapAssetsAdapter.fetchAssetsMarketData`, the `TokenPricesService`
class, and `PriceApiClient.getHistoricalPrices`, all of which were only
used by the removed asset handlers
([MetaMask#261](MetaMask/internal-snaps#261))
- Remove the now-unused `PriceApiClient.getFiatExchangeRates` method and
related `ExchangeRate` type, the unused `tokenPrices` unencrypted state
field, the unused `fiatExchangeRates` and `historicalPrices` price API
cache TTL options, and unused price API test mocks
([MetaMask#261](MetaMask/internal-snaps#261))

### Fixed

- **BREAKING:** Preserve dapp-origin `signTransaction` and
`signAndSendTransaction` payloads by signing the decoded transaction
directly ([MetaMask#156](MetaMask/internal-snaps#156))
- Prevent signing dapp transactions with expired blockhashes, and
refresh the blockhash for MetaMask-originated transactions before
signing. ([MetaMask#183](MetaMask/internal-snaps#183))
- Tolerate unknown fields in the Price API spot price and Token API
metadata responses so that new fields
added by the API no longer fail validation
([MetaMask#321](MetaMask/internal-snaps#321))
- Emit an `AccountTransactionsUpdated` keyring event with a pending
`unconfirmed` transaction immediately after broadcasting.


</details>
<details>
<summary>Bitcoin release changelog v3.1.0</summary>

### Added

- Add `signProofOfOwnershipBatch` for signing multiple
proof-of-ownership messages in one request.
([MetaMask#266](MetaMask/internal-snaps#266))
- Emit `Transaction Added`, `Transaction Approved`, and `Transaction
Rejected` tracking events from Bitcoin transaction confirmations
([MetaMask#328](MetaMask/internal-snaps#328),
[MetaMask#329](MetaMask/internal-snaps#329))
- Report account synchronization failures to Sentry with the failing
account IDs and their failure reasons
([MetaMask#375](MetaMask/internal-snaps#375))

### Fixed

- Populate the `from` address of receive transactions by resolving the
addresses that funded them through the chain indexer. Bitcoin inputs
only reference a previous outpoint, so the sender was previously left
empty. ([MetaMask#372](MetaMask/internal-snaps#372))

</details>

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

## **Changelog**

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

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

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

CHANGELOG entry: null

## **Related issues**

n/a

## **Manual testing steps**

n/a

## **Screenshots/Recordings**

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

### **Before**

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

### **After**

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

## **Pre-merge author checklist**

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/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-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Major Solana and Tron snap upgrades can change signing, sync, and
keyring behavior in production multichain flows; extension code changes
are limited to dependency versions and e2e mocks.
> 
> **Overview**
> Bumps bundled multichain wallet Snaps: **Solana** `5.0.1` → `7.0.0`,
**Tron** `3.2.0` → `4.0.0`, and **Bitcoin** `3.0.0` → `3.1.0`, with
matching `yarn.lock` updates.
> 
> E2E tests are adjusted for the new Solana snap behavior: the
multichain `wallet_invokeMethod` **signAndSendTransaction** assertion
uses an updated expected transaction **signature**, and the SPL token
send success mocks swap **`mockGetTokenAccountBalance`** for
**`mockGetSuccessSignaturesForAddress`** after broadcast so
activity/history RPC expectations align with v7.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
c3efb9d. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants