Skip to content

Revert approval-time sponsorship/signing hooks (#10109) - #10420

Merged
pedronfigueiredo merged 1 commit into
mainfrom
pnf/revert-10109
Sep 24, 2026
Merged

pedronfigueiredo merged 1 commit into
mainfrom
pnf/revert-10109

Conversation

@pedronfigueiredo

@pedronfigueiredo pedronfigueiredo commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Revert #10109 using git revert (merge commit 3cc3f5e74cefa3da0287d2f377c4fbc802f822a8). This restores the previous transaction approval, sponsorship, nonce, signing, and publication behavior and removes the approval-time isSponsored / shouldSign hooks and isGasFeeSponsoredAvailable field.

The only revert conflict was in the transaction-controller changelog. The 71.0.0 entry was retained as historical documentation for the already-published release; no unrelated changelog changes were made.

Validation

  • yarn workspace @metamask/transaction-controller run test
  • yarn build
  • yarn workspace @metamask/transaction-controller run changelog:validate
  • Focused ESLint and Prettier checks on changed TypeScript files
  • git diff --cached --check before committing

Coordination / risk

This reverses a published public API and transaction lifecycle behavior. Confirm whether Extension (#46060) and Mobile (#35754) depend on the hooks, and coordinate any necessary client changes before merging.


Note

High Risk
Reverts a published transaction lifecycle and public hook API; clients using isSponsored/shouldSign or isGasFeeSponsoredAvailable must change before merge.

Overview
Reverts approval-time isSponsored / shouldSign hooks and the isGasFeeSponsoredAvailable field, restoring the prior sponsorship and signing model driven by transaction metadata and simulation.

On approval, the controller again always reserves a nonce and runs the sign path (unless isExternalSign), with beforeSign folded into #signTransaction instead of running before hook-based policy. Sponsored / externally signed flows use isGasFeeSponsored and isExternalSign set from add-transaction options or from getGasFeeTokens (isGasFeeSponsored from simulation sponsorship), which skips local signing and can clear the nonce via getNextNonce and checkGasFeeTokenBeforePublish.

Gas fee token plumbing renames sponsorship availability to isGasFeeSponsored, drops approval-time gas-fee refresh in #prepareTransactionBeforeApproval, and restores publishing that may broadcast even when rawTx is empty. hooks is required on controller options (no optional hook defaults for sponsorship/signing). Tests drop hook lifecycle coverage and add assertions for the restored metadata behavior.

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

@pedronfigueiredo

Copy link
Copy Markdown
Contributor Author

The original PR needs more work, to address transaction pay controller impacts of deprecating isGasFeeSponsored. This will be addressed later in a separate PR which shall be tested on both clients before merging using preview builds.

@pedronfigueiredo
pedronfigueiredo marked this pull request as ready for review September 24, 2026 09:46
@pedronfigueiredo
pedronfigueiredo requested a review from a team as a code owner September 24, 2026 09:46
@pedronfigueiredo
pedronfigueiredo added this pull request to the merge queue Sep 24, 2026
Merged via the queue into main with commit a49725d Sep 24, 2026
120 of 121 checks passed
@pedronfigueiredo
pedronfigueiredo deleted the pnf/revert-10109 branch September 24, 2026 10:03
@pedronfigueiredo pedronfigueiredo mentioned this pull request Sep 24, 2026
2 of 3 tasks
pull Bot pushed a commit to Reality2byte/core that referenced this pull request Sep 24, 2026
## Explanation

Prepare monorepo release **1285.0.0** for
`@metamask/transaction-controller@72.0.0` and all **19 direct workspace
dependents**. `perps-controller` is now included for the consumer-facing
HIP-3 snapshot fix merged in MetaMask#10429, not merely for its development
dependencies; `earn-controller` also has an existing production
dependency bump. This branch incorporates current `main`, including
MetaMask#10429 and MetaMask#10419. No source-code changes are introduced by this PR
relative to current `main`.

### Versions in this release

| Package | Version | Rationale |
| --- | --- | --- |
| `transaction-controller` | **72.0.0** | Breaking revert of
approval-time sponsorship/signing hooks (MetaMask#10420) |
| `subscription-controller` | **10.0.0** | Existing Unreleased breaking
subscription type changes (MetaMask#10305, MetaMask#10416) |
| `wallet` | **15.0.0** | Its exported default instance/state types
expose the breaking subscription and transaction-controller changes |
| `transaction-pay-controller` | **29.2.0** | Additional supported
pay-strategy flows and server-quote behavior (MetaMask#10342) |
| `assets-controller` | 16.1.1 | Dependency updates and previously
merged fixes |
| `assets-controllers` | 112.0.3 | Dependency updates |
| `bridge-controller` | 81.3.1 | Dependency updates |
| `bridge-status-controller` | 76.3.1 | Dependency updates |
| `client-utils` | 3.0.3 | Dependency update |
| `earn-controller` | 13.0.1 | Existing production
`account-tree-controller` bump; transaction-controller is dev-only here
|
| `eip-5792-middleware` | 4.0.1 | Dependency updates |
| `gator-permissions-controller` | 6.0.1 | Dependency updates |
| `money-account-utils` | 2.0.1 | Dependency updates |
| `network-enablement-controller` | 7.0.1 | Dependency updates |
| `perps-controller` | **18.0.1** | Fix Terminal v3 HIP-3 snapshot
validation (MetaMask#10429); patch bump |
| `phishing-controller` | 18.1.1 | Dependency update |
| `profile-metrics-controller` | 5.1.1 | Dependency updates |
| `shield-controller` | 7.0.2 | Dependency updates |
| `smart-transactions-controller` | 27.0.2 | Dependency updates |
| `user-operation-controller` | 42.0.1 | Dependency updates |

Dependent packages have their Unreleased changelog entries moved to
their new release sections. Additional *non-released* transitive
dependents receive compatible workspace ranges
(`money-account-upgrade-controller`,
`network-connection-banner-controller`, `signature-controller`, and
unpublished `wallet-cli`); the three published packages receive
Unreleased dependency changelog entries. `yarn.lock` is synchronized.
Changes to `perps-controller`'s development dependencies are
intentionally omitted from its changelog.

**Coordination before merge:** The transaction-controller hook revert
and the subscription-controller's existing breaking type changes affect
consumers. Confirm Extension and Mobile migrations before publishing
these three major versions. This is a release candidate, not a published
release.

## References

- Breaking revert: MetaMask#10420; original published API: MetaMask#10109.
- EIP-7702 performance change: MetaMask#10397.
- Perps HIP-3 snapshot fix: MetaMask#10429.
- Subscription breaking changes: MetaMask#10305, MetaMask#10416.
- Client adoption PRs to coordinate: [Extension
#46060](MetaMask/metamask-extension#46060),
[Mobile #35754](MetaMask/metamask-mobile#35754).
They adopt the removed hooks; they are **not** migrations for this
revert.

## Validation

- `yarn build`
- `yarn workspace @metamask/transaction-controller run test`
- `yarn workspace @metamask/subscription-controller run test`
- `yarn workspace @metamask/transaction-pay-controller run test`
- `yarn workspace @metamask/wallet run test`
- `yarn workspace @metamask/perps-controller run test` (after
incorporating MetaMask#10429)
- `yarn changelog:validate`, `yarn constraints`, `yarn install
--immutable`, `yarn dedupe --check`
- `yarn lint:dependencies` (after removing stale generated
bridge-controller `dist` output)
- `git diff --check`

## Checklist

- [x] Changelogs describe the breaking changes in
transaction-controller, subscription-controller, and wallet.
- [x] Direct workspace dependents are included, with perps now having a
consumer-facing fix (MetaMask#10429).
- [ ] Extension and Mobile consumers have been coordinated for these
breaking changes before merging this release.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **High Risk**
> Publishes breaking majors for transaction signing/sponsorship and
subscription types that require coordinated Extension/Mobile migrations
before consumers upgrade `@metamask/wallet` or
`@metamask/transaction-controller`.
> 
> **Overview**
> Prepares **monorepo release 1285.0.0** by bumping package versions,
moving Unreleased changelog notes into release sections, aligning
workspace dependency ranges, and refreshing `yarn.lock`. There are **no
application source edits** in this diff—only release metadata for work
already on `main`.
> 
> The release centers on **`@metamask/transaction-controller@72.0.0`**,
which **reverts** the approval-time `isSponsored` / `shouldSign` hooks
in favor of metadata-driven **`isGasFeeSponsored`** and
**`isExternalSign`**, drops related exports and
`isGasFeeSponsoredAvailable`, and again **requires** a `hooks` object
(use `hooks: {}` when empty).
**`@metamask/subscription-controller@10.0.0`** ships existing breaking
subscription/payment-token type changes (optional period fields,
vault-share detection via `isVaultShareToken`, crypto payment failure
types). **`@metamask/wallet@15.0.0`** bumps those majors plus related
dependents.
> 
> Nineteen direct workspace dependents get compatible semver bumps
(mostly patch dependency realignments to
`@metamask/transaction-controller@^72.0.0`). Notable published notes
include **`@metamask/perps-controller@18.0.1`** (HIP-3 Terminal snapshot
validation fix) and **`@metamask/transaction-pay-controller@29.2.0`**
(server pay-strategy quoting/submit fixes). Unpublished/transitive
packages (`wallet-cli`, `money-account-upgrade-controller`, etc.) get
range updates without always cutting new versions.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
6017d49. 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: Baptiste Marchand <75846779+baptiste-marchand@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
default-branch — 6b6ccd42 Deployed Sep 24, 2026 by pedronfigueiredo via Determine whether this PR is a release PR #4549
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