A smart contract developer building on Solana, Ethereum, or another supported chain faces a practical friction point: testing requires switching between mainnets and testnets, but Phantom wallet does not allow users to add custom networks or configure arbitrary RPC endpoints. For teams developing across multiple chains or deploying to staging environments, this limitation forces a choice between using alternative wallets for testing or accepting reduced feature parity between development and production workflows. Understanding why Phantom wallet enforces this constraint and what alternatives exist is essential for teams integrating with this widely deployed browser extension and mobile application.
The constraint reflects a deliberate security and usability trade-off. Custom network configuration creates a larger surface for social engineering, where attackers can trick users into connecting to malicious networks that impersonate legitimate chains. Phantom’s design prioritizes preventing that class of attack by limiting network connections to a curated list of verified chains. For developers, that same limitation means testing smart contracts or integrating with staging DeFi applications requires either accepting Phantom’s fixed network roster or maintaining parallel wallet configurations for testing workflows.
Why Phantom wallet does not support custom network addition
Custom network configuration in Web3 wallets creates a security vulnerability that is difficult to patch at the application level. When a user can add arbitrary networks, an attacker can send a malicious link or craft a transaction request that appears to originate from a legitimate dApp but actually connects the user to a fake network hosted on an attacker-controlled server. The user sees what looks like a normal transaction preview because both the wallet and the fake network are under the attacker’s control. Phantom addressed this by restricting network connections to a pre-approved list that includes Solana, Ethereum, Base, Polygon, Robinhood Chain, Bitcoin, HyperEVM, and Sui.
This approach reduces the cognitive burden on users who must otherwise evaluate whether a network RPC endpoint is legitimate. The trade-off is that developers cannot easily configure Phantom to connect to private testnets, staging environments, or early-stage Layer 2 networks that are not yet included in the official supported networks roster. Teams building on a new chain or deploying to an internal testnet cannot use the same wallet configuration for development that they would use in production, breaking one of the key principles of development-to-production parity.
Phantom’s decision to maintain a fixed network list also simplifies transaction simulation and scam detection. When the wallet knows the valid networks and their official RPC endpoints, it can validate transactions more reliably and reduce false positives in malicious transaction detection. A custom network could provide an RPC endpoint that returns misleading information about token contracts or transaction safety, defeating the plain-language previews and security checks that Phantom provides. By controlling the network list, Phantom ensures that its simulation and detection logic operates on trusted data sources.
The limitation does not reflect a technical constraint but rather an intentional security boundary. Other wallets that support custom networks typically add warnings or use multiple RPC endpoints to verify responses, but these mitigations are imperfect. Phantom chose the simpler and more defensible path of preventing the attack vector altogether, accepting the reduction in developer flexibility as an acceptable trade-off for a smaller surface area and clearer security model.
Workarounds for testnet and staging development
Developers who need to test on Solana’s Devnet, Testnet, or staging environments on other chains can use several strategies to work with Phantom. The first is to maintain a separate browser profile or a dedicated development device with a different wallet client that supports custom networks. MetaMask, for example, allows arbitrary network configuration and can connect to Ethereum Testnet, Polygon Mumbai, and Arbitrum Sepolia. Hardhat and Foundry projects can be tested against local fork environments using these alternative wallets, then validated against Phantom using only the final integration on supported networks.
Solana developers have a more direct path because Devnet and Testnet are publicly accessible and widely documented. The challenge is that Phantom does not expose a configuration option to switch from Mainnet to either of these networks. Instead, developers can create a testing workflow that uses a different wallet for Devnet iteration, then migrates to Phantom for final user acceptance testing on Mainnet-Beta or Mainnet. This separation actually aligns with good practice in many development shops: a staging wallet is often treated differently from a production wallet, with different security assumptions and key management.
Another approach is to build and test dApps using a localhost network or a forked mainnet, then test the frontend integration with Phantom in isolation. Modern dApp frameworks support wallet injection testing where the wallet is mocked or replaced with a test double that implements the Solana or Ethereum JSON-RPC interface. This allows developers to verify that transaction requests, signature prompts, and response handling work correctly without requiring the backend network to be configured in Phantom. The key is to separate wallet integration testing from protocol-level testing, using Phantom only for the former.
For teams integrating with the phantom wallet on multiple chains, the decision becomes whether to maintain chain-specific test wallets or to focus testing on a limited set of target networks. If the dApp supports both Ethereum and Polygon, for instance, testing can focus on Ethereum Sepolia and Polygon Mumbai using an alternative wallet for initial development, then move to Phantom with mainnet and corresponding production networks once the contract interface is stable. This reduces the cognitive load of managing multiple wallet clients.
API integration and transaction signing workflows
Phantom’s architecture exposes a Web3 API through the browser’s window.solana or window.ethereum objects when the extension is installed. Developers using this API must be aware that network switching is not available at runtime. A dApp that attempts to request a network switch via the wallet’s injection API will not succeed if the target network is not in Phantom’s supported list. This differs from wallets like MetaMask, where network switching is a core feature of the injected interface.
The transaction signing workflow in Phantom remains consistent across supported networks. A dApp constructs a transaction object according to the target chain’s specification—Solana Transaction, Ethereum EIP-1559 transaction, or equivalent—and calls wallet.signTransaction() or wallet.request() with the appropriate method. Phantom returns the signed transaction to the dApp, which is then responsible for broadcasting it to the appropriate network. This separation of concerns means that Phantom itself does not validate whether a transaction is being broadcast to the correct RPC endpoint; that responsibility lies with the dApp.
Developers should note that Phantom includes transaction simulation by default, which means the wallet will attempt to preview a transaction’s outcome before the user signs it. This simulation uses Phantom’s configured RPC endpoints for each network. If a dApp’s transaction fails simulation due to an outdated contract state or a network issue, the user will see an error before signing. This is a security feature because it can catch many classes of phishing transactions that attempt to drain accounts, but it can also create false negatives during testing if the contract or network state does not match the expected state.
The plain-language preview feature extends this protection by parsing token transfer amounts, NFT interactions, and permission grants into human-readable descriptions. For developers integrating Phantom into a dApp, this means understanding how transactions will be displayed in the preview. A poorly formatted transaction or an unusual interaction pattern may trigger a scam detection flag or display warnings that users might misinterpret as a problem with the dApp itself. Testing this interaction path requires using Phantom with real transaction previews, which means developers cannot fully isolate their testing from the wallet’s behavior.
Implications for multi-chain smart contract deployment
Teams deploying smart contracts across multiple networks face fragmentation if they want to support Phantom wallet integration from the start. A contract deployed on a new network not yet in Phantom’s supported networks list cannot be easily tested with this wallet until the network is added to Phantom’s roster. The process of requesting network support varies, but it typically involves demonstrating that the network is production-ready, has sufficient transaction volume, and meets Phantom’s security standards.
This creates a chicken-and-egg problem for emerging networks or rollups: dApp developers want to support the most popular wallets, but Phantom supported networks are limited to a curated set. New network teams often work to get Phantom support quickly because wallet availability is a key factor in ecosystem adoption. For developers, this means understanding that Phantom’s network list is not static and checking the wallet’s official documentation regularly to see when new networks are added.
The current roster includes major chains like Ethereum, Polygon, Base, and Solana, but also emerging networks like HyperEVM and Sui. As the list expands, Phantom’s engineering team must verify each network’s RPC endpoints, security properties, and bridge contracts if applicable. This verification process is part of why custom networks are not supported; adding a network requires active curation rather than passive acceptance of user-provided configuration.
For developers targeting a new network not yet in Phantom’s roster, the realistic workflow is to use Phantom for supported networks and accept that early adopters on the new network will need to use alternative wallets or wait for Phantom support. This is not ideal for user experience, but it reflects a deliberate choice to prioritize security over developer convenience. Over time, as networks prove themselves stable and valuable, Phantom support typically follows.
Testing transaction simulation and security features
Phantom’s transaction simulation and scam detection features cannot be fully tested without connecting to actual supported networks. A developer who wants to validate that their dApp’s transaction preview will display correctly in Phantom must either use a testnet version of the contract (if one exists on a supported network) or deploy to mainnet and test with small amounts. This creates a gap in typical development practice where testing is normally isolated from production environments.
The plain-language preview feature parses standard transaction formats like ERC-20 transfers, NFT approvals, and DeFi interactions. If a developer’s contract uses a novel pattern or an unusual interaction, the preview may display a generic message or a warning instead of a clear description. Testing this requires actually invoking the transaction preview in Phantom with a real transaction, which means moving beyond unit tests and integration tests to user acceptance testing with the actual wallet.
Scam detection is more opaque. Phantom flags transactions that match known phishing patterns or attempt to interact with known malicious contracts. The specific rules are not public, so developers cannot replicate the detection logic locally. The best practice is to understand common attack patterns—approval to unknown contracts, transfers of all funds to unusual destinations, signature requests with unusual data—and test that legitimate transactions do not trigger false positives. A transaction that repeatedly flags as suspicious may indicate that the contract interaction pattern is confusing or that scam detection needs adjustment.
For security-focused teams, this opacity is acceptable because it represents a deliberate decision by Phantom to avoid publicizing detection rules that attackers could circumvent. The trade-off is that developers must rely on testing with real networks to validate that their transaction flows work correctly with Phantom’s security checks.
Development workflow recommendations
The most practical approach is to separate contract development, unit testing, and integration testing from Phantom wallet testing. Use a local Solana validator or Ethereum fork for contract development and testing, leveraging tools like Anchor for Solana or Hardhat for Ethereum. These environments allow rapid iteration without wallet dependencies. Deploy to a public testnet or staging environment once the contract interface is stable, then test with Phantom against the final supported network.
For Solana developers specifically, this means testing against Devnet during development, then validating against Mainnet-Beta or Mainnet with Phantom once the contract is ready. For Ethereum developers, test against Sepolia using an alternative wallet that supports custom networks, then move to mainnet Ethereum or Polygon with Phantom for final validation. This workflow acknowledges that Phantom is optimized for end-user security rather than developer flexibility and plans accordingly.
Teams integrating with multiple networks should document which networks are supported by Phantom and plan user acceptance testing accordingly. If a dApp targets Ethereum and Solana, ensure that Phantom testing covers both networks. If it targets a new network not yet in Phantom’s roster, communicate to users that they will need a different wallet for early access and plan to migrate them to Phantom once support is available.
Version control for test wallets is another consideration. Maintain a hardware wallet or a secure vault for test accounts with small amounts of funding, separate from development accounts used for automated testing. This reduces the risk of accidentally exposing production funds or test accounts and keeps the test Phantom wallet stable across environment changes. Document the seed phrase storage location and access procedures so that team members can manage test funds without requiring a single point of key management.
Future directions and ecosystem implications
As the number of supported chains grows, Phantom’s curation burden increases but the practical limitations for developers may ease. If Phantom’s network roster eventually covers most production blockchains that a typical dApp targets, the lack of custom network support becomes a smaller constraint. However, this does not eliminate the need for separate testing workflows on early-stage networks, sidechains, or custom rollups.
One possible future direction is for Phantom to support a „testnet mode“ flag that allows users to opt into a curated list of testnet RPC endpoints for each mainnet network. This would provide a middle ground between no custom network support and full arbitrary configuration. It would require Phantom to maintain and verify testnet endpoints, but it would enable better development-to-production parity for dApp teams. To date, Phantom has not implemented this feature, likely because it adds maintenance burden without proportional security benefit.
The broader implication is that Phantom’s design reflects a philosophy that prioritizes user security over developer convenience. This is a defensible trade-off for a wallet that serves millions of users, many of whom are not technical and rely on the wallet to protect them from their own mistakes and malicious actors. As the Web3 ecosystem matures, this balance may shift, but for now, developers using Phantom should plan their workflows with the understanding that custom network configuration is not available and is unlikely to be added in the near term.
Frequently asked questions
Can I add a custom network or testnet to Phantom wallet?
No. Phantom wallet does not support custom network configuration. The wallet is limited to a curated list of supported networks including Solana, Ethereum, Base, Polygon, Robinhood Chain, Bitcoin, HyperEVM, and Sui. This design choice prevents social engineering attacks where users are tricked into connecting to malicious networks. Developers must use alternative wallets or separate environments for testnet and staging work.
How can I test my smart contract with Phantom if my network is not supported?
Use an alternative Web3 wallet that supports custom networks for development and testing on your own network. Once your contract is stable and ready for production, deploy to a supported network and test with Phantom. Alternatively, use local fork environments and mock wallet injection for testing transaction flows in isolation from network dependencies.
What happens if I try to request a network switch that is not in Phantom’s supported list?
The network switch request will fail silently or return an error. Phantom does not support runtime network switching to networks outside its curated list. A dApp attempting to switch networks should gracefully handle this failure and inform the user that they must use a different wallet or switch networks manually outside the dApp.