Skip to content

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

Merged
Mrtenz merged 4 commits into
mainfrom
mrtenz/es2022
Sep 9, 2026
Merged

chore!: bump TypeScript target and lib to ES2022#10019
Mrtenz merged 4 commits into
mainfrom
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
Breaking build output across all packages may break downstream apps on older JS engines or misconfigured bundlers; no runtime behavior changes in controller logic.

Overview
This PR raises the monorepo’s shared TypeScript target and lib from ES2020 to ES2022 in tsconfig.base.json (and ES2022 for scripts in tsconfig.scripts.json), so published packages compile to newer JavaScript and type-check against ES2022 builtins.

foundryup drops its package-level lib: ["ES2021", "DOM"] overrides so it follows the shared base config like the rest of the repo.

Every affected package’s CHANGELOG.md documents a BREAKING change: consumers need a runtime or bundler that can handle ES2022 output. Several jest.config.cjs files lower global coverage thresholds slightly—mechanical follow-up from the compile target change, not new product logic.

Reviewed by Cursor Bugbot for commit 84b746b. 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 force-pushed the mrtenz/typescript-7 branch 3 times, most recently from 2b73d77 to 97ee0d1 Compare September 2, 2026 14:07
@Mrtenz
Mrtenz force-pushed the mrtenz/typescript-7 branch from 97ee0d1 to 5572019 Compare September 2, 2026 18:08
@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 force-pushed the mrtenz/typescript-7 branch from 5572019 to f3a4585 Compare September 2, 2026 18:30
@Mrtenz
Mrtenz requested review from a team as code owners September 2, 2026 18:30

@baptiste-marchand baptiste-marchand left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM for engagement files

ccharly
ccharly previously approved these changes Sep 4, 2026

@ccharly ccharly left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM for accounts, I still noticed the updated coverage threshold updates, but I guess that's just a side-effects of changing our target (nvm, found some explanations here: #10019 (comment), thanks 😄)

chaitanyapotti
chaitanyapotti previously approved these changes Sep 7, 2026
OGPoyraz
OGPoyraz previously approved these changes Sep 7, 2026
@Mrtenz
Mrtenz force-pushed the mrtenz/typescript-7 branch from 1865677 to 01e4234 Compare September 9, 2026 16:17
@Mrtenz
Mrtenz requested a review from a team as a code owner September 9, 2026 16:17
@Mrtenz
Mrtenz force-pushed the mrtenz/typescript-7 branch from 01e4234 to 8fbd269 Compare September 9, 2026 16:36
@Mrtenz
Mrtenz force-pushed the mrtenz/es2022 branch 2 times, most recently from 761a5e1 to 47ee7b6 Compare September 9, 2026 16:52
@Mrtenz
Mrtenz force-pushed the mrtenz/typescript-7 branch from 8fbd269 to 052a2f9 Compare September 9, 2026 16:52
mcmire
mcmire previously approved these changes Sep 9, 2026

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

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.

@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.