intrinsics.%ArrayPrototype%.toReversed
警告の原因と解決策
問題の詳細
Reactアプリケーションを初回ロードした際に、コンソールに以下の警告メッセージが表示される問題が発生します:
text
lockdown-install.js:1 Removing intrinsics.%ArrayPrototype%.toReversed
intrinsics.%ArrayPrototype%.@@unscopables.toSpliced
intrinsics.%ArrayPrototype%.@@unscopables.toSorted
表示される内容から分かること:
- JavaScript配列プロトタイプの
toReversed
、toSpliced
、toSorted
メソッドに関連 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にします。bashchrome://extensions/ # Chromeの場合
シークレットモードでの開発
MetaMaskがロードされない環境で開発します。
技術的背景
ES2023の新メソッド
toReversed()
: 配列を反転させた新配列を生成toSorted()
: ソート結果の新配列を生成toSpliced()
: 一部切り取り後の新配列を生成- (既存メソッドは配列自体を変更するが、これらのメソッドは非破壊的)
MetaMaskのロックダウン機構
注意点
本番環境ではエンドユーザーの環境に依存しないため、MetaMask未使用ユーザーには警告が表示されません。デプロイ時の動作へ影響はありません。
推奨対応
以下の優先順位で対処することを推奨します:
- 警告を無視して開発を継続(実害なし)
- 開発時のみMetaMaskを無効化(コンソールがクリーンに)
- 問題のGitHub Issueをウォッチ(更新通知を受け取る)
この挙動はMetaMask v10.34以上で修正される見込みですが、現時点では安全に無視できる警告として扱ってください。