Skip to content

chore!: bump TypeScript target and lib to ES2022 - #10019

Open
Mrtenz wants to merge 4 commits into
mrtenz/typescript-7from
mrtenz/es2022
Open

chore!: bump TypeScript target and lib to ES2022#10019
Mrtenz wants to merge 4 commits into
mrtenz/typescript-7from
mrtenz/es2022

Conversation

@Mrtenz

@Mrtenz Mrtenz commented Aug 31, 2026

Copy link
Copy Markdown
Member

Explanation

The base TypeScript configuration targeted ES2020, which is older than what the browser targets and React Native version used by the clients that consume these packages actually support. Since those clients support ES2022, we can bump the shared target and lib settings to ES2022 to take advantage of newer syntax and APIs.

We stop short of ES2023, since Hermes (the React Native JS engine) doesn't fully support it yet (most notably, Array.prototype.toSorted is unsupported).

References

N/A


Note

Medium Risk
Monorepo-wide breaking compile target affects all package consumers on older JS engines or misconfigured bundlers; behavior change is limited to emitted syntax/API surface, not application logic.

Overview
Raises the shared TypeScript target and lib from ES2020 to ES2022 in tsconfig.base.json (and tsconfig.scripts.json for repo scripts), so published @metamask/* packages emit and type-check against ES2022.

foundryup drops its local ES2021 lib override so it follows the repo base config. Every affected package CHANGELOG documents this as a breaking consumer change: builds now ship ES2022 output and need a compatible runtime or bundler.

Several Jest coverageThreshold values are nudged down slightly (no functional test changes in the diff).

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

@Mrtenz Mrtenz changed the title chore: bump TypeScript target and lib to ES2022 chore!: bump TypeScript target and lib to ES2022 Aug 31, 2026
@Mrtenz

Mrtenz commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

@metamaskbot publish-previews

@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/account-tree-controller@8.0.0-preview-3866c0ff1
@metamask-previews/accounts-controller@39.1.1-preview-3866c0ff1
@metamask-previews/address-book-controller@7.1.2-preview-3866c0ff1
@metamask-previews/ai-controllers@0.8.0-preview-3866c0ff1
@metamask-previews/analytics-controller@2.0.0-preview-3866c0ff1
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-3866c0ff1
@metamask-previews/announcement-controller@8.1.0-preview-3866c0ff1
@metamask-previews/app-metadata-controller@2.0.1-preview-3866c0ff1
@metamask-previews/approval-controller@9.0.2-preview-3866c0ff1
@metamask-previews/assets-controller@14.0.2-preview-3866c0ff1
@metamask-previews/assets-controllers@111.1.3-preview-3866c0ff1
@metamask-previews/authenticated-user-storage@3.0.2-preview-3866c0ff1
@metamask-previews/base-controller@9.1.0-preview-3866c0ff1
@metamask-previews/base-data-service@1.0.0-preview-3866c0ff1
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-3866c0ff1
@metamask-previews/bridge-controller@80.1.0-preview-3866c0ff1
@metamask-previews/bridge-status-controller@75.4.0-preview-3866c0ff1
@metamask-previews/build-utils@3.0.4-preview-3866c0ff1
@metamask-previews/chain-agnostic-permission@1.7.0-preview-3866c0ff1
@metamask-previews/chomp-api-service@4.0.1-preview-3866c0ff1
@metamask-previews/claims-controller@0.6.1-preview-3866c0ff1
@metamask-previews/client-controller@1.0.1-preview-3866c0ff1
@metamask-previews/client-utils@2.1.1-preview-3866c0ff1
@metamask-previews/compliance-controller@2.1.0-preview-3866c0ff1
@metamask-previews/composable-controller@12.0.1-preview-3866c0ff1
@metamask-previews/config-registry-controller@3.1.0-preview-3866c0ff1
@metamask-previews/connectivity-controller@0.3.0-preview-3866c0ff1
@metamask-previews/controller-utils@12.3.0-preview-3866c0ff1
@metamask-previews/core-backend@9.0.0-preview-3866c0ff1
@metamask-previews/delegation-controller@3.0.2-preview-3866c0ff1
@metamask-previews/earn-controller@12.2.6-preview-3866c0ff1
@metamask-previews/eip-5792-middleware@3.0.5-preview-3866c0ff1
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-3866c0ff1
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-3866c0ff1
@metamask-previews/eth-block-tracker@15.0.1-preview-3866c0ff1
@metamask-previews/eth-json-rpc-middleware@24.0.1-preview-3866c0ff1
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-3866c0ff1
@metamask-previews/foundryup@1.0.1-preview-3866c0ff1
@metamask-previews/gas-fee-controller@26.3.2-preview-3866c0ff1
@metamask-previews/gator-permissions-controller@5.0.2-preview-3866c0ff1
@metamask-previews/geolocation-controller@1.0.0-preview-3866c0ff1
@metamask-previews/java-tron-up@1.0.0-preview-3866c0ff1
@metamask-previews/json-rpc-engine@10.5.0-preview-3866c0ff1
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-3866c0ff1
@metamask-previews/keyring-controller@27.1.1-preview-3866c0ff1
@metamask-previews/kyc-controller@0.0.0-preview-3866c0ff1
@metamask-previews/local-node-utils@1.0.0-preview-3866c0ff1
@metamask-previews/logging-controller@9.0.0-preview-3866c0ff1
@metamask-previews/message-manager@14.1.2-preview-3866c0ff1
@metamask-previews/messenger@2.0.0-preview-3866c0ff1
@metamask-previews/messenger-cli@0.2.0-preview-3866c0ff1
@metamask-previews/money-account-api-data-service@0.4.1-preview-3866c0ff1
@metamask-previews/money-account-balance-service@2.4.3-preview-3866c0ff1
@metamask-previews/money-account-controller@1.0.0-preview-3866c0ff1
@metamask-previews/money-account-upgrade-controller@3.0.2-preview-3866c0ff1
@metamask-previews/money-account-utils@1.1.0-preview-3866c0ff1
@metamask-previews/multichain-account-service@13.0.2-preview-3866c0ff1
@metamask-previews/multichain-api-middleware@4.0.3-preview-3866c0ff1
@metamask-previews/multichain-network-controller@3.2.4-preview-3866c0ff1
@metamask-previews/multichain-transactions-controller@7.1.2-preview-3866c0ff1
@metamask-previews/name-controller@9.1.2-preview-3866c0ff1
@metamask-previews/network-connection-banner-controller@0.2.1-preview-3866c0ff1
@metamask-previews/network-controller@36.0.0-preview-3866c0ff1
@metamask-previews/network-enablement-controller@6.0.5-preview-3866c0ff1
@metamask-previews/notification-services-controller@26.0.1-preview-3866c0ff1
@metamask-previews/passkey-controller@3.1.0-preview-3866c0ff1
@metamask-previews/permission-controller@13.1.1-preview-3866c0ff1
@metamask-previews/permission-log-controller@5.1.0-preview-3866c0ff1
@metamask-previews/perps-controller@15.0.0-preview-3866c0ff1
@metamask-previews/phishing-controller@17.4.0-preview-3866c0ff1
@metamask-previews/platform-api-docs@0.0.0-preview-3866c0ff1
@metamask-previews/polling-controller@16.0.9-preview-3866c0ff1
@metamask-previews/preferences-controller@23.1.0-preview-3866c0ff1
@metamask-previews/profile-metrics-controller@4.0.3-preview-3866c0ff1
@metamask-previews/profile-sync-controller@29.0.0-preview-3866c0ff1
@metamask-previews/ramps-controller@20.2.0-preview-3866c0ff1
@metamask-previews/rate-limit-controller@7.0.1-preview-3866c0ff1
@metamask-previews/react-data-query@1.0.0-preview-3866c0ff1
@metamask-previews/remote-feature-flag-controller@6.1.0-preview-3866c0ff1
@metamask-previews/sample-controllers@5.0.6-preview-3866c0ff1
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-3866c0ff1
@metamask-previews/selected-network-controller@26.1.7-preview-3866c0ff1
@metamask-previews/sentinel-api-service@1.0.1-preview-3866c0ff1
@metamask-previews/shield-controller@6.0.1-preview-3866c0ff1
@metamask-previews/signature-controller@39.2.10-preview-3866c0ff1
@metamask-previews/smart-transactions-controller@25.1.1-preview-3866c0ff1
@metamask-previews/snap-account-service@2.1.2-preview-3866c0ff1
@metamask-previews/social-controllers@2.8.0-preview-3866c0ff1
@metamask-previews/solana-test-validator-up@1.0.0-preview-3866c0ff1
@metamask-previews/stellar-quickstart-up@0.0.0-preview-3866c0ff1
@metamask-previews/storage-service@1.0.2-preview-3866c0ff1
@metamask-previews/subscription-controller@8.0.1-preview-3866c0ff1
@metamask-previews/transaction-controller@69.6.1-preview-3866c0ff1
@metamask-previews/transaction-pay-controller@27.0.0-preview-3866c0ff1
@metamask-previews/user-operation-controller@41.2.9-preview-3866c0ff1
@metamask-previews/wallet@12.0.2-preview-3866c0ff1
@metamask-previews/wallet-cli@0.0.0-preview-3866c0ff1

@socket-security

socket-security Bot commented Sep 2, 2026

Copy link
Copy Markdown

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

👍 No dependency changes detected in pull request

@Mrtenz
Mrtenz marked this pull request as ready for review September 2, 2026 18:15
@Mrtenz
Mrtenz requested review from a team as code owners September 2, 2026 18:15
@Mrtenz
Mrtenz requested review from a team as code owners September 2, 2026 18:30
The browser targets and React Native version used by the clients
that consume these packages support ES2022, so the target and lib
settings can be updated to match that. We stop short of ES2023, since Hermes
doesn't fully support it yet.

This also lets `foundryup` drop its own `lib`
override, since the base config now provides `ES2022` and `DOM` already.
Bumping the TypeScript target and lib to ES2022 changed the compiled
output slightly, causing coverage to dip by a fraction of a percent
in a handful of packages. Lower the affected `coverageThreshold`
values in each package's `jest.config.cjs` to match.
Comment thread packages/assets-controller/jest.config.cjs

@mcmire mcmire left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM.

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.

6 participants