Adding My Chain is not working

This is my Chain Details
{
blockExplorerUrl: “https://explorer.sentinel.co”,
chainId: “sentinelhub-2”,
chainNamespace: CHAIN_NAMESPACES.OTHER,
displayName: “Sentinel”,
logo: “”,
rpcTarget: “https://rpc.sentinel.co:443”,
ticker: “dVPN”,
tickerName: “Sentinel”,
}

Which is showing in Keplr too, but when I put this in dashboard.web3auth.io → Chains & Networks
not just Keplr, no External Wallets are showing.

I even check in Authentication → External Wallets section, everything is there. Still I am unable to see none of the Wallets



Thanks for providing detailed information and screenshots about your issue with adding the Sentinel chain and not seeing Keplr or any external wallets in the Web3Auth Plug n Play dashboard.

Summary of Your Issue

  • SDK: Web3Auth Plug n Play (Dashboard)
  • Platform: Web (Dashboard configuration)
  • Chain Details Provided:
    {
      blockExplorerUrl: "https://explorer.sentinel.co",
      chainId: "sentinelhub-2",
      chainNamespace: CHAIN_NAMESPACES.OTHER,
      displayName: "Sentinel",
      logo: "",
      rpcTarget: "https://rpc.sentinel.co:443",
      ticker: "dVPN",
      tickerName: "Sentinel",
    }
    
  • Problem: After adding this custom chain in the dashboard (Chains & Networks), no external wallets (including Keplr) are visible in the authentication modal, even though they are enabled in the dashboard’s External Wallets section.
  • Screenshots: Included (not visible here, but referenced).

Possible Cause

Web3Auth’s Plug n Play dashboard currently supports external wallets only for certain chain namespaces. According to Web3Auth Documentation, external wallets (like Keplr) are enabled for supported EVM and Solana chains. The CHAIN_NAMESPACES.OTHER is used for non-EVM/non-Solana chains, and external wallet support is limited or unavailable for these.

Keplr is supported only for Cosmos-based chains, and the chain must be registered as a Cosmos chain, not as CHAIN_NAMESPACES.OTHER. Your configuration uses CHAIN_NAMESPACES.OTHER, which is likely why external wallets are not appearing.


Recommended Next Steps

  1. Check Chain Namespace:

    • If Sentinel is Cosmos-based and Keplr supports it, try changing chainNamespace to CHAIN_NAMESPACES.COSMOS in your chain configuration.
    • Refer to Web3Auth Cosmos Integration Docs.
  2. Supported Chains:

  3. Known Limitation:

    • If the chain is not EVM or Solana, and not officially supported as Cosmos, external wallets may not be available in Plug n Play dashboard at this time.

Action Items for You

  • Please confirm if Sentinel is a Cosmos-based chain and, if so, update the chainNamespace accordingly.
  • If you have already tried with CHAIN_NAMESPACES.COSMOS and it still does not work, let us know.
  • If you are using a custom integration (SDK, not Plug n Play), please share your Web3Auth initialization code for further review.

References:


Let us know if changing the chain namespace resolves your issue, or if you need further help!

Note: This response was generated by an AI bot and may require further verification. The Web3Auth support team has tracked this issue and will be responding as soon as possible.

Additionally, we would recommend you to join our biweekly Office Hours to get this resolved even faster. Web3Auth Developer Office Hours

in v9.x I used to use @web3auth-nomodal

Then I used to do this


import { Web3AuthNoModal as Web3Auth } from "@web3auth/no-modal";
import { CommonPrivateKeyProvider } from "@web3auth/base-provider";
import { web3AuthChainConfig, web3AuthCliedId } from "./constants";
import { ADAPTER_EVENTS, WEB3AUTH_NETWORK } from "@web3auth/base";
import { AuthAdapter } from "@web3auth/auth-adapter";
import { KEPLR_CONNECTED, KEPLR_CONNECTING, KEPLR_DISCONNECTED, KEPLR_ERRORED } from "./events.keplr";

export const initWeb3Auth = async ({
  handleKeplrConnected = ()=> { },
  handleKeplrConnecting = ()=> { },
  handleKeplrDisconnected = ()=> { },
  handleKeplrErrorred = ()=> { },
  handleWeb3AuthConnected = ()=> { },
  handleWeb3AuthConnecting = ()=> { },
  handleWeb3AuthDisconnected = ()=> { },
  handleWeb3AuthErrored = ()=> { },
}) => {
  try {
    const privateKeyProvider = new CommonPrivateKeyProvider({
      config: { chainConfig: web3AuthChainConfig },
    });

    window.web3auth = new Web3Auth({
      clientId: web3AuthCliedId,
      privateKeyProvider,
      uiConfig: {
        appName: "Sentinel AI",
        logoDark: `${window.location.origin}/logo512.svg`,
        logoLight: `${window.location.origin}/logo512.svg`,
        mode: "auto",
        useLogoLoader: true,
      },
      web3AuthNetwork: WEB3AUTH_NETWORK.SAPPHIRE_MAINNET,
    });

    const authAdapter = new AuthAdapter({
      adapterSettings: {},
      loginSettings: { mfaLevel: "optional" },
    });

    window.web3auth.configureAdapter(authAdapter);
    await window.web3auth.init();

    window.web3auth.on(ADAPTER_EVENTS.CONNECTING, handleWeb3AuthConnecting);
    window.web3auth.on(ADAPTER_EVENTS.CONNECTED, handleWeb3AuthConnected);
    window.web3auth.on(ADAPTER_EVENTS.DISCONNECTED, handleWeb3AuthDisconnected);
    window.web3auth.on(ADAPTER_EVENTS.ERRORED, handleWeb3AuthErrored);
    window.addEventListener(KEPLR_CONNECTED, handleKeplrConnected);
    window.addEventListener(KEPLR_DISCONNECTED, handleKeplrDisconnected);
    window.addEventListener(KEPLR_CONNECTING, handleKeplrConnecting);
    window.addEventListener(KEPLR_ERRORED, handleKeplrErrorred);
    return true;
  } catch (e) {
    console.log("::ERROR::", e);
    return false;
  } 
};
import { WALLET_ADAPTERS } from "@web3auth/base";
import { KEPLER_WEBSITE_LINK, chainID } from "./constants";
import { keplrConnectedEvent, keplrConnectingEvent, keplrDisconnectedEvent, keplrErroredEvent } from "./events.keplr";
import accountServices from "@services/account.services";

export const loginWithKeplr = async () => {
  try {
    if (!window.keplr) {
      window.open(KEPLER_WEBSITE_LINK);
      return;
    }
    await logout();
    window.dispatchEvent(keplrConnectingEvent());
    const { nonce = "" } = await accountServices.fetchNonce();
    const details = await window.keplr.getKey(chainID);
    const { bech32Address: address = "" } = details;
    window.dispatchEvent(keplrConnectedEvent({ address, chainID, nonce }));
  } catch (error) {
    window.dispatchEvent(keplrErroredEvent({ error }));
  }
};

export const loginWithEmail = async (email) => {
  try {
    if (!window.web3auth) {
      return;
    }
    await logout();
    await window.web3auth.connectTo(WALLET_ADAPTERS.AUTH, {
      extraLoginOptions: { login_hint: email },
      loginProvider: "email_passwordless",
    });
  } catch (e) {
    console.log("ERROR_loginWithGoogle", e);
  }
};

export const loginWithGoogle = async () => {
  try {
    if (!window.web3auth) {
      return;
    }
    await logout();
    await window.web3auth.connectTo(WALLET_ADAPTERS.AUTH, {
      loginProvider: "google",
    });
  } catch (e) {
    console.log("ERROR_loginWithGoogle", e);
  }
};

export const logout = async () => {
  console.log("LOGOUT CALLED", window.web3auth.connected);
  try {
    if (window.keplr) {
      await window.keplr.disable();
      window.dispatchEvent(keplrDisconnectedEvent());
    }
    if (window.web3auth && window.web3auth.connected) {
      await window.web3auth.logout();
    }
  } catch (e) {
    console.log(e);
  }    
};

If you see, I handled keplr with window.keplr based on user extension availablity. fetched nonce from backend and verified there.

But, after updating to v10.x-> I am unable to connect the AuthAdapter as configureAdapter is not there in Web3AuthNoModal.

When I add Cosmos Chain to my Chains & Networks, Keplr is showing, but my Chain is not showing in Connect of Keplr, some other chains are showing, which I didn’t select anywhere
Also, I want not to show MetaMask anywhere in my app

I would be using this UI for login

@w3abot

Just reminding.

Please take a look into this