Add or Switch to Harmony chain on Metamask

This tutorial help developers to interact with Metamask installed on a user's device, to add (or switch to) the Harmony chain's network.

Harmony is a multi-sharded chain, currently with shard 0, 1, 2 and 3 running on Mainnet. To execute the code snippet below successfull, you can test on a device that has Metamask extension / add-on installed and visible to your app.

// Harmony's Shard ID {0..3}
const shardId = 0;

try {
  const walletAddEthereumChainRequest = await ethereum.request({
    method: 'wallet_addEthereumChain',
    params: [
        chainId: '0x' + Number(1666600000 + shardId).toString(16),
        chainName: 'Harmony Mainnet Shard ' + shardId,
        nativeCurrency: { name: 'ONE', symbol: 'ONE', decimals: 18 },
        rpcUrls: ['https://' + (shardId === 0 ? '' : 'api.s' + shardId + '')],
        blockExplorerUrls: [''],
} catch (error) {

Please note that window.web3 has been deprecated. Use window.ethereum instead. To migrate, use this guide from Metamask.

When this code snippet is executed, users will see message to approve adding or switching to correct Harmony chain.

You can see more information about Metamask documentation related to the Ethereum Provider API at

To see a full list of Chain IDs, please visit and search for Harmony

Last updated