Mobile web browser providing access to websites that use the Ethereum blockchain
This report summarizes scanner evidence for MetaMask/metamask-mobile, a TypeScript project with 3,082 GitHub stars. SynthScan examined 3,477,854 lines of code across 16911 source files, recording 3759 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 1.8 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 2992 finding(s).
Are imports declared and package/API names verified? 395 finding(s).
Are wrappers, guards, and repeated structures necessary? 2738 finding(s).
Which changes need focused human review? 3759 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 3759 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | metro.transform.js | 66 | function getBuildTypeFeaturesFromEnv(environment = process.env) { | CODE |
| LOW | …/messengers/account-tree-controller-messenger/index.ts | 19 | export function getAccountTreeControllerMessenger( | CODE |
| LOW | …/messengers/account-tree-controller-messenger/index.ts | 82 | export function getAccountTreeControllerInitMessenger( | CODE |
| LOW | app/__mocks__/@metamask/compliance-controller.ts | 52 | export function getDefaultComplianceControllerState() { | CODE |
| LOW | app/__mocks__/@metamask/compliance-controller.ts | 59 | function findWalletComplianceStatus( | CODE |
| LOW | app/__mocks__/@metamask/compliance-controller.ts | 89 | export function selectAreAnyWalletsBlocked(addresses: string[]) { | CODE |
| LOW | app/core/NotificationManager.js | 42 | function getTransactionRecipientAddress(transactionMeta) { | CODE |
| LOW | app/core/NitroWebSocketSetup.ts | 323 | function isNitroWebSocketInstalled(ctor: unknown): boolean { | CODE |
| LOW | app/core/NitroWebSocketSetup.ts | 370 | export function installProductionNitroWebSocket(): void { | CODE |
| LOW | app/core/signOutCardAfterPasswordChange.ts | 8 | export async function signOutCardAfterPasswordChange(): Promise<void> { | CODE |
| LOW⚡ | app/core/notificationSkipPredicates.ts | 25 | export function registerNotificationSkipPredicate( | CODE |
| LOW⚡ | app/core/notificationSkipPredicates.ts | 34 | export function clearNotificationSkipPredicates(): void { | CODE |
| LOW⚡ | app/core/notificationSkipPredicates.ts | 38 | export function getNotificationSkipPredicates(): NotificationSkipPredicate[] { | CODE |
| LOW | app/core/SanitizationMiddleware.ts | 88 | export function createSanitizationMiddleware(): JsonRpcMiddleware< | CODE |
| LOW | app/core/NitroFetchSetup.ts | 114 | function normalizeBodyForNitroFetch( | CODE |
| LOW | app/core/NitroFetchSetup.ts | 127 | function installProductionNitroFetch(): void { | CODE |
| LOW | app/core/Ledger/Ledger.test.ts | 91 | function createRestrictedControllerMock( | CODE |
| LOW | app/core/Ledger/Ledger.ts | 51 | async function ensureLedgerKeyringExists(): Promise<void> { | CODE |
| LOW | app/core/Ledger/LedgerDmk.test.ts | 89 | function createRestrictedControllerMock( | CODE |
| LOW | app/core/OriginProvenance/index.ts | 25 | export function getRequestSourceForTransport( | CODE |
| LOW | app/core/RPCMethods/eth-request-accounts.js | 39 | async function requestEthereumAccountsHandler( | CODE |
| LOW | app/core/RPCMethods/RPCMethodMiddleware.test.ts | 252 | function getMinimalWalletConnectOptions() { | CODE |
| LOW | app/core/RPCMethods/RPCMethodMiddleware.test.ts | 2012 | async function sendExtraneousKeysRequest() { | CODE |
| LOW | app/core/RPCMethods/eth_sendTransaction.test.ts | 56 | function constructSendTransactionRequest( | CODE |
| LOW | app/core/RPCMethods/eth_sendTransaction.test.ts | 76 | function constructPendingJsonRpcResponse(): PendingJsonRpcResponse<Json> { | CODE |
| LOW | app/core/RPCMethods/OriginThrottlingMiddleware.ts | 19 | export function createOriginThrottlingMiddleware(): JsonRpcMiddleware< | CODE |
| LOW | app/core/RPCMethods/TrustSignalsMiddleware.test.ts | 76 | function createMockPhishingController(): PhishingController { | CODE |
| LOW | app/core/RPCMethods/TrustSignalsMiddleware.test.ts | 85 | function createMockNetworkController(options?: { | CODE |
| LOW | app/core/RPCMethods/TrustSignalsMiddleware.test.ts | 103 | function createMockPreferencesController( | CODE |
| LOW | app/core/RPCMethods/TrustSignalsMiddleware.test.ts | 111 | function createNetworkControllerWithoutChain(): NetworkController { | CODE |
| LOW | app/core/RPCMethods/getSessionCapabilities.ts | 49 | export function clearSessionCapabilitiesCache(): void { | CODE |
| LOW | app/core/RPCMethods/getSessionCapabilities.ts | 68 | async function computeAndCache( | CODE |
| LOW | app/core/RPCMethods/getSessionCapabilities.ts | 107 | export function buildGetCapabilitiesHooks(targetAddress?: Hex) { | CODE |
| LOW | app/core/RPCMethods/TrustSignalsMiddleware.ts | 147 | export function createTrustSignalsMiddleware({ | CODE |
| LOW | app/core/RPCMethods/spam.ts | 78 | export function processOriginThrottlingRejection({ | CODE |
| LOW | app/core/RPCMethods/lib/ethereum-chain-utils.js | 41 | export function validateAddEthereumChainParams(params) { | CODE |
| LOW | app/core/RPCMethods/lib/ethereum-chain-utils.js | 113 | function validateBlockExplorerUrls(blockExplorerUrls) { | CODE |
| LOW | …/RPCMethods/createUnsupportedMethodMiddleware/index.ts | 17 | async function unsupportedMethodMiddleware(req, _res, next, end) { | CODE |
| LOW | app/core/QrSync/qrSyncTelemetry.ts | 202 | export function buildQrSyncLoggerErrorOptions({ | CODE |
| LOW | app/core/QrSync/e2eBridgeQrSync.ts | 48 | function parseApplySyncReadyPayload( | CODE |
| LOW | app/core/QrSync/services/qr-sync-validation.ts | 108 | export function isQrSyncConnectionRequest( | CODE |
| LOW | app/core/QrSync/services/qr-sync-validation.ts | 158 | export function parseQrSyncConnectionRequest( | CODE |
| LOW | app/core/QrSync/services/qr-sync-validation.ts | 240 | export function validateQrSyncPayloadForOnboarding( | CODE |
| LOW | app/core/QrSync/services/qr-sync-validation.ts | 271 | export function isQrSyncReadyForSecretImport( | CODE |
| LOW | app/core/QrSync/services/qr-sync-validation.ts | 284 | export function parseQrSyncSyncReadyMessage( | CODE |
| LOW | app/core/QrSync/services/qr-sync-message-router.ts | 43 | export function routeIncomingQrSyncMessage( | CODE |
| LOW | app/core/Multichain/tron.ts | 31 | export async function validateTronTransferAmount( | CODE |
| LOW | app/core/Multichain/utils.ts | 46 | export function getFormattedAddressFromInternalAccount( | CODE |
| LOW | app/core/Multichain/utils.ts | 79 | export function lastSelectedAccountAddressByNonEvmNetworkChainId( | CODE |
| LOW | app/core/Multichain/utils.ts | 87 | export function lastSelectedAccountAddressInEvmNetwork(): string | undefined { | CODE |
| LOW | app/core/Multichain/networks.ts | 71 | export function formatBlockExplorerAddressUrl( | CODE |
| LOW | app/core/Multichain/networks.ts | 86 | export function formatBlockExplorerTokenUrl( | CODE |
| LOW | app/core/Multichain/networks.ts | 101 | export function formatBlockExplorerTransactionUrl( | CODE |
| LOW | app/core/Multichain/networks.ts | 114 | export function getMultichainBlockExplorer(selectedAccount: InternalAccount): | CODE |
| LOW | app/core/AgenticCli/cliLoginPushNudgeRouting.ts | 7 | export function shouldShowCliLoginPushNudge({ | CODE |
| LOW | app/core/AgenticCli/promptPushNotificationPermission.ts | 26 | export async function maybePromptPushPermissionAfterCliLogin(): Promise<void> { | CODE |
| LOW | app/core/AgenticCli/AgenticCliMwpConnectionService.ts | 50 | export function tryParseAgenticCliConnectionRequest( | CODE |
| LOW | app/core/AgenticCli/AgenticCliMwpConnectionService.ts | 91 | export async function handleAgenticCliConnectDeeplink( | CODE |
| LOW | app/core/BackgroundBridge/createDupeReqFilterStream.ts | 57 | export default function createDupeReqFilterStream() { | CODE |
| LOW | app/core/Permissions/index.ts | 144 | function getCaipAccountIdsFromSubject(subject: any): CaipAccountId[] { | CODE |
| 2306 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | builds.yml | 18 | # ============================================================================= | COMMENT |
| MEDIUM | builds.yml | 20 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | builds.yml | 252 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | builds.yml | 254 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | builds.yml | 259 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | builds.yml | 261 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | builds.yml | 526 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | builds.yml | 528 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 42 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 44 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 68 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 70 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 83 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 85 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 114 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 116 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 144 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 146 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 168 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 170 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 197 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 199 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 212 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 214 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 270 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 272 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 305 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 307 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 338 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/SDKConnectV2/types/connection-request.test.ts | 340 | // ────────────────────────────────────────── | COMMENT |
| MEDIUM | …e/Engine/controllers/rewards-money-controller/types.ts | 617 | // ─── Request DTOs ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …e/Engine/controllers/rewards-money-controller/types.ts | 765 | // ─── Controller state ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …oney-controller/services/rewards-money-data-service.ts | 164 | // ─── Action types ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/Engine/controllers/rewards-controller/types.ts | 1068 | // ─── Perps Trading Campaign ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/Engine/controllers/rewards-controller/types.ts | 1210 | // ─── End Perps Trading Campaign ──────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/Engine/controllers/rewards-controller/types.ts | 1318 | // ─── Predict The Pitch Campaign ─────────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/Engine/controllers/rewards-controller/types.ts | 1563 | // ─── End Predict The Pitch Campaign ─────────────────────────────────────── | COMMENT |
| MEDIUM | app/core/Engine/controllers/rewards-controller/types.ts | 1565 | // ─── Money Account Sweepstakes Campaign ─────────────────────────────────── | COMMENT |
| MEDIUM | app/core/Engine/controllers/rewards-controller/types.ts | 1770 | // ─── End Money Account Sweepstakes Campaign ─────────────────────────────── | COMMENT |
| MEDIUM | app/util/haptics/catalog.ts | 8 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/util/haptics/catalog.ts | 10 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/util/haptics/catalog.ts | 44 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/util/haptics/catalog.ts | 46 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | app/util/haptics/catalog.ts | 121 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | app/util/haptics/catalog.ts | 124 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | app/util/haptics/catalog.ts | 128 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | app/util/haptics/catalog.ts | 130 | // ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/UI/TokenDetails/components/useAssetVisibility.test.ts | 11 | // ─── Mocks ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/UI/TokenDetails/components/useAssetVisibility.test.ts | 48 | // ─── Helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/UI/TokenDetails/components/useAssetVisibility.test.ts | 142 | // ─── Tests ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/UI/TokenDetails/components/useAssetVisibility.test.ts | 150 | // ── assetId ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/UI/TokenDetails/components/useAssetVisibility.test.ts | 190 | // ── isCustomAsset ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/UI/TokenDetails/components/useAssetVisibility.test.ts | 224 | // ── isInAssetsBalance ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/UI/TokenDetails/components/useAssetVisibility.test.ts | 249 | // ── isHidden ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/UI/TokenDetails/components/useAssetVisibility.test.ts | 303 | // ── handleHideToken ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/UI/TokenDetails/components/useAssetVisibility.test.ts | 457 | // ── handleAddCustomAsset ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …eView/BridgeMarketView/BridgeMarketViewFooter.test.tsx | 121 | // ─── Helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …eView/BridgeMarketView/BridgeMarketViewFooter.test.tsx | 164 | // ─── Tests ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/components/UI/Rewards/utils/formatUtils.ts | 475 | // ── USD formatting ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | app/components/UI/Rewards/utils/formatUtils.ts | 628 | // ── Percent / rate formatting ─────────────────────────────────────────── | COMMENT |
| 312 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | app/core/BackgroundBridge/BackgroundBridge.test.js | 1706 | Engine.controllerMessenger.subscribe.mock.calls.find( | CODE |
| CRITICAL | app/core/redux/slices/bridge/index.test.ts | 964 | mockState.engine.backgroundState.RemoteFeatureFlagController.remoteFeatureFlags.bridgeConfigV2.chainRanking.filt | CODE |
| CRITICAL | …ps/integration/lighterScaleOrders.integration.test.tsx | 252 | perps.mocks.execute.mock.calls.every( | CODE |
| CRITICAL | …ps/integration/lighterScaleOrders.integration.test.tsx | 282 | perps.mocks.execute.mock.calls.every( | CODE |
| CRITICAL | …ps/integration/lighterScaleOrders.integration.test.tsx | 363 | const signedBefore = perps.mocks.execute.mock.calls.filter( | CODE |
| CRITICAL | …ps/integration/lighterScaleOrders.integration.test.tsx | 374 | perps.mocks.execute.mock.calls.filter( | CODE |
| CRITICAL | …ps/integration/lighterScaleOrders.integration.test.tsx | 416 | perps.mocks.execute.mock.calls.filter( | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 86 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 227 | perps.harness.mocks.infoClient.orderStatus.mockImplementation( | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 233 | perps.harness.mocks.exchangeClient.cancel.mock.calls.some( | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 263 | perps.harness.mocks.infoClient.l2Book.mockResolvedValue({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 302 | perps.harness.mocks.infoClient.l2Book.mockResolvedValue({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 328 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 360 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 414 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 525 | perps.harness.mocks.exchangeClient.order.mockRejectedValueOnce( | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 529 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce( | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 616 | perps.harness.mocks.exchangeClient.order.mockRejectedValueOnce( | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 620 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce( | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 770 | perps.harness.mocks.exchangeClient.order.mockRejectedValueOnce(error); | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 826 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 943 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 948 | perps.harness.mocks.exchangeClient.cancel.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1004 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1016 | perps.harness.mocks.exchangeClient.cancel.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1071 | perps.harness.mocks.exchangeClient.order.mockImplementationOnce( | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1077 | perps.harness.mocks.exchangeClient.cancel.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1213 | perps.harness.mocks.subscription.getCachedPositions.mockReturnValue([ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1255 | perps.harness.mocks.subscription.getCachedPositions.mockReturnValue([ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1258 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1287 | perps.harness.mocks.subscription.getCachedPositions.mockReturnValue([ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1290 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1338 | perps.harness.mocks.subscription.getCachedPositions.mockReturnValue([ | CODE |
| CRITICAL | …rps/integration/orderLifecycleFlow.integration.test.ts | 1342 | perps.harness.mocks.exchangeClient.order.mockResolvedValueOnce({ | CODE |
| CRITICAL | …integration/positionProtectionFlow.integration.test.ts | 85 | perps.harness.mocks.subscription.getCachedPositions.mockReturnValue([ | CODE |
| CRITICAL | …/Perps/integration/lighterRecovery.integration.test.ts | 27 | perps.mocks.execute.mock.calls.map(([call]) => call.function), | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 159 | result.current.PerpsToastOptions.accountManagement.withdrawal.withdrawalStartFailed( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 190 | result.current.PerpsToastOptions.accountManagement.deposit.success( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 214 | result.current.PerpsToastOptions.accountManagement.deposit.success( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 233 | result.current.PerpsToastOptions.accountManagement.deposit.success( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 248 | result.current.PerpsToastOptions.accountManagement.deposit.inProgress( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 270 | result.current.PerpsToastOptions.accountManagement.deposit.inProgress( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 293 | result.current.PerpsToastOptions.accountManagement.deposit.inProgress( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 310 | result.current.PerpsToastOptions.accountManagement.deposit.inProgress( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 355 | result.current.PerpsToastOptions.accountManagement.withdrawal.withdrawalSuccess( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 373 | result.current.PerpsToastOptions.accountManagement.withdrawal.withdrawalFailed( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 386 | result.current.PerpsToastOptions.accountManagement.withdrawal.withdrawalFailed(); | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 398 | result.current.PerpsToastOptions.accountManagement.withdrawal.withdrawalStartFailed( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 422 | result.current.PerpsToastOptions.orderManagement.market.submitted( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 444 | result.current.PerpsToastOptions.orderManagement.market.confirmed( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 462 | result.current.PerpsToastOptions.orderManagement.market.creationFailed( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 477 | result.current.PerpsToastOptions.orderManagement.market.submitted( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 492 | result.current.PerpsToastOptions.orderManagement.market.confirmed( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 507 | result.current.PerpsToastOptions.orderManagement.market.submitted( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 524 | result.current.PerpsToastOptions.orderManagement.limit.submitted( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 546 | result.current.PerpsToastOptions.orderManagement.limit.confirmed( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 564 | result.current.PerpsToastOptions.orderManagement.limit.creationFailed( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 577 | result.current.PerpsToastOptions.orderManagement.limit.creationFailed( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 591 | result.current.PerpsToastOptions.orderManagement.limit.submitted( | CODE |
| CRITICAL | app/components/UI/Perps/hooks/usePerpsToasts.test.tsx | 606 | result.current.PerpsToastOptions.orderManagement.limit.confirmed( | CODE |
| 54 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/core/SDKConnectV2/utils/when-store-ready.ts | 10 | // resumption would not be accounted for. We should figure out something more robust. | COMMENT |
| MEDIUM⚡ | app/util/termsOfUse/socialTermsOfUseContent.ts | 1 | export default '<!doctype html>\n<html>\n<head>\n<meta name="viewport" content="width=device-width, initial-scale=1, max | CODE |
| MEDIUM⚡ | app/util/termsOfUse/socialTermsOfUseContent.ts | 1 | export default '<!doctype html>\n<html>\n<head>\n<meta name="viewport" content="width=device-width, initial-scale=1, max | CODE |
| MEDIUM⚡ | app/util/termsOfUse/socialTermsOfUseContent.ts | 1 | export default '<!doctype html>\n<html>\n<head>\n<meta name="viewport" content="width=device-width, initial-scale=1, max | CODE |
| MEDIUM⚡ | app/util/termsOfUse/socialTermsOfUseContent.ts | 1 | export default '<!doctype html>\n<html>\n<head>\n<meta name="viewport" content="width=device-width, initial-scale=1, max | CODE |
| MEDIUM | app/constants/urls.ts | 99 | export const PERPS_ADL_URL = `https://support.metamask.io/manage-crypto/trade/perps/leverage-and-liquidation/${MOBILE_UT | CODE |
| MEDIUM | app/styles/common.ts | 34 | // native chrome feels seamless with the embedded webview. Update only if | COMMENT |
| MEDIUM | app/components/UI/SocialFeed/utils/mapFeedItem.ts | 253 | // Prefer the position leverage, fall back to the triggering trade's, and | COMMENT |
| MEDIUM | …/SocialFeed/components/SocialFeedPositionCard.test.tsx | 236 | // The symbol stands alone and the leverage rides in a side tag beside it; | COMMENT |
| MEDIUM | app/components/UI/FoxLoader/FoxLoader.styles.ts | 7 | // Matches the native splash fox (144pt/dp) so the handoff stays seamless. | COMMENT |
| MEDIUM | …p/components/UI/Ramp/utils/getProviderWebviewColors.ts | 24 | // seamless with the embedded checkout flow. See colors.*CheckoutDark in | COMMENT |
| MEDIUM | app/components/UI/Perps/types/navigation.ts | 88 | existingPosition?: Position; // Pass existing position for leverage consistency when adding to position | CODE |
| MEDIUM⚡ | app/components/UI/Perps/constants/perpsConfig.ts | 95 | // Step sizes for tick marks based on max leverage | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/constants/perpsConfig.ts | 96 | TickStepLow: 5, // Step size when max leverage <= 20 | CODE |
| MEDIUM⚡ | app/components/UI/Perps/constants/perpsConfig.ts | 97 | TickStepMedium: 10, // Step size when max leverage <= 50 | CODE |
| MEDIUM⚡ | app/components/UI/Perps/constants/perpsConfig.ts | 98 | TickStepHigh: 20, // Step size when max leverage > 50 | CODE |
| MEDIUM⚡ | app/components/UI/Perps/constants/leverageColors.ts | 15 | // Safe leverage (green) - typically leverage < 33% of max | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/constants/leverageColors.ts | 21 | // Caution leverage (yellow) - typically leverage 33-50% of max | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/constants/leverageColors.ts | 24 | // Medium/Warning leverage (orange) - typically leverage 50-75% of max | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/constants/leverageColors.ts | 27 | // High/Danger leverage (red) - typically leverage > 75% of max | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/constants/leverageColors.ts | 36 | // Safe leverage background (green with 10% opacity) | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/constants/leverageColors.ts | 39 | // Caution leverage background (yellow with 10% opacity) | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/constants/leverageColors.ts | 42 | // Medium leverage background (orange with 10% opacity) | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/constants/leverageColors.ts | 45 | // High leverage background (red with 10% opacity) | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/orderCalculations.test.ts | 322 | expect(result).toBeLessThanOrEqual(1000); // 100 * 10 leverage | CODE |
| MEDIUM | app/components/UI/Perps/utils/orderCalculations.test.ts | 339 | expect(result).toBeLessThanOrEqual(5000); // 50 * 100 leverage | CODE |
| MEDIUM | app/components/UI/Perps/utils/orderCalculations.test.ts | 356 | expect(result).toBeLessThanOrEqual(50); // 10 * 5 leverage | CODE |
| MEDIUM | app/components/UI/Perps/utils/marginUtils.test.ts | 18 | // For 50x position leverage: initial margin = 2%, but 10% is higher | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/marginUtils.test.ts | 37 | // For 5x position leverage: initial margin = 20%, which is > 10% | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/marginUtils.test.ts | 122 | // Position at 10x leverage with exactly the required margin | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.ts | 433 | // Maximum theoretical loss is 100% * leverage (before liquidation) | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/utils/tpslValidation.ts | 453 | // marginUsed = positionValue / leverage | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/utils/tpslValidation.ts | 455 | // Therefore: PnL = RoE% * (entryPrice * size) / (leverage * 100) | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/utils/tpslValidation.ts | 456 | // Simplifying: PnL/positionValue = RoE% / (leverage * 100) | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/utils/tpslValidation.ts | 457 | // priceChange/entryPrice = RoE% / (leverage * 100) | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/utils/tpslValidation.ts | 458 | // priceChange = entryPrice * RoE% / (leverage * 100) | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.ts | 552 | // RoE% = priceChangeRatio * leverage * 100 | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.ts | 648 | // Maximum theoretical loss is 100% * leverage (before liquidation) | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 29 | // Arrange - a short whose take profit return overshoots 100% x leverage | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 943 | // With 1x leverage, 10% RoE requires 10% price movement | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 946 | // With 50x leverage, 10% RoE requires 0.2% price movement | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1026 | // With 100x leverage, 10% RoE requires only 0.1% price movement | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1115 | // Given - PEPE token with very small price and 10x leverage | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1128 | expect(result).toBe('0.00001246'); // ~1% price increase for 10% RoE with 10x leverage | CODE |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1145 | expect(tpResult).toBe('0.00001222'); // ~1% price decrease for 10% RoE with 10x leverage | CODE |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1155 | expect(slResult).toBe('0.0000124'); // ~0.5% price increase for 5% loss with 10x leverage | CODE |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1178 | ); // 1105 - 100 = 1005, (1005/100)*10 = 100.5% * 100 leverage effect | CODE |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1202 | // With 1x leverage, 1% price move = 1% RoE | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1207 | // With 50x leverage, 1% price move = 50% RoE | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1296 | leverage: 1, // function defaults to 1 when leverage not provided | CODE |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1299 | // With 1x leverage, 10% price move = 10% RoE | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/tpslValidation.test.ts | 1468 | expect(isValidStopLossPercentage(990, leverage)).toBe(true); // Max for 10x leverage | CODE |
| MEDIUM⚡ | app/components/UI/Perps/utils/marginUtils.ts | 153 | // IMPORTANT: Use the position's actual leverage, not the asset's max leverage | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/utils/marginUtils.ts | 154 | // A position at 10x leverage needs 10% initial margin ($100 for $1000 notional) | COMMENT |
| MEDIUM⚡ | app/components/UI/Perps/utils/marginUtils.ts | 155 | // NOT the 2% that 50x max leverage would imply | COMMENT |
| MEDIUM | app/components/UI/Perps/utils/orderSizing.test.ts | 86 | // 0.00406 x 81,690 / 5x leverage | COMMENT |
| MEDIUM | …ponents/UI/Perps/utils/e2eBridgePerps.deeplink.test.ts | 66 | // Retrieve handler from mock calls (robust across RN versions) | COMMENT |
| MEDIUM | …onents/PerpsTradeBottomSheet/PerpsTradeScreen.test.tsx | 277 | // The selected leverage still lives in the Leverage row. | COMMENT |
| MEDIUM | …s/UI/Perps/components/PerpsSlider/PerpsSlider.test.tsx | 292 | // against the real sizing math, ten 5-cent balance moves at leverage 20 | COMMENT |
| MEDIUM | …s/components/PerpsMarketRowItem/PerpsMarketRowItem.tsx | 186 | // flexShrink lets the title text yield space to the leverage badge so | COMMENT |
| 125 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | locales/languages/zh.json | 300 | "placeholder": "按网站或地址搜索", | CODE |
| LOW | locales/languages/zh.json | 1307 | "placeholder": "类型", | CODE |
| LOW | locales/languages/zh.json | 1448 | "placeholder": "Add a position and a few words to post", | CODE |
| LOW | locales/languages/zh.json | 3688 | "placeholder": "搜索市场", | CODE |
| LOW | locales/languages/zh.json | 8609 | "placeholder": "电子邮件地址", | CODE |
| LOW | locales/languages/zh.json | 8863 | "placeholder": "确认密码", | CODE |
| LOW | locales/languages/zh.json | 10842 | "placeholder": "例如,妈妈家", | CODE |
| LOW | locales/languages/zh.json | 11089 | "placeholder": "密码", | CODE |
| LOW | locales/languages/tr.json | 300 | "placeholder": "Siteye veya adrese göre ara", | CODE |
| LOW | locales/languages/tr.json | 1307 | "placeholder": "Bu snap'i kaldırmak istediğinizi onaylamak için", | CODE |
| LOW | locales/languages/tr.json | 1448 | "placeholder": "Add a position and a few words to post", | CODE |
| LOW | locales/languages/tr.json | 3688 | "placeholder": "Piyasa ara", | CODE |
| LOW | locales/languages/tr.json | 8609 | "placeholder": "E-posta adresi", | CODE |
| LOW | locales/languages/tr.json | 8863 | "placeholder": "Şifreyi onayla", | CODE |
| LOW | locales/languages/tr.json | 10842 | "placeholder": "ör. annemin evi", | CODE |
| LOW | locales/languages/tr.json | 11089 | "placeholder": "Şifre", | CODE |
| LOW | locales/languages/ja.json | 300 | "placeholder": "サイトまたはアドレスで検索", | CODE |
| LOW | locales/languages/ja.json | 1307 | "placeholder": "タイプ", | CODE |
| LOW | locales/languages/ja.json | 1448 | "placeholder": "Add a position and a few words to post", | CODE |
| LOW | locales/languages/ja.json | 3688 | "placeholder": "市場を検索", | CODE |
| LOW | locales/languages/ja.json | 8609 | "placeholder": "メールアドレス", | CODE |
| LOW | locales/languages/ja.json | 8863 | "placeholder": "パスワードの確認", | CODE |
| LOW | locales/languages/ja.json | 10842 | "placeholder": "例: 母親の実家", | CODE |
| LOW | locales/languages/ja.json | 11089 | "placeholder": "パスワード", | CODE |
| LOW | locales/languages/de.json | 300 | "placeholder": "Suche nach Website oder Adresse", | CODE |
| LOW | locales/languages/de.json | 1307 | "placeholder": "Typ", | CODE |
| LOW | locales/languages/de.json | 1448 | "placeholder": "Add a position and a few words to post", | CODE |
| LOW | locales/languages/de.json | 3688 | "placeholder": "Märkte durchsuchen", | CODE |
| LOW | locales/languages/de.json | 8609 | "placeholder": "E-Mail-Adresse", | CODE |
| LOW | locales/languages/de.json | 8863 | "placeholder": "Passwort bestätigen", | CODE |
| LOW | locales/languages/de.json | 10842 | "placeholder": "z. B. Mamas Haus", | CODE |
| LOW | locales/languages/de.json | 11089 | "placeholder": "Passwort", | CODE |
| LOW | locales/languages/ru.json | 300 | "placeholder": "Поиск по сайту или адресу", | CODE |
| LOW | locales/languages/ru.json | 1307 | "placeholder": "Тип", | CODE |
| LOW | locales/languages/ru.json | 1448 | "placeholder": "Add a position and a few words to post", | CODE |
| LOW | locales/languages/ru.json | 3688 | "placeholder": "Поиск рынков", | CODE |
| LOW | locales/languages/ru.json | 8609 | "placeholder": "Адрес элю почты", | CODE |
| LOW | locales/languages/ru.json | 8863 | "placeholder": "Подтвердите пароль", | CODE |
| LOW | locales/languages/ru.json | 10842 | "placeholder": "например, дом мамы", | CODE |
| LOW | locales/languages/ru.json | 11089 | "placeholder": "Пароль", | CODE |
| LOW | locales/languages/ko-kr.json | 20 | "placeholder": "URL 검색 또는 입력" | CODE |
| LOW | locales/languages/ja-jp.json | 20 | "placeholder": "検索するか URL を入力" | CODE |
| LOW | locales/languages/zh-cn.json | 20 | "placeholder": "搜索或键入 URL" | CODE |
| LOW | locales/languages/id-id.json | 20 | "placeholder": "Cari atau Ketik URL" | CODE |
| LOW | locales/languages/pt.json | 300 | "placeholder": "Pesquisar por site ou por endereço", | CODE |
| LOW | locales/languages/pt.json | 1307 | "placeholder": "Digite", | CODE |
| LOW | locales/languages/pt.json | 1448 | "placeholder": "Add a position and a few words to post", | CODE |
| LOW | locales/languages/pt.json | 3688 | "placeholder": "Pesquisar mercados", | CODE |
| LOW | locales/languages/pt.json | 8609 | "placeholder": "Endereço de e-mail", | CODE |
| LOW | locales/languages/pt.json | 8863 | "placeholder": "Confirmar senha", | CODE |
| LOW | locales/languages/pt.json | 10842 | "placeholder": "p. ex., casa da minha mãe", | CODE |
| LOW | locales/languages/pt.json | 11089 | "placeholder": "Senha", | CODE |
| LOW | locales/languages/en.json | 300 | "placeholder": "Search by site or address", | CODE |
| LOW | locales/languages/en.json | 1309 | "placeholder": "Type", | CODE |
| LOW | locales/languages/en.json | 1450 | "placeholder": "Add a position and a few words to post", | CODE |
| LOW | locales/languages/en.json | 1722 | "placeholder_body": "The full Social Supplemental Terms will appear here.\n\nThis is temporary placeholder text wh | CODE |
| LOW | locales/languages/en.json | 1722 | "placeholder_body": "The full Social Supplemental Terms will appear here.\n\nThis is temporary placeholder text wh | CODE |
| LOW | locales/languages/en.json | 3722 | "placeholder": "Search markets", | CODE |
| LOW | locales/languages/en.json | 8656 | "placeholder": "Email address", | CODE |
| LOW | locales/languages/en.json | 8910 | "placeholder": "Confirm password", | CODE |
| 217 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .depcheckrc.yml | 41 | # ESBuild is used for AI E2E script compilation | COMMENT |
| LOW | .depcheckrc.yml | 161 | # array form (['babel-jest', { configFile: ... }]) which depcheck's Jest | COMMENT |
| LOW | builds.yml | 1 | # Single source of truth for all build configurations | COMMENT |
| LOW | fingerprint.config.js | 121 | * you've confirmed it can't affect the native binary. When in doubt, leave it tracked. | COMMENT |
| LOW | fingerprint.config.js | 241 | '.github/workflows/run-appium-smoke-tests-ios.yml', | COMMENT |
| LOW | jest.config.view.js | 1 | /* eslint-disable import-x/no-commonjs */ | COMMENT |
| LOW | jest.config.view.js | 41 | maxWorkers: 1, | COMMENT |
| LOW | metro.config.js | 41 | // to inject one as a global (see | COMMENT |
| LOW | metro.config.js | 241 | // | COMMENT |
| LOW | metro.transform.js | 201 | eslintrc.rules['prettier/prettier'] = 0; | COMMENT |
| LOW | babel.config.js | 1 | // React Compiler plugin (incl. bailout logging and test-env gating) lives in its | COMMENT |
| LOW | babel.config.js | 81 | // stage, and Babel/preset-expo must not inject core-js/@babel/runtime | COMMENT |
| LOW | babel.config.js | 101 | // pre-Expo-transformer pipeline and prevents the forced strict mode. | COMMENT |
| LOW | babel.config.js | 121 | unstable_transformProfile: 'hermes-stable', | COMMENT |
| LOW | shim.js | 61 | // Needed to polyfill browser | COMMENT |
| LOW | shim.js | 81 | // inject from `metro.config.js`. See the comment in `runtime.native.ts`: | COMMENT |
| LOW | shim.js | 101 | `HAS_TEST_OVERRIDES=${process.env.HAS_TEST_OVERRIDES || 'unset'} METAMASK_ENVIRONMENT=${ | COMMENT |
| LOW | shim.js | 481 | // Patch WebSocket to route production ws:// / wss:// URLs to mock | COMMENT |
| LOW | shim.js | 521 | // eslint-disable-next-line no-console | COMMENT |
| LOW | shim.js | 541 | // `import { fetch } from 'expo/fetch'` was bundled or which | COMMENT |
| LOW | .eslintrc.js | 461 | 'jest/no-restricted-matchers': 'off', | COMMENT |
| LOW | .eslintrc.js | 701 | patterns: [ | COMMENT |
| LOW | locales/i18n.js | 61 | //const currentLocale = I18n.currentLocale(); | COMMENT |
| LOW | locales/i18n.js | 81 | // case 'pt': | COMMENT |
| LOW | app/core/SanitizationMiddleware.ts | 1 | import { JsonRpcMiddleware } from '@metamask/json-rpc-engine'; | COMMENT |
| LOW | app/core/RPCMethods/getSessionCapabilities.ts | 21 | COMMENT | |
| LOW | app/core/WalletConnect/WalletConnect2Session.ts | 181 | // eslint-disable-next-line @typescript-eslint/no-explicit-any | COMMENT |
| LOW | app/core/WalletConnect/wc-analytics.ts | 1 | import { v5 as uuidv5 } from 'uuid'; | COMMENT |
| LOW | app/core/WalletConnect/wc-analytics.ts | 21 | // (MWP) and SDK v1 already emit, so warehouse joins on that column work | COMMENT |
| LOW | app/core/GasPolling/GasPolling.test.ts | 201 | // expect(result.conversionRate).toEqual(1); | COMMENT |
| LOW | app/core/SDKConnectV2/services/connection-registry.ts | 161 | } else { | COMMENT |
| LOW | app/core/SDKConnectV2/services/connection-registry.ts | 361 | sdk_platform: connReq?.metadata?.sdk?.platform, | COMMENT |
| LOW | …/core/DeeplinkManager/types/deepLinkAnalytics.types.ts | 61 | NFT = 'nft', | COMMENT |
| LOW | app/core/Engine/wallet-init/keyrings.ts | 141 | ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) | COMMENT |
| LOW | …ne/controllers/rewards-controller/RewardsController.ts | 681 | #geoLocation: GeoRewardsMetadata | null = null; | COMMENT |
| LOW | app/core/Authentication/Authentication.ts | 441 | COMMENT | |
| LOW | app/core/Authentication/Authentication.ts | 2001 | // account tree, which would otherwise make CardController fetch CardHome | COMMENT |
| LOW | app/util/test/testSetupView.js | 101 | // Must be patched post-require (the jest.mock factory mutation doesn't persist). | COMMENT |
| LOW | app/util/analytics/privacySegmentPlugin.ts | 41 | // Set anonymousId to be our own "all zeros" id for all events | COMMENT |
| LOW | …components/ForgotPasswordModal/ForgotPasswordModal.tsx | 41 | ToastContext, | COMMENT |
| LOW | …onfirmationModal/LimitOrderConfirmationModalScreen.tsx | 261 | // same order id without having to thread it through separately. | COMMENT |
| LOW | …Bridge/components/BridgeTokenSelector/NetworkPills.tsx | 141 | COMMENT | |
| LOW | …I/PredictNext/adapters/remote/PredictLiveDataClient.ts | 181 | #protocolRejected = false; | COMMENT |
| LOW | …mponents/UI/Rewards/hooks/useRewardsPendingDeeplink.ts | 81 | } else if (pendingDeeplink.campaign === 'perps-comp') { | COMMENT |
| LOW | …ts/UI/Charts/AdvancedChart/webview/chartLogicString.ts | 1 | // AUTO-GENERATED — do not edit manually. | COMMENT |
| LOW | …/Charts/AdvancedChart/webview/src/messages/contract.ts | 1 | // Versioned message contract between React Native and the WebView IIFE. | COMMENT |
| LOW | …Charts/AdvancedChart/webview/src/core/dataLifecycle.ts | 1 | // Lightweight event bus for data lifecycle events overlays need to react to. | COMMENT |
| LOW | …/UI/Charts/AdvancedChart/webview/src/core/bootstrap.ts | 1 | // Entry orchestration. Called once from src/index.ts when the IIFE evaluates | COMMENT |
| LOW | …rts/AdvancedChart/webview/src/widget/ohlcvIngestion.ts | 1 | // SET_OHLCV_DATA and REALTIME_UPDATE inbound handlers. | COMMENT |
| LOW | …I/Charts/AdvancedChart/webview/src/widget/initChart.ts | 1 | // TradingView widget creation and onChartReady orchestration. | COMMENT |
| LOW | …Charts/AdvancedChart/webview/src/widget/scaleLayout.ts | 1 | // Centralised price-scale + pane-layout overrides. | COMMENT |
| LOW | …ts/UI/Charts/AdvancedChart/webview/src/widget/theme.ts | 1 | // Theme application + SET_THEME_COLORS hot-swap handler. | COMMENT |
| LOW | …vancedChart/webview/src/overlays/tradeMarkers/index.ts | 1 | // Social trade-marker overlay: places colored circles (with black rings) | COMMENT |
| LOW | …art/webview/src/overlays/tradeMarkers/markerHitTest.ts | 1 | // Marker tap detection — turns a chart press into a TRADE_MARKER_PRESSED | COMMENT |
| LOW | …/AdvancedChart/webview/src/overlays/focusTime/index.ts | 1 | // Slide-to-center-on-a-time overlay used by Social's "tap a trade row → | COMMENT |
| LOW | …dChart/webview/src/overlays/socialLeaderboard/index.ts | 1 | // Social Leaderboard (SLB) viewport centering and back-fill pagination. | COMMENT |
| LOW | …dChart/webview/src/overlays/socialLeaderboard/index.ts | 21 | // getBars call for a time range outside the in-memory dataset returns | COMMENT |
| LOW | …dvancedChart/webview/src/features/indicators/legend.ts | 1 | // DOM legend overlay for active indicator studies. | COMMENT |
| LOW | …rts/AdvancedChart/webview/src/interaction/crosshair.ts | 1 | // Crosshair → CROSSHAIR_MOVE message bridge + short-tap dismiss. | COMMENT |
| LOW | …/AdvancedChart/webview/src/interaction/visibleRange.ts | 1 | // Visible-range / bar-spacing → CHART_INTERACTED analytics + zoom persistence. | COMMENT |
| 154 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/core/AgenticCli/AgenticCliQrLoginService.test.ts | 115 | url: 'https://agentic.metamask.io', | CODE |
| MEDIUM | app/core/AgenticCli/AgenticCliQrLoginService.test.ts | 182 | dashboardUrl: 'https://evil.example/agentic/login', | CODE |
| MEDIUM | app/core/AgenticCli/AgenticCliQrLoginService.test.ts | 196 | dashboardUrl: 'https://developer.metamask.io/agentic/login', | CODE |
| MEDIUM | app/core/AgenticCli/AgenticCliQrLoginService.test.ts | 226 | dashboardUrl: 'https://developer.metamask.io/agentic/login', | CODE |
| MEDIUM | app/core/AgenticCli/AgenticCliQrLoginService.test.ts | 317 | dashboardUrl: 'https://develop-developer.metamask.io/agentic/login', | CODE |
| MEDIUM | app/core/AgenticCli/AgenticCliQrLoginService.test.ts | 339 | dashboardUrl: 'https://staging-developer.metamask.io/agentic/login', | CODE |
| MEDIUM | app/core/AgenticCli/AgenticCliQrLoginService.test.ts | 362 | dashboardUrl: 'https://developer.metamask.io/agentic/login', | CODE |
| MEDIUM⚡ | app/core/AgenticCli/agenticCliConfig.ts | 10 | main_dev: 'https://develop-developer.metamask.io/agentic/login', | CODE |
| MEDIUM⚡ | app/core/AgenticCli/agenticCliConfig.ts | 11 | main_uat: 'https://staging-developer.metamask.io/agentic/login', | CODE |
| MEDIUM⚡ | app/core/AgenticCli/agenticCliConfig.ts | 12 | main_prod: 'https://developer.metamask.io/agentic/login', | CODE |
| MEDIUM⚡ | app/core/AgenticCli/agenticCliConfig.ts | 13 | flask_dev: 'https://develop-developer.metamask.io/agentic/login', | CODE |
| MEDIUM⚡ | app/core/AgenticCli/agenticCliConfig.ts | 14 | flask_uat: 'https://staging-developer.metamask.io/agentic/login', | CODE |
| MEDIUM⚡ | app/core/AgenticCli/agenticCliConfig.ts | 15 | flask_prod: 'https://developer.metamask.io/agentic/login', | CODE |
| MEDIUM | …inkManager/handlers/legacy/handleAgenticCliApproval.ts | 8 | * Handles `https://link.metamask.io/agentic-cli` deeplinks. | COMMENT |
| MEDIUM | app/util/analytics/enrichWithABTests.test.ts | 546 | // The experiment only reorders sections on wallet home, so guardrails | COMMENT |
| MEDIUM | app/components/UI/PredictNext/docs/ui-components.md | 38 | ### Keep product orchestration outside primitives | COMMENT |
| MEDIUM⚡ | …ts/UI/Charts/AdvancedChart/webview/chartLogicString.ts | 9 | const chartLogicString = "/******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\nlet __webpack_exports__ = { | CODE |
| MEDIUM | app/components/UI/Ramp/headless/PLAN.md | 70 | ## Phase 1 — Playground scaffolding (read-only) | COMMENT |
| MEDIUM | app/components/UI/Ramp/headless/PLAN.md | 405 | ### Host orchestration | COMMENT |
| MEDIUM | …s/Views/PerpsProMarketView/PerpsProMarketView.test.tsx | 271 | // need a lightweight placeholder so the layout scaffold assertions still pass. | COMMENT |
| MEDIUM | app/components/Views/Homepage/abTestConfig.ts | 500 | // Both guardrails fire from surfaces this experiment does not touch | COMMENT |
| MEDIUM | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 27 | dashboardUrl: 'https://test-dashboard.web3auth.io/agentic/login', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 57 | 'https://test-dashboard.web3auth.io/agentic/login?foo=bar', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 62 | 'https://test-dashboard.web3auth.io/agentic/login?foo=bar#auth_token=dashboard-token', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 68 | 'https://test-dashboard.web3auth.io/agentic/login?auth_token=old-token', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 73 | 'https://test-dashboard.web3auth.io/agentic/login#auth_token=dashboard-token', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 80 | 'https://evil.example/agentic/login', | CODE |
| MEDIUM | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 91 | 'https://test-dashboard.web3auth.io/agentic/login#auth_token=token', | CODE |
| MEDIUM | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 99 | 'https://test-dashboard.web3auth.io/agentic/login#auth_token=token', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 249 | 'https://test-dashboard.web3auth.io/agentic/login#auth_token=token', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 254 | 'https://dev-developer.metamask.io/agentic/login#auth_token=token', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 259 | 'https://dev-dashboard.web3auth.io/agentic/login#auth_token=token', | CODE |
| MEDIUM | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 272 | 'https://test-dashboard.web3auth.io/agentic/login#auth_token=token', | CODE |
| MEDIUM | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 292 | 'https://developer.metamask.io/agentic/login#auth_token=token', | CODE |
| MEDIUM | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 297 | 'https://dashboard.web3auth.io/agentic/login#auth_token=token', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 317 | 'https://dev-dashboard.web3auth.io/agentic/login#auth_token=token', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 322 | 'https://uat-developer.metamask.io/agentic/login#auth_token=token', | CODE |
| MEDIUM⚡ | …boardWebview/AgenticCliDashboardWebviewService.test.ts | 327 | 'https://test-dashboard.web3auth.io/agentic/login#auth_token=token', | CODE |
| MEDIUM | …onents/Views/AgenticCliDashboardWebview/index.test.tsx | 133 | dashboardUrl: 'https://test-dashboard.web3auth.io/agentic/login', | CODE |
| MEDIUM | …onents/Views/AgenticCliDashboardWebview/index.test.tsx | 144 | 'https://test-dashboard.web3auth.io/agentic/login#auth_token=dashboard-token', | CODE |
| MEDIUM | …onents/Views/AgenticCliDashboardWebview/index.test.tsx | 163 | uri: 'https://test-dashboard.web3auth.io/agentic/login#auth_token=dashboard-token', | CODE |
| MEDIUM | …s/AgenticCliApproval/AgenticCliApprovalService.test.ts | 54 | 'https://developer.metamask.io/agentic/approval', | CODE |
| MEDIUM | …s/AgenticCliApproval/AgenticCliApprovalService.test.ts | 104 | 'https://developer.metamask.io/agentic/approval?projectId=project-1&approvalId=approval-1&mimirSignature=signatu | CODE |
| MEDIUM⚡ | …s/AgenticCliApproval/AgenticCliApprovalService.test.ts | 155 | 'https://developer.metamask.io/agentic/approval', | CODE |
| MEDIUM⚡ | …s/AgenticCliApproval/AgenticCliApprovalService.test.ts | 163 | 'https://test-dashboard.web3auth.io/agentic/approval', | CODE |
| MEDIUM⚡ | …s/AgenticCliApproval/AgenticCliApprovalService.test.ts | 171 | 'https://dev-dashboard.web3auth.io/agentic/login', | CODE |
| MEDIUM⚡ | …s/AgenticCliApproval/AgenticCliApprovalService.test.ts | 179 | 'https://auth.web3auth.io/auth?state=agentic', | CODE |
| MEDIUM | app/components/Views/AgenticCliApproval/index.test.tsx | 41 | 'https://developer.metamask.io/agentic/approval?projectId=project-1&approvalId=approval-1&mimirSignature=signa | CODE |
| MEDIUM | app/components/Views/AgenticCliApproval/index.test.tsx | 375 | url: 'https://developer.metamask.io/agentic/approval', | CODE |
| MEDIUM | app/dev-tools/AgenticService/AgenticService.ts | 2010 | // 7. Set auto-lock to "Never" (-1) for agentic workflows | COMMENT |
| MEDIUM | tests/tools/e2e-ai-analyzer/README.md | 84 | ├── analysis/ # Core AI agentic loop | CODE |
| MEDIUM | tests/tools/e2e-ai-analyzer/index.ts | 757 | // LEGACY PATH: agentic loop for other modes | COMMENT |
| MEDIUM | …rformance/onboarding/fresh-srp-wallet-creation.spec.ts | 306 | // These are conservative initial guardrails to calibrate against CI | COMMENT |
| MEDIUM | …rmance/onboarding/seedless-telegram-onboarding.spec.ts | 76 | // Conservative initial guardrails — calibrate against TestMu | COMMENT |
| MEDIUM | docs/predict/implementation-guide.md | 721 | ├── PredictMarketDetails.tsx # <500 lines, orchestration only | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ents/UI/Card/components/Onboarding/PhysicalAddress.tsx | 479 | // Step 7: Create or retrieve consent record | COMMENT |
| LOW | …ents/UI/Card/components/Onboarding/PhysicalAddress.tsx | 507 | // Step 8: Register physical address | COMMENT |
| LOW⚡ | …ents/UI/Card/components/Onboarding/PhysicalAddress.tsx | 540 | // Step 10: Link consent to user (only if needed) | COMMENT |
| LOW⚡ | …ents/UI/Card/components/Onboarding/PhysicalAddress.tsx | 546 | // Step 11: Check KYC status and navigate accordingly | COMMENT |
| LOW⚡ | app/components/UI/Card/hooks/useCardDelegation.ts | 424 | // Step 1: Delegation session (pass faucet flag if user needs gas) | COMMENT |
| LOW⚡ | app/components/UI/Card/hooks/useCardDelegation.ts | 432 | // Step 2: Generate and sign SIWE message | COMMENT |
| LOW | app/components/UI/Card/hooks/useCardDelegation.ts | 448 | // Step 3: Execute approval transaction | COMMENT |
| LOW | app/components/UI/Earn/utils/wildcardTokenList.ts | 183 | // Step 1: If allowlist is non-empty, token must be in it | COMMENT |
| LOW | app/components/UI/Earn/utils/wildcardTokenList.ts | 196 | // Step 2: If blocklist is non-empty, token must NOT be in it | COMMENT |
| LOW⚡ | …mponents/UI/Predict/providers/polymarket/safe/utils.ts | 196 | // Step 1: Calculate domain separator | COMMENT |
| LOW⚡ | …mponents/UI/Predict/providers/polymarket/safe/utils.ts | 204 | // Step 2: Calculate safe tx hash | COMMENT |
| LOW | …mponents/UI/Predict/providers/polymarket/safe/utils.ts | 236 | // Step 3: Encode final transaction data (EIP-712) | COMMENT |
| LOW⚡ | …/components/TradingViewChart/TradingViewChart.test.tsx | 1836 | // Step 1: Load initial data | COMMENT |
| LOW⚡ | …/components/TradingViewChart/TradingViewChart.test.tsx | 1841 | // Step 2: Add TP/SL lines | COMMENT |
| LOW⚡ | …/components/TradingViewChart/TradingViewChart.test.tsx | 1850 | // Step 3: Change time period | COMMENT |
| LOW⚡ | …/components/TradingViewChart/TradingViewChart.test.tsx | 1859 | // Step 4: Update data | COMMENT |
| LOW | …erps/components/TradingViewChart/TradingViewChart.html | 151 | // Step 2: Create chart | COMMENT |
| LOW | …mponents/TradingViewChart/TradingViewChartTemplate.tsx | 509 | // Step 2: Create chart | COMMENT |
| LOW | …ponents/UI/Perps/hooks/usePerpsCloseAllCalculations.ts | 235 | // Step 1: Calculate fees for all positions in parallel | COMMENT |
| LOW | …ponents/UI/Perps/hooks/usePerpsCloseAllCalculations.ts | 280 | // Step 2: Batch points estimation for all positions in a single API call | COMMENT |
| LOW | …ponents/UI/Perps/hooks/usePerpsCloseAllCalculations.ts | 306 | // Step 3: Combine fee results with batch points | COMMENT |
| LOW | app/components/UI/Perps/hooks/usePerpsOrderFees.ts | 431 | // Step 1: Get core fees from provider | COMMENT |
| LOW | app/components/UI/Perps/hooks/usePerpsOrderFees.ts | 442 | // Step 2: Check if rates are available (not undefined) | COMMENT |
| LOW | app/components/UI/Perps/hooks/usePerpsOrderFees.ts | 472 | // Step 4: Handle points estimation if user has address and valid amount | COMMENT |
| LOW | app/components/UI/Perps/hooks/usePerpsOrderFees.ts | 495 | // Step 5: Update all state with actual values (all rates are defined) | COMMENT |
| LOW | …ponents/UI/Perps/hooks/stream/useLivePositions.test.ts | 771 | // Step 1: receive positions and an initial price tick | COMMENT |
| LOW⚡ | …ponents/UI/Perps/hooks/stream/useLivePositions.test.ts | 794 | // Step 2: cache-clear fires — channel emits {} to signal stale data | COMMENT |
| LOW⚡ | …ponents/UI/Perps/hooks/stream/useLivePositions.test.ts | 799 | // Step 3: after the reset, enrichPositionsWithLivePnL receives empty priceData | COMMENT |
| LOW⚡ | …ponents/UI/Perps/hooks/stream/useLivePositions.test.ts | 808 | // Step 4: a fresh tick arrives after reconnect — enrichment resumes correctly | COMMENT |
| LOW⚡ | …ts/Views/Snaps/SnapSettings/test/SnapSettings.test.tsx | 474 | // Step 2: Click continue on the warning modal | COMMENT |
| LOW⚡ | …ts/Views/Snaps/SnapSettings/test/SnapSettings.test.tsx | 480 | // Step 3: Wait for the warning modal to appear and enter the snap name | COMMENT |
| LOW⚡ | …ts/Views/Snaps/SnapSettings/test/SnapSettings.test.tsx | 488 | // Step 4: Click the continue button | COMMENT |
| LOW⚡ | …ts/Views/Snaps/SnapSettings/test/SnapSettings.test.tsx | 491 | // Step 5: Verify that the removal functions are called | COMMENT |
| LOW⚡ | …ichainAccountConnect/MultichainAccountConnect.test.tsx | 2366 | // Step 1: press Connect to navigate to MaliciousWarning | COMMENT |
| LOW⚡ | …ichainAccountConnect/MultichainAccountConnect.test.tsx | 2369 | // Step 2: press Connect Anyway to complete the connection | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 320 | // Step 1: Click "Get started" on introduction screen | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 326 | // Step 2: Answer quiz question 1 (correct answer is RIGHT_ANSWER) | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 334 | // Step 3: Click "Continue" after correct answer | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 344 | // Step 4: Answer quiz question 2 (correct answer is RIGHT_ANSWER) | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 352 | // Step 5: Click "Continue" to proceed to ActionView | COMMENT |
| LOW⚡ | app/store/sagas/rewardsBulkLinkAccountGroups.ts | 381 | // Step 1: Collect all supported accounts from all groups | COMMENT |
| LOW⚡ | app/store/sagas/rewardsBulkLinkAccountGroups.ts | 387 | // Step 2: Batch fetch opt-in status for all addresses | COMMENT |
| LOW⚡ | app/store/sagas/rewardsBulkLinkAccountGroups.ts | 392 | // Step 3: Identify accounts that need linking | COMMENT |
| LOW | app/store/sagas/rewardsBulkLinkAccountGroups.ts | 413 | // Step 4: Process all accounts one-by-one | COMMENT |
| LOW⚡ | tests/tools/e2e-ai-analyzer/index.ts | 534 | // Step 1: Generate initial analysis | COMMENT |
| LOW⚡ | tests/tools/e2e-ai-analyzer/index.ts | 544 | // Step 2: Generate delta analysis (if there are cherry-picks) | COMMENT |
| LOW | tests/tools/e2e-ai-analyzer/index.ts | 564 | // Step 3: Combine results | COMMENT |
| LOW⚡ | tests/smoke-appium/stake/lending-deposit-smoke.spec.ts | 70 | // Step 1: Approve — tap lending footer then confirm the spending cap | COMMENT |
| LOW⚡ | tests/smoke-appium/stake/lending-deposit-smoke.spec.ts | 74 | // Step 2: Deposit — wait for button label to change to "Confirm" | COMMENT |
| LOW | …m/mm-connect/connection-multiclient-resilience.spec.ts | 126 | // Step 1: Disconnect Solana, verify EVM persists | COMMENT |
| LOW | …sts/api-mocking/mock-responses/ens-resolution-mocks.ts | 108 | // Step 1: ENS Registry — resolver(bytes32) | COMMENT |
| LOW | tests/page-objects/wallet/AccountListBottomSheet.ts | 917 | // Step 1: Wait up to initialWaitTimeout for "Syncing" or "Discovering" to appear | COMMENT |
| LOW | tests/page-objects/wallet/AccountListBottomSheet.ts | 960 | // Step 2: Wait for "Syncing" to disappear | COMMENT |
| LOW | tests/page-objects/wallet/AccountListBottomSheet.ts | 972 | // Step 4: Wait for "Discovering" to disappear | COMMENT |
| LOW | docs/readme/metametrics-debugging.md | 148 | ### Step 1: Verify Event is Fired | COMMENT |
| LOW | docs/readme/metametrics-debugging.md | 156 | ### Step 2: Get Your Metrics ID | COMMENT |
| LOW | docs/readme/metametrics-debugging.md | 174 | ### Step 3: Verify Event Reaches Segment | COMMENT |
| LOW | docs/readme/metametrics-debugging.md | 188 | ### Step 4: Verify Event Reaches Mixpanel | COMMENT |
| LOW⚡ | docs/readme/deeplinking.md | 350 | ### Step 1: Define the Action | COMMENT |
| LOW⚡ | docs/readme/deeplinking.md | 360 | ### Step 2: Add to Supported Actions | COMMENT |
| 6 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …shouldTrackExpectedErrors/shouldTrackExpectedErrors.ts | 6 | * The purpose of this function is to decide whether or not to send an *expected* error | COMMENT |
| LOW | …Card/components/Onboarding/ConfirmPhoneNumber.test.tsx | 1201 | // We need to check if the text shows cooldown or if the required params are missing | COMMENT |
| LOW | …Card/components/Onboarding/ConfirmPhoneNumber.test.tsx | 1223 | // We need to check if the text shows cooldown or if the required params are missing | COMMENT |
| LOW | …ents/UI/Card/components/Onboarding/PhysicalAddress.tsx | 479 | // Step 7: Create or retrieve consent record | COMMENT |
| LOW | …ents/UI/Card/components/Onboarding/PhysicalAddress.tsx | 507 | // Step 8: Register physical address | COMMENT |
| LOW⚡ | …ents/UI/Card/components/Onboarding/PhysicalAddress.tsx | 540 | // Step 10: Link consent to user (only if needed) | COMMENT |
| LOW⚡ | …ents/UI/Card/components/Onboarding/PhysicalAddress.tsx | 546 | // Step 11: Check KYC status and navigate accordingly | COMMENT |
| LOW⚡ | app/components/UI/Card/hooks/useCardDelegation.ts | 424 | // Step 1: Delegation session (pass faucet flag if user needs gas) | COMMENT |
| LOW⚡ | app/components/UI/Card/hooks/useCardDelegation.ts | 432 | // Step 2: Generate and sign SIWE message | COMMENT |
| LOW | app/components/UI/Card/hooks/useCardDelegation.ts | 448 | // Step 3: Execute approval transaction | COMMENT |
| LOW | app/components/UI/Earn/utils/wildcardTokenList.ts | 183 | // Step 1: If allowlist is non-empty, token must be in it | COMMENT |
| LOW | app/components/UI/Earn/utils/wildcardTokenList.ts | 196 | // Step 2: If blocklist is non-empty, token must NOT be in it | COMMENT |
| LOW⚡ | …mponents/UI/Predict/providers/polymarket/safe/utils.ts | 196 | // Step 1: Calculate domain separator | COMMENT |
| LOW⚡ | …mponents/UI/Predict/providers/polymarket/safe/utils.ts | 204 | // Step 2: Calculate safe tx hash | COMMENT |
| LOW | …mponents/UI/Predict/providers/polymarket/safe/utils.ts | 236 | // Step 3: Encode final transaction data (EIP-712) | COMMENT |
| LOW⚡ | …/components/TradingViewChart/TradingViewChart.test.tsx | 1836 | // Step 1: Load initial data | COMMENT |
| LOW⚡ | …/components/TradingViewChart/TradingViewChart.test.tsx | 1841 | // Step 2: Add TP/SL lines | COMMENT |
| LOW⚡ | …/components/TradingViewChart/TradingViewChart.test.tsx | 1850 | // Step 3: Change time period | COMMENT |
| LOW⚡ | …/components/TradingViewChart/TradingViewChart.test.tsx | 1859 | // Step 4: Update data | COMMENT |
| LOW | …erps/components/TradingViewChart/TradingViewChart.html | 151 | // Step 2: Create chart | COMMENT |
| LOW | …mponents/TradingViewChart/TradingViewChartTemplate.tsx | 509 | // Step 2: Create chart | COMMENT |
| LOW | …ponents/UI/Perps/hooks/usePerpsCloseAllCalculations.ts | 235 | // Step 1: Calculate fees for all positions in parallel | COMMENT |
| LOW | …ponents/UI/Perps/hooks/usePerpsCloseAllCalculations.ts | 280 | // Step 2: Batch points estimation for all positions in a single API call | COMMENT |
| LOW | …ponents/UI/Perps/hooks/usePerpsCloseAllCalculations.ts | 306 | // Step 3: Combine fee results with batch points | COMMENT |
| LOW | app/components/UI/Perps/hooks/usePerpsOrderFees.ts | 431 | // Step 1: Get core fees from provider | COMMENT |
| LOW | app/components/UI/Perps/hooks/usePerpsOrderFees.ts | 442 | // Step 2: Check if rates are available (not undefined) | COMMENT |
| LOW | app/components/UI/Perps/hooks/usePerpsOrderFees.ts | 472 | // Step 4: Handle points estimation if user has address and valid amount | COMMENT |
| LOW | app/components/UI/Perps/hooks/usePerpsOrderFees.ts | 495 | // Step 5: Update all state with actual values (all rates are defined) | COMMENT |
| LOW | …ponents/UI/Perps/hooks/stream/useLivePositions.test.ts | 771 | // Step 1: receive positions and an initial price tick | COMMENT |
| LOW⚡ | …ponents/UI/Perps/hooks/stream/useLivePositions.test.ts | 794 | // Step 2: cache-clear fires — channel emits {} to signal stale data | COMMENT |
| LOW⚡ | …ponents/UI/Perps/hooks/stream/useLivePositions.test.ts | 799 | // Step 3: after the reset, enrichPositionsWithLivePnL receives empty priceData | COMMENT |
| LOW⚡ | …ponents/UI/Perps/hooks/stream/useLivePositions.test.ts | 808 | // Step 4: a fresh tick arrives after reconnect — enrichment resumes correctly | COMMENT |
| LOW | …/UI/Perps/Views/PerpsOrderView/PerpsOrderView.test.tsx | 3219 | // Since Keypad is not mocked, we need to check if it would be rendered | COMMENT |
| LOW⚡ | …ts/Views/Snaps/SnapSettings/test/SnapSettings.test.tsx | 470 | // Step 1: // Trigger the remove snap action | COMMENT |
| LOW⚡ | …ts/Views/Snaps/SnapSettings/test/SnapSettings.test.tsx | 474 | // Step 2: Click continue on the warning modal | COMMENT |
| LOW⚡ | …ts/Views/Snaps/SnapSettings/test/SnapSettings.test.tsx | 480 | // Step 3: Wait for the warning modal to appear and enter the snap name | COMMENT |
| LOW⚡ | …ts/Views/Snaps/SnapSettings/test/SnapSettings.test.tsx | 488 | // Step 4: Click the continue button | COMMENT |
| LOW⚡ | …ts/Views/Snaps/SnapSettings/test/SnapSettings.test.tsx | 491 | // Step 5: Verify that the removal functions are called | COMMENT |
| LOW⚡ | …ichainAccountConnect/MultichainAccountConnect.test.tsx | 2366 | // Step 1: press Connect to navigate to MaliciousWarning | COMMENT |
| LOW⚡ | …ichainAccountConnect/MultichainAccountConnect.test.tsx | 2369 | // Step 2: press Connect Anyway to complete the connection | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 320 | // Step 1: Click "Get started" on introduction screen | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 326 | // Step 2: Answer quiz question 1 (correct answer is RIGHT_ANSWER) | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 334 | // Step 3: Click "Continue" after correct answer | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 344 | // Step 4: Answer quiz question 2 (correct answer is RIGHT_ANSWER) | COMMENT |
| LOW⚡ | …vealPrivateCredential/RevealPrivateCredential.test.tsx | 352 | // Step 5: Click "Continue" to proceed to ActionView | COMMENT |
| LOW | …p/components/Views/NetworkSelector/NetworkSelector.tsx | 208 | * We need to check if the network is non-EVM because we don't support multiple RPC endpoints for non-EVM networks and | COMMENT |
| LOW⚡ | app/store/sagas/rewardsBulkLinkAccountGroups.ts | 381 | // Step 1: Collect all supported accounts from all groups | COMMENT |
| LOW⚡ | app/store/sagas/rewardsBulkLinkAccountGroups.ts | 387 | // Step 2: Batch fetch opt-in status for all addresses | COMMENT |
| LOW⚡ | app/store/sagas/rewardsBulkLinkAccountGroups.ts | 392 | // Step 3: Identify accounts that need linking | COMMENT |
| LOW | app/store/sagas/rewardsBulkLinkAccountGroups.ts | 413 | // Step 4: Process all accounts one-by-one | COMMENT |
| LOW⚡ | tests/tools/e2e-ai-analyzer/index.ts | 534 | // Step 1: Generate initial analysis | COMMENT |
| LOW⚡ | tests/tools/e2e-ai-analyzer/index.ts | 544 | // Step 2: Generate delta analysis (if there are cherry-picks) | COMMENT |
| LOW | tests/tools/e2e-ai-analyzer/index.ts | 564 | // Step 3: Combine results | COMMENT |
| LOW⚡ | tests/smoke-appium/stake/lending-deposit-smoke.spec.ts | 70 | // Step 1: Approve — tap lending footer then confirm the spending cap | COMMENT |
| LOW⚡ | tests/smoke-appium/stake/lending-deposit-smoke.spec.ts | 74 | // Step 2: Deposit — wait for button label to change to "Confirm" | COMMENT |
| LOW | …m/mm-connect/connection-multiclient-resilience.spec.ts | 126 | // Step 1: Disconnect Solana, verify EVM persists | COMMENT |
| LOW | …sts/api-mocking/mock-responses/ens-resolution-mocks.ts | 108 | // Step 1: ENS Registry — resolver(bytes32) | COMMENT |
| LOW | tests/page-objects/wallet/AccountListBottomSheet.ts | 917 | // Step 1: Wait up to initialWaitTimeout for "Syncing" or "Discovering" to appear | COMMENT |
| LOW | tests/page-objects/wallet/AccountListBottomSheet.ts | 960 | // Step 2: Wait for "Syncing" to disappear | COMMENT |
| LOW | tests/page-objects/wallet/AccountListBottomSheet.ts | 972 | // Step 4: Wait for "Discovering" to disappear | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | builds.yml | 57 | # Set only to point a build at a custom Bridge API deployment. | COMMENT |
| LOW | scripts/push-bundle-size.sh | 10 | # Check if running in GitHub Actions | COMMENT |
| LOW | scripts/generate-attributions.sh | 44 | # Check if the script is running in a CI environment (GitHub Actions sets the CI variable to true) | COMMENT |
| LOW | scripts/setup-app-store-connect-api-key.sh | 15 | # Check if exactly 3 arguments are provided | COMMENT |
| LOW | scripts/update-tradingview-template.sh | 84 | # Check if files exist | COMMENT |
| LOW | scripts/set-build-version.sh | 8 | # Check if exactly one arguments are provided | COMMENT |
| LOW | scripts/find-ipa-file.sh | 19 | # Check if IPA path is provided as argument | COMMENT |
| LOW⚡ | scripts/build.sh | 125 | # Check if the --pre flag is present | COMMENT |
| LOW⚡ | scripts/build.sh | 130 | # Check if the --local flag is present | COMMENT |
| LOW⚡ | scripts/build.sh | 136 | # Check if the --clean flag is present | COMMENT |
| LOW⚡ | scripts/build.sh | 142 | # Check if the METAMASK_ENVIRONMENT is valid | COMMENT |
| LOW | scripts/build.sh | 155 | # Check if the METAMASK_BUILD_TYPE is valid | COMMENT |
| LOW | scripts/build.sh | 233 | # Check if GOOGLE_SERVICES_B64_IOS is set | COMMENT |
| LOW | scripts/build.sh | 252 | # Check if GOOGLE_SERVICES_B64_ANDROID is set | COMMENT |
| LOW | scripts/build.sh | 302 | # Check if configuration is valid | COMMENT |
| LOW | scripts/build.sh | 309 | # Check if scheme is valid | COMMENT |
| LOW | scripts/build.sh | 394 | # Check if configuration is valid | COMMENT |
| LOW | scripts/build.sh | 401 | # Check if flavor is valid | COMMENT |
| LOW | scripts/set-semvar-version.sh | 7 | # Check if exactly one arguments are provided | COMMENT |
| LOW | scripts/create-temp-nightly-branch.sh | 14 | # Check if we're in a git repository | COMMENT |
| LOW | scripts/create-temp-nightly-branch.sh | 41 | # Check if the temp-nightly branch already exists locally | COMMENT |
| LOW | scripts/create-temp-nightly-branch.sh | 59 | # Check if branch exists on remote | COMMENT |
| LOW | scripts/cache/set-cache-envs.sh | 14 | # Check if both folder_to_check is provided | COMMENT |
| LOW | .github/workflows/block-stable-main-to-main.yml | 23 | # Check if source branch matches exact pattern: stable-main-X.Y.Z | COMMENT |
| LOW | .github/workflows/block-stable-sync-to-release.yml | 22 | # Check if source branch matches stable-sync-* targeting release/X.Y.Z | COMMENT |
| LOW | .github/scripts/validate-pr-commit.sh | 48 | # Check if PR exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …onfirmationModal/LimitOrderConfirmationModalScreen.tsx | 267 | // Bookkeeping only, and explicitly the amount as requested rather than | COMMENT |
| HIGH | …mationModal/LimitOrderConfirmationModalScreen.test.tsx | 692 | // The dest amount as requested, not the one the tolerance was applied to. | COMMENT |
| HIGH | scripts/build-announce/test-plan-section.ts | 200 | md += `*Generated by AI Test Plan Analyzer (${testPlan.model}) at ${testPlan.generatedAt}*\n\n`; | CODE |
| HIGH | .github/workflows/build-rc-auto.yml | 49 | # The RC build comment includes an AI-generated test plan (inline with collapsible sections). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ponents/UI/Tokens/util/enableAllNetworksFilter.test.ts | 121 | url: 'https://mainnet.infura.io/v3/your-api-key', | CODE |
| HIGH | …tworkSettings/CustomNetworkView/CustomNetwork.test.tsx | 53 | rpcUrl: 'https://mainnet.infura.io/v3/your-api-key', | CODE |
| HIGH | …tworkSettings/CustomNetworkView/CustomNetwork.test.tsx | 145 | rpcUrl: 'https://mainnet.infura.io/v3/your-api-key', | CODE |
| HIGH | …tworkSettings/CustomNetworkView/CustomNetwork.test.tsx | 169 | rpcUrl: 'https://mainnet.infura.io/v3/your-api-key', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | builds.yml | 4 | # Usage: | COMMENT |
| LOW | tests/framework/index.ts | 44 | // Example usage: | COMMENT |
| LOW | tests/scripts/fetch-rn-playground-apk.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/setup-app-store-connect-api-key.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/update-tradingview-template.sh | 10 | # Usage: | COMMENT |
| LOW | scripts/find-ipa-file.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/optimize-images.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/upload-to-testflight.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/get-build-metadata.sh | 7 | # Usage: | COMMENT |
| LOW | …-automation/performance-tests/verify-testmu-app-url.sh | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/push-bundle-size.sh | 31 | # Create a temporary directory | COMMENT |
| MEDIUM | scripts/create-release-draft.sh | 39 | # Create a draft release using GitHub CLI | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ents/UI/Earn/components/FadeInView/FadeInView.test.tsx | 1 | // TODO: Add tests | COMMENT |
| LOW | …/Ramp/Aggregator/components/ErrorViewWithReporting.tsx | 33 | //TODO: implement a mechanisim for user to submit a support ticket | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | locales/languages/en.json | 8850 | "swap_issues": "I'm unable to swap...", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/core/WalletConnect/multichain/tron/adapter.ts | 178 | export async function handleRequest({ | CODE |