Skip to content

intrinsics.%ArrayPrototype%.toReversed警告の原因と解決策

問題の詳細

Reactアプリケーションを初回ロードした際に、コンソールに以下の警告メッセージが表示される問題が発生します:

text
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.toReversed
intrinsics.%ArrayPrototype%.@@unscopables.toSpliced
intrinsics.%ArrayPrototype%.@@unscopables.toSorted

表示される内容から分かること:

  • JavaScript配列プロトタイプのtoReversedtoSplicedtoSortedメソッドに関連
  • lockdown-install.jsというファイルが起因(プロジェクト内ファイルではない)
  • 開発中のみ発生、アプリケーション本体の機能には影響なし

根本原因

この警告はMetaMaskブラウザ拡張機能(特にEth-Phishing-Detectモジュール)に起因しています:

  • ES2023新機能との非互換性:
    ES2023で追加されたtoReversed/toSorted/toSplicedなどの新しい配列メソッドを、MetaMaskのセキュリティチェック機構が「未知の変更」と誤認します。
  • セキュリティロジック
    MetaMaskは組み込みオブジェクトのプロトタイプが改ざんされていないか常時監視。未サポートの新規メソッドを「潜在的脅威」とみなし強制的に削除し警告を発行します。
  • 確認方法
    MetaMaskのポップアップでコンソールを開き以下を実行:
    js
    // MetaMask環境ではundefinedとなる
    console.log([].toSorted); // undefined
    console.log([].toReversed); // undefined

重要

この問題は個人のReactコードに起因するものではありません
アプリケーション自体にバグがあるわけではなく、開発時のみ発生する拡張機能側の警告です。

解決方法

1. 根本的解決(MetaMaskの更新待ち)

MetaMaskチームはこの問題を認識しており、将来的なバージョンアップで対応予定です。
GitHub Issueで進捗を追跡できます。

2. 一時的回避策

開発中のみ、以下のいずれかの方法で警告を非表示にできます:

  • MetaMask拡張の無効化
    ブラウザの拡張機能管理画面から一時的にOFFにします。

    bash
    chrome://extensions/  # Chromeの場合
  • シークレットモードでの開発
    MetaMaskがロードされない環境で開発します。

技術的背景

  • ES2023の新メソッド

    • toReversed(): 配列を反転させた新配列を生成
    • toSorted(): ソート結果の新配列を生成
    • toSpliced(): 一部切り取り後の新配列を生成
    • (既存メソッドは配列自体を変更するが、これらのメソッドは非破壊的)
  • MetaMaskのロックダウン機構

注意点

本番環境ではエンドユーザーの環境に依存しないため、MetaMask未使用ユーザーには警告が表示されません。デプロイ時の動作へ影響はありません。

推奨対応

以下の優先順位で対処することを推奨します:

  1. 警告を無視して開発を継続(実害なし)
  2. 開発時のみMetaMaskを無効化(コンソールがクリーンに)
  3. 問題のGitHub Issueをウォッチ(更新通知を受け取る)

この挙動はMetaMask v10.34以上で修正される見込みですが、現時点では安全に無視できる警告として扱ってください。