From bccc6c076459224b703361b4826f27bde3616655 Mon Sep 17 00:00:00 2001 From: Nicholas Gambino Date: Thu, 2 Apr 2026 12:21:32 -1000 Subject: [PATCH 1/5] fix: Remove dynamic imports, move myx to optional dependencies --- packages/perps-controller/CHANGELOG.md | 6 ++++++ packages/perps-controller/package.json | 4 +++- packages/perps-controller/src/PerpsController.ts | 2 +- packages/perps-controller/src/index.ts | 10 ---------- packages/perps-controller/src/utils/index.ts | 1 - 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/perps-controller/CHANGELOG.md b/packages/perps-controller/CHANGELOG.md index fe8931234c7..539d81eb623 100644 --- a/packages/perps-controller/CHANGELOG.md +++ b/packages/perps-controller/CHANGELOG.md @@ -75,6 +75,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Bump `@metamask/controller-utils` from `^11.19.0` to `^11.20.0` ([#8344](https://github.com/MetaMask/core/pull/8344)) - Bump `@metamask/messenger` from `^1.0.0` to `^1.1.0` ([#8364](https://github.com/MetaMask/core/pull/8364)) +### Removed + +- **BREAKING:** Remove `adaptMarketFromMYX`, `adaptPriceFromMYX`, `adaptMarketDataFromMYX`, `filterMYXExclusiveMarkets`, `isOverlappingMarket`, `buildPoolSymbolMap`, `buildSymbolPoolsMap`, and `extractSymbolFromPoolId` from the public package exports to prevent `@myx-trade/sdk` from being included in the static webpack bundle + - These functions are still used internally by `MYXProvider`, which is loaded via dynamic import + - Consumers that imported these utilities directly should instead import from `@metamask/perps-controller/src/utils/myxAdapter` or duplicate the logic locally + ### Fixed - Fix incorrect fee estimate when flipping a position ([#8333](https://github.com/MetaMask/core/pull/8333)) diff --git a/packages/perps-controller/package.json b/packages/perps-controller/package.json index a3453c5355d..bbe22eb9d8f 100644 --- a/packages/perps-controller/package.json +++ b/packages/perps-controller/package.json @@ -56,12 +56,14 @@ "@metamask/controller-utils": "^11.20.0", "@metamask/messenger": "^1.1.0", "@metamask/utils": "^11.9.0", - "@myx-trade/sdk": "^0.1.265", "@nktkas/hyperliquid": "^0.30.2", "bignumber.js": "^9.1.2", "reselect": "^5.1.1", "uuid": "^8.3.2" }, + "optionalDependencies": { + "@myx-trade/sdk": "^0.1.265" + }, "devDependencies": { "@metamask/account-tree-controller": "^7.0.0", "@metamask/auto-changelog": "^3.4.4", diff --git a/packages/perps-controller/src/PerpsController.ts b/packages/perps-controller/src/PerpsController.ts index 1d8cfeab7bc..5f1552e30fc 100644 --- a/packages/perps-controller/src/PerpsController.ts +++ b/packages/perps-controller/src/PerpsController.ts @@ -1694,7 +1694,7 @@ export class PerpsController extends BaseController< // IMPORTANT: Must use import() — NOT require() — for core/extension tree-shaking. // require() is synchronous and bundlers include it in the main bundle. // import() enables true code splitting so MYX is excluded when not enabled. - this.#myxRegistrationPromise = import('./providers/MYXProvider') + this.#myxRegistrationPromise = import(/* webpackIgnore: true */ './providers/MYXProvider') .then(({ MYXProvider }) => { this.registerMYXProvider(MYXProvider); return undefined; diff --git a/packages/perps-controller/src/index.ts b/packages/perps-controller/src/index.ts index 5723180f113..4f1c2ce8c75 100644 --- a/packages/perps-controller/src/index.ts +++ b/packages/perps-controller/src/index.ts @@ -463,16 +463,6 @@ export { formatChange, } from './utils'; export type { HyperLiquidMarketData } from './utils'; -export { - adaptMarketFromMYX, - adaptPriceFromMYX, - adaptMarketDataFromMYX, - filterMYXExclusiveMarkets, - isOverlappingMarket, - buildPoolSymbolMap, - buildSymbolPoolsMap, - extractSymbolFromPoolId, -} from './utils'; export { MAX_MARKET_PATTERN_LENGTH, escapeRegex, diff --git a/packages/perps-controller/src/utils/index.ts b/packages/perps-controller/src/utils/index.ts index 4e8b98e9053..46742615a7c 100644 --- a/packages/perps-controller/src/utils/index.ts +++ b/packages/perps-controller/src/utils/index.ts @@ -24,7 +24,6 @@ export * from './hyperLiquidOrderBookProcessor'; export * from './hyperLiquidValidation'; export * from './idUtils'; export * from './marketDataTransform'; -export * from './myxAdapter'; export * from './marketUtils'; export * from './orderCalculations'; export * from './rewardsUtils'; From 5783194c411598c789b418e12df0e92f8277939e Mon Sep 17 00:00:00 2001 From: Nicholas Gambino Date: Thu, 2 Apr 2026 12:29:56 -1000 Subject: [PATCH 2/5] chore: update yarn.lock --- yarn.lock | 3 +++ 1 file changed, 3 insertions(+) diff --git a/yarn.lock b/yarn.lock index d156862a4b7..e0a57e96c28 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4791,6 +4791,9 @@ __metadata: typedoc-plugin-missing-exports: "npm:^2.0.0" typescript: "npm:~5.3.3" uuid: "npm:^8.3.2" + dependenciesMeta: + "@myx-trade/sdk": + optional: true languageName: unknown linkType: soft From 41d6d71c3f27cb42d29065a4ccf79b53dd94b683 Mon Sep 17 00:00:00 2001 From: Nicholas Gambino Date: Thu, 2 Apr 2026 12:34:42 -1000 Subject: [PATCH 3/5] chore: lint --- packages/perps-controller/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/perps-controller/package.json b/packages/perps-controller/package.json index bbe22eb9d8f..92299dcf5a4 100644 --- a/packages/perps-controller/package.json +++ b/packages/perps-controller/package.json @@ -61,9 +61,6 @@ "reselect": "^5.1.1", "uuid": "^8.3.2" }, - "optionalDependencies": { - "@myx-trade/sdk": "^0.1.265" - }, "devDependencies": { "@metamask/account-tree-controller": "^7.0.0", "@metamask/auto-changelog": "^3.4.4", @@ -85,6 +82,9 @@ "typedoc-plugin-missing-exports": "^2.0.0", "typescript": "~5.3.3" }, + "optionalDependencies": { + "@myx-trade/sdk": "^0.1.265" + }, "engines": { "node": "^18.18 || >=20" }, From f6f25fa44ab26e5b069271d3523d8806510071e6 Mon Sep 17 00:00:00 2001 From: Nicholas Gambino Date: Thu, 2 Apr 2026 12:47:50 -1000 Subject: [PATCH 4/5] fix: lint --- packages/perps-controller/src/PerpsController.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/perps-controller/src/PerpsController.ts b/packages/perps-controller/src/PerpsController.ts index 5f1552e30fc..7973402e008 100644 --- a/packages/perps-controller/src/PerpsController.ts +++ b/packages/perps-controller/src/PerpsController.ts @@ -1694,7 +1694,9 @@ export class PerpsController extends BaseController< // IMPORTANT: Must use import() — NOT require() — for core/extension tree-shaking. // require() is synchronous and bundlers include it in the main bundle. // import() enables true code splitting so MYX is excluded when not enabled. - this.#myxRegistrationPromise = import(/* webpackIgnore: true */ './providers/MYXProvider') + this.#myxRegistrationPromise = import( + /* webpackIgnore: true */ './providers/MYXProvider' + ) .then(({ MYXProvider }) => { this.registerMYXProvider(MYXProvider); return undefined; From 3fd55600353c2c0d8ef697b365a163da3f5c8fa1 Mon Sep 17 00:00:00 2001 From: Nicholas Gambino Date: Thu, 2 Apr 2026 13:58:15 -1000 Subject: [PATCH 5/5] chore: update changelog --- packages/perps-controller/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/perps-controller/CHANGELOG.md b/packages/perps-controller/CHANGELOG.md index 539d81eb623..b35422ffb6b 100644 --- a/packages/perps-controller/CHANGELOG.md +++ b/packages/perps-controller/CHANGELOG.md @@ -77,7 +77,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed -- **BREAKING:** Remove `adaptMarketFromMYX`, `adaptPriceFromMYX`, `adaptMarketDataFromMYX`, `filterMYXExclusiveMarkets`, `isOverlappingMarket`, `buildPoolSymbolMap`, `buildSymbolPoolsMap`, and `extractSymbolFromPoolId` from the public package exports to prevent `@myx-trade/sdk` from being included in the static webpack bundle +- **BREAKING:** Remove `adaptMarketFromMYX`, `adaptPriceFromMYX`, `adaptMarketDataFromMYX`, `filterMYXExclusiveMarkets`, `isOverlappingMarket`, `buildPoolSymbolMap`, `buildSymbolPoolsMap`, and `extractSymbolFromPoolId` from the public package exports to prevent `@myx-trade/sdk` from being included in the static webpack bundle ([#8374](https://github.com/MetaMask/core/pull/8374)) - These functions are still used internally by `MYXProvider`, which is loaded via dynamic import - Consumers that imported these utilities directly should instead import from `@metamask/perps-controller/src/utils/myxAdapter` or duplicate the logic locally