Skip to content

Release 1102.0.0 - #9421

Merged
cloudonshore merged 3 commits into
mainfrom
release/1102.0.0
Jul 7, 2026
Merged

Release 1102.0.0#9421
cloudonshore merged 3 commits into
mainfrom
release/1102.0.0

Conversation

@cloudonshore

@cloudonshore cloudonshore commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Explanation

Releases two packages needed to fix stuck/underpriced bridge smart transactions in the clients (extension + mobile).

@metamask/transaction-controller68.2.268.3.0 (minor)

  • Added: failTransaction method + TransactionController:failTransaction messenger action (#9400) — fails a tx through the standard path, emitting transactionFailed/transactionStatusUpdated/transactionFinished.
  • Fixed: Only apply user-saved (advanced) gas fees to dApp transactions; ignored for internal (isInternal) txs such as swaps and bridges (#9401).
  • Changed: Bump @metamask/messenger ^1.2.0^2.0.0 (#9392).

@metamask/smart-transactions-controller24.2.425.0.0 (major)

  • Changed (BREAKING): Fail the associated regular transaction via TransactionController:failTransaction instead of updateTransaction when a smart transaction is cancelled (#9400). Consumers must now grant the STX messenger access to TransactionController:failTransaction.
  • Changed: Bump @metamask/messenger ^1.2.0^2.0.0 (#9392).

All other changed packages are intentionally-skip (owned by other teams); dependent version ranges were updated automatically.

References

Checklist

  • I've followed the release process
  • Changelogs reviewed and categorized (no Uncategorized; breaking change marked)
  • Version bumps follow SemVer (STX major for the breaking messenger change)

Note

Medium Risk
Touches transaction failure signaling and gas on internal bridge flows; STX 25.0.0 is a breaking messenger permission change for extension/mobile integrators.

Overview
Monorepo release 1102.0.0 that publishes @metamask/transaction-controller 68.3.0 and @metamask/smart-transactions-controller 25.0.0, and rolls @metamask/transaction-controller ^68.2.2^68.3.0 through dependent packages and yarn.lock.

transaction-controller 68.3.0 (documented in its changelog for this release): adds failTransaction / TransactionController:failTransaction so out-of-band failures emit normal lifecycle events; fixes advanced gas fees so they apply only to dApp txs, not isInternal bridge/swap txs.

smart-transactions-controller 25.0.0 (breaking): on smart-tx cancel, calls failTransaction instead of updateTransaction; hosts must delegate TransactionController:failTransaction on the STX messenger.

Other touched packages in the diff are mainly version/changelog dependency bumps tied to this release, not new feature code in those files.

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

@cloudonshore
cloudonshore requested review from a team as code owners July 7, 2026 21:54
@metamask-ci

metamask-ci Bot commented Jul 7, 2026

Copy link
Copy Markdown

✅ Changelogs updated and pushed.

@cloudonshore
cloudonshore added this pull request to the merge queue Jul 7, 2026
Merged via the queue into main with commit 6b38b9a Jul 7, 2026
417 checks passed
@cloudonshore
cloudonshore deleted the release/1102.0.0 branch July 7, 2026 22:42
@maxime-oe maxime-oe mentioned this pull request Jul 9, 2026
4 tasks
pull Bot pushed a commit to dmrazzy/core that referenced this pull request Jul 9, 2026
## Explanation

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

## [Asset Controller 10.2.0]

### Added

- Add Robinhood Chain (`4663`/`0x1237`) in `MulticallClient`
([MetaMask#9443](MetaMask#9443))

### Changed

- `MulticallClient` memoizes `balanceOf` and `getEthBalance` call
encodings per account address when building multicall batches, reducing
redundant ABI encoding for wallets with many tokens
([MetaMask#9425](MetaMask#9425))
- Bump `@metamask/transaction-controller` from `^68.2.2` to `^68.3.0`
([MetaMask#9421](MetaMask#9421))
- Bump `@metamask/keyring-api` from `^23.3.0` to `^23.5.0`
([MetaMask#9390](MetaMask#9390))
- Bump `@metamask/keyring-snap-client` from `^9.0.2` to `^9.2.0`
([MetaMask#9390](MetaMask#9390))
- Bump `@metamask/account-tree-controller` from `^7.5.3` to `^7.5.4`
([MetaMask#9429](MetaMask#9429))
- Bump `@metamask/assets-controllers` from `^109.3.0` to `^109.3.1`
([MetaMask#9429](MetaMask#9429))
- Bump `@metamask/assets-controllers` from `^109.3.0` to `^109.4.0`
([MetaMask#9429](MetaMask#9429),
[MetaMask#9450](MetaMask#9450))

## [Assets-Controllers 109.4.0]

### Added

- Add Robinhood Chain (`4663`/`0x1237`) entries in `multicall.ts` and
`codefi-v2.ts` ([MetaMask#9443](MetaMask#9443))

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

## 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](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Version and changelog/lockfile coordination only; functional changes
are additive chain support and multicall encoding optimizations
described in prior PRs.
> 
> **Overview**
> Cuts **monorepo release `1109.0.0`** by bumping published package
versions and aligning dependent packages and `yarn.lock`.
> 
> **`@metamask/assets-controller` `10.2.0`** documents Robinhood Chain
(`4663`/`0x1237`) support in `MulticallClient`, memoized `balanceOf` /
`getEthBalance` encodings in multicall batches, and several dependency
bumps (including `@metamask/assets-controllers` to `^109.4.0`).
> 
> **`@metamask/assets-controllers` `109.4.0`** documents Robinhood Chain
entries in `multicall.ts` and `codefi-v2.ts`.
> 
> **`bridge-controller`** and **`transaction-pay-controller`** update
their `package.json` dependencies to `@metamask/assets-controller`
`^10.2.0` and `@metamask/assets-controllers` `^109.4.0`, with matching
changelog notes.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
c721375. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
pull Bot pushed a commit to Reality2byte/metamask-mobile that referenced this pull request Jul 21, 2026
…ask#33175)

## **Description**

Integrates the published core fix for stuck bridge smart transactions
into mobile.

Changes:
- Bump `@metamask/smart-transactions-controller` `^24.2.2` → `25.0.0`
- Bump `@metamask/transaction-controller` to `68.4.0` (dependency
`^68.3.0` + resolution `68.4.0`)
- Update the smart transactions controller messenger to delegate
`TransactionController:failTransaction` instead of
`TransactionController:updateTransaction`

**Why:** When the relay cancelled a smart transaction, the STX
controller previously called `updateTransaction`, which only patches
state and does not emit transaction lifecycle events. Consumers that
react to `transactionFailed`/`transactionStatusUpdated` (the bridge
status controller and metrics) were never notified, so cancelled bridge
smart transactions stayed **stuck pending indefinitely**. The core fix
([MetaMask/core#9400](MetaMask/core#9400)) adds
a `failTransaction` action that fails the tx through the standard path
and emits those events; this PR wires mobile's STX messenger to use it.

**Note on versions:** `smart-transactions-controller` is pinned to
`25.0.0` (and the `transaction-controller` resolution to `68.4.0`) to
keep `transaction-controller` within `68.x`. `stx@25.0.1` requires
`transaction-controller@^69.0.0`, a larger major bump out of scope for
this fix.

## **Changelog**

CHANGELOG entry: Fixed bridge smart transactions that could remain stuck
as pending after being cancelled by the relay

## **Related issues**

Refs:
- [MetaMask/core#9400](MetaMask/core#9400) —
fail cancelled smart transactions through the standard path
- [MetaMask/core#9401](MetaMask/core#9401) —
ignore saved gas fees for internal transactions
- Released in
[MetaMask/core#9421](MetaMask/core#9421)

## **Manual testing steps**

1. Build the branch and set up a wallet with a bridge route on a
supported chain.
2. Initiate a bridge that is submitted as a smart transaction.
3. Observe a relay-side cancellation of the smart transaction.
4. Confirm the transaction transitions to **failed** in the activity
list (instead of remaining pending) and the bridge status updates
accordingly.

## **Screenshots/Recordings**

N/A — dependency bump + messenger wiring (no UI changes).

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

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Touches transaction lifecycle integration for smart transactions;
incorrect wiring could affect how cancelled STX are surfaced, but scope
is limited to messenger delegation and a controlled dependency bump.
> 
> **Overview**
> **Integrates the core fix for bridge smart transactions that stayed
pending after relay cancellation.**
> 
> Bumps `@metamask/smart-transactions-controller` from `^24.2.2` to
`25.0.0` and updates the Smart Transactions controller messenger (and
related test harnesses) to delegate
**`TransactionController:failTransaction`** instead of
**`TransactionController:updateTransaction`**. The upgraded STX
controller uses the fail path when a relay cancels a smart transaction
so **`transactionFailed` / `transactionStatusUpdated`** fire and bridge
status and activity UI can leave the pending state.
> 
> No app-layer transaction logic changes beyond messenger wiring and
dependency lock updates.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
02840f1. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
pull Bot pushed a commit to Reality2byte/metamask-extension that referenced this pull request Jul 21, 2026
…ask#44372)

## **Description**

Integrates the published core fix for stuck bridge smart transactions
into the extension.

Changes:
- Bump `@metamask/smart-transactions-controller` `^24.2.2` → `25.0.0`
- Bump `@metamask/transaction-controller` `^68.2.2` → `^68.3.0`
(resolves to `68.4.0`)
- Update the smart transactions controller messenger to delegate
`TransactionController:failTransaction` instead of
`TransactionController:updateTransaction`

**Why:** When the relay cancelled a smart transaction, the STX
controller previously called `updateTransaction`, which only patches
state and does not emit transaction lifecycle events. Consumers that
react to `transactionFailed`/`transactionStatusUpdated` (the bridge
status controller and metrics) were never notified, so cancelled bridge
smart transactions stayed **stuck pending indefinitely**. The core fix
([MetaMask/core#9400](MetaMask/core#9400)) adds
a `failTransaction` action that fails the tx through the standard path
and emits those events; this PR wires the extension's STX messenger to
use it.

**Note on versions:** `smart-transactions-controller` is pinned to
`25.0.0` (not a caret range) to keep `transaction-controller` within
`68.x`. `stx@25.0.1` requires `transaction-controller@^69.0.0`, a larger
major bump out of scope for this fix.

## **Changelog**

CHANGELOG entry: Fixed bridge smart transactions that could remain stuck
as pending after being cancelled by the relay

## **Related issues**

Integrates the published core fix:
- [MetaMask/core#9400](MetaMask/core#9400) —
fail cancelled smart transactions through the standard path
- [MetaMask/core#9401](MetaMask/core#9401) —
ignore saved gas fees for internal transactions
- Released in
[MetaMask/core#9421](MetaMask/core#9421)

## **Manual testing steps**

1. Build the branch and set up a wallet with a bridge route on a
supported chain.
2. Initiate a bridge that is submitted as a smart transaction.
3. Observe a relay-side cancellation of the smart transaction.
4. Confirm the transaction transitions to **failed** in the activity
list (instead of remaining pending) and the bridge status updates
accordingly.

## **Screenshots/Recordings**

N/A — dependency bump + messenger wiring (no UI changes).

### **Before**

Cancelled bridge smart transactions stayed pending indefinitely.

### **After**

Cancelled bridge smart transactions transition to failed and notify the
bridge status controller / metrics.

## **Pre-merge author checklist**

- [x] 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).
- [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-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**
> Touches smart-transaction and transaction lifecycle integration;
behavior change when relays cancel STXs, but scoped to messenger
delegation and a targeted dependency bump.
> 
> **Overview**
> Integrates the core fix for **bridge smart transactions stuck
pending** after relay cancellation by bumping
`@metamask/smart-transactions-controller` to **25.0.0** (pinned) and
aligning the lockfile.
> 
> The extension wires the smart transactions controller messenger to
delegate **`TransactionController:failTransaction`** instead of
**`TransactionController:updateTransaction`**, in both production init
and unit test setup, so cancelled STXs go through the standard failure
path and emit **`transactionFailed`** / **`transactionStatusUpdated`**
for bridge status and metrics.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
3985dc9. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
seaona pushed a commit to MetaMask/metamask-extension that referenced this pull request Jul 22, 2026
## **Description**

Integrates the published core fix for stuck bridge smart transactions
into the extension.

Changes:
- Bump `@metamask/smart-transactions-controller` `^24.2.2` → `25.0.0`
- Bump `@metamask/transaction-controller` `^68.2.2` → `^68.3.0`
(resolves to `68.4.0`)
- Update the smart transactions controller messenger to delegate
`TransactionController:failTransaction` instead of
`TransactionController:updateTransaction`

**Why:** When the relay cancelled a smart transaction, the STX
controller previously called `updateTransaction`, which only patches
state and does not emit transaction lifecycle events. Consumers that
react to `transactionFailed`/`transactionStatusUpdated` (the bridge
status controller and metrics) were never notified, so cancelled bridge
smart transactions stayed **stuck pending indefinitely**. The core fix
([MetaMask/core#9400](MetaMask/core#9400)) adds
a `failTransaction` action that fails the tx through the standard path
and emits those events; this PR wires the extension's STX messenger to
use it.

**Note on versions:** `smart-transactions-controller` is pinned to
`25.0.0` (not a caret range) to keep `transaction-controller` within
`68.x`. `stx@25.0.1` requires `transaction-controller@^69.0.0`, a larger
major bump out of scope for this fix.

## **Changelog**

CHANGELOG entry: Fixed bridge smart transactions that could remain stuck
as pending after being cancelled by the relay

## **Related issues**

Integrates the published core fix:
- [MetaMask/core#9400](MetaMask/core#9400) —
fail cancelled smart transactions through the standard path
- [MetaMask/core#9401](MetaMask/core#9401) —
ignore saved gas fees for internal transactions
- Released in
[MetaMask/core#9421](MetaMask/core#9421)

## **Manual testing steps**

1. Build the branch and set up a wallet with a bridge route on a
supported chain.
2. Initiate a bridge that is submitted as a smart transaction.
3. Observe a relay-side cancellation of the smart transaction.
4. Confirm the transaction transitions to **failed** in the activity
list (instead of remaining pending) and the bridge status updates
accordingly.

## **Screenshots/Recordings**

N/A — dependency bump + messenger wiring (no UI changes).

### **Before**

Cancelled bridge smart transactions stayed pending indefinitely.

### **After**

Cancelled bridge smart transactions transition to failed and notify the
bridge status controller / metrics.

## **Pre-merge author checklist**

- [x] 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).
- [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-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**
> Touches smart-transaction and transaction lifecycle integration;
behavior change when relays cancel STXs, but scoped to messenger
delegation and a targeted dependency bump.
> 
> **Overview**
> Integrates the core fix for **bridge smart transactions stuck
pending** after relay cancellation by bumping
`@metamask/smart-transactions-controller` to **25.0.0** (pinned) and
aligning the lockfile.
> 
> The extension wires the smart transactions controller messenger to
delegate **`TransactionController:failTransaction`** instead of
**`TransactionController:updateTransaction`**, in both production init
and unit test setup, so cancelled STXs go through the standard failure
path and emit **`transactionFailed`** / **`transactionStatusUpdated`**
for bridge status and metrics.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
3985dc9. 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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants