Switching Networks
If your application requires a specific network, you can programmatically request a network switch or prompt the user to change networks manually through the wallet interface.
Programmatic Network Switch
Call the asynchronous switchNetwork() method to initiate a network switch. The wallet prompts the user for approval. Once confirmed, WalletConnect automatically updates the network property to reflect the change.
The following networks are available for switching:
- mainnet
- testnet
- regtest
import { useWalletConnect, WalletNetwork } from "@btc-vision/walletconnect";
function App() {
const { switchNetwork } = useWalletConnect()
return (
<button onClick={async () => { await switchNetwork(WalletNetwork.testnet) } }>
Switch to Testnet
</button>
)
}
Manual Network Switch
The user can also switch networks directly from the wallet interface. When this occurs, the network property updates automatically.
Click the network selector in the upper-right corner of the extension and select the desired network:

Monitoring for Network Changes
WalletConnect provides two methods for monitoring network changes:
- Observe the network property using React effects.
- Register an event listener on the walletInstance.
Observe the network Property
Observe network property using React effects. This property returns null when disconnected and updates when:
- A wallet connection is established.
- The network changes.
- The wallet disconnects.
- The user confirms a network switch through the wallet interface.
import { useWalletConnect } from "@btc-vision/walletconnect";
function App() {
const {connectToWallet, network} = useWalletConnect()
useEffect(() => {
if (network) {
console.log("Connected to network: ", network.network);
}
}, [network]);
return (
<button onClick={async () => { await connectToWallet('OP_WALLET')} } >Connect to OP_WALLET</button>
)
}Register an Event Listener
Call on() method on the walletInstance to register a listener for network change events. Remove the listener with removeListener() when no longer needed. Note that the event name is specific to each wallet provider.
import { useWalletConnect, type WalletConnectNetwork } from "@btc-vision/walletconnect";
function App() {
const {connectToWallet, walletInstance} = useWalletConnect()
const chainChanged = useCallback((chain: WalletConnectNetwork) => {
// Do something knowing network changed
console.log("NetworkChanged", chain.network)
}, []);
useEffect(() => {
if (walletInstance) {
walletInstance.on("chainChanged", chainChanged);
return () => {
walletInstance.removeListener("chainChanged", chainChanged);
};
}
}, [walletInstance, chainChanged]);
return (
<button onClick={async () => { await connectToWallet('OP_WALLET')} } >Connect to OP_WALLET</button>
)
}