Web3Auth ContextConfig 'hideReceive' is not working

Hello,

I noticed that the ‘receive’ button on my Wallet UI modal is removed even I specified hideReceive in the Web3AuthContextConfig configuration as false as shown below

const web3AuthContextConfig: Web3AuthContextConfig = {
    web3AuthOptions: {
        clientId, // Get your Client ID from Web3Auth Dashboard
        web3AuthNetwork: network === "mainnet" ?
            WEB3AUTH_NETWORK.SAPPHIRE_MAINNET :
            WEB3AUTH_NETWORK.SAPPHIRE_DEVNET, // or WEB3AUTH_NETWORK.SAPPHIRE_DEVNET
        modalConfig: {
            connectors: {
                [WALLET_CONNECTORS.AUTH]: {
                    label: "auth",
                },
            },
            hideWalletDiscovery: true, // set to true to hide external wallets discovery
        },
        walletServicesConfig: {
            modalZIndex: 99999,
            enableKeyExport: false,
            whiteLabel: {
                showWidgetButton: false,
                hideNftDisplay: false,
                hideTokenDisplay: false,
                hideTransfers: false,
                hideTopup: false,
                hideReceive: false,
                hideSwap: false,
                hideShowAllTokens: false,
                hideWalletConnect: false,
                defaultPortfolio: "token",
            },
        }
    },
};
  • Environment details

    • @web3auth/modal v10.5.6

    • Tested on Firefox browser

    • Framework: React v19.1

Does anyone face the same issue?

Hi Phakphum — thanks for the clear report, and sorry you’re seeing that behavior. I’m treating this as an issue report (not a feature ask). Here’s what I pulled from your message and what will help the support/dev team investigate quickly.

Extracted details

  • SDK / package shown: @web3auth/modal
  • SDK version: v10.5.6
  • Platform / framework: React v19.1
  • Browser tested: Firefox
  • Config snippet: web3AuthContextConfig with walletServicesConfig.whiteLabel.hideReceive: false (you included the snippet)

Quick checklist & likely causes to try

  1. Confirm the whiteLabel config is actually being applied at runtime
    • Log or console.inspect the final options passed to the Web3Auth provider to confirm walletServicesConfig.whiteLabel exists and contains hideReceive: false. If the config is not present at provider initialization, the modal will use defaults.
  2. Check version compatibility
    • Some whiteLabel options were added/changed across wallet-services / modal versions. Please confirm the versions of @web3auth/wallet-services (if used) and any related packages. If you’re on an older wallet-services version, hideReceive may not be supported.
  3. Check for console warnings/errors
    • Look for warnings like “unknown config key” or deprecation messages in the browser console when the modal initializes.
  4. Quick functional tests
    • Toggle hideReceive to true to verify that the Receive button actually disappears (verifies the flag has effect). Try changing another whiteLabel flag (e.g., hideSwap) and see whether they take effect.
    • Test in Chrome or a fresh/incognito profile to rule out extension or CSS interference.
  5. Reproduction minimal case
    • If possible, create a tiny reproducible example (CodeSandbox or small repo) that only mounts Web3Auth with your config — that helps speed diagnosis.

What I need from you (only if possible — I don’t want to spam)

  • The code where you initialize Web3Auth / Web3AuthProvider (initialization & login snippets). You showed the context config but I need to see how/where it’s passed in.
  • The version of @web3auth/wallet-services (if present) and any other Web3Auth packages you’re using.
  • A screenshot or copy of the browser console output during modal initialization (if there are any warnings or errors).

Possible short-term workaround

  • If you need the Receive button back immediately, you can implement a simple custom Receive button in your app UI that opens the wallet address modal (or displays the address/QR) until we confirm the underlying config behavior.

If you can share the initialization snippet and wallet-services version (and a console log if you see warnings), I’ll forward this with the collected details to the support team and suggest next steps. I appreciate the clear report — we’ll get this tracked.

Note: This response was generated by an AI bot and may require further verification. The MetaMask Community 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. MetaMask Developer Office Hours

Hello,

I confirmed that the whiteLabel config is actually being applied at runtime by log or console.inspect the final options passed to the web3auth provider.

I don’t use @web3auth/wallet-services at this point.
I don’t have any warnings or errors related to web3auth or “unknown config key”

I tested other whiteLabel flags such as hideSwap and it works normally.

I passed the context config to the react component as shown below

const Web3AuthDevApp = () => {
  console.log(web3AuthContextConfig);

  return (
    <>
      <Web3AuthProvider config={web3AuthContextConfig}>
        <QueryClientProvider client={queryClient}>
          <WagmiProvider>
             ... //Other components including component to toggle wallet UI
          </WagmiProvider>
        </QueryClientProvider>
      </Web3AuthProvider>
    </>
  )
}

Hello again,

After testing few flags, I noticed some strange behaviors

Example #1

WhiteLabel properties

                showWidgetButton: false,
                hideNftDisplay: false,
                hideTokenDisplay: false,
                hideTransfers: false,
                hideTopup: true,  // <-- Change to true
                hideReceive: false,
                hideSwap: false,
                hideShowAllTokens: false,
                hideWalletConnect: false,
                defaultPortfolio: "token"

Output

It shows ‘Receive’ button

Example #2

                showWidgetButton: false,
                hideNftDisplay: false,
                hideTokenDisplay: false,
                hideTransfers: false,
                hideTopup: false,  // <-- Change to false
                hideReceive: false,
                hideSwap: false,
                hideShowAllTokens: false,
                hideWalletConnect: false,
                defaultPortfolio: "token",

Output

The ‘receive’ button is replaced by ‘Add Funds’ button

This is an expected behaviour as with the latest version we have clubbed the receive via QR into the Funding section of the WalletUI. read more here: