> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Getting Available Wallets to Connect

In Dynamic, we treat each chain (EVM, SOL, etc.) and each wallet app (or wallet provider) as a separate entity.

For example, if you have both EVM and SOL chains enabled and their extension added to your Dynamic Client, and then user has MetaMask and Phantom installed,
you will get four wallet providers data in the list returned by `getAvailableWalletProvidersData`, with keys like `metamaskevm`, `metamasksol`, `phantomevm` and `phantomsol`.

The list of available wallet providers data will depend on which extensions you have added to your Dynamic Client, and which wallets support each standard or protocol.

## Usage

<Tabs>
  <Tab title="JavaScript">
    ```javascript theme={"system"}
    import { connectAndVerifyWithWalletProvider, getAvailableWalletProvidersData } from '@dynamic-labs-sdk/client';

    const walletProvidersData = getAvailableWalletProvidersData();

    walletProvidersData.forEach((provider) => {
      console.log(provider.key, provider.metadata.displayName);
    });
    ```
  </Tab>

  <Tab title="React">
    Subscribe to `walletProviderChanged` so your wallet list re-renders whenever extensions load:

    ```tsx theme={"system"}
    import { connectAndVerifyWithWalletProvider } from '@dynamic-labs-sdk/client';
    import { useGetAvailableWalletProvidersData } from '@dynamic-labs-sdk/react-hooks';

    function WalletPicker() {
      const { data: providers = [] } = useGetAvailableWalletProvidersData();

      return (
        <ul>
          {providers.map((provider) => (
            <li key={provider.key}>
              <button
                onClick={() =>
                  connectAndVerifyWithWalletProvider({ walletProviderKey: provider.key })
                }
              >
                <img src={provider.metadata.iconUrl} alt="" />
                {provider.metadata.displayName}
              </button>
            </li>
          ))}
        </ul>
      );
    }
    ```
  </Tab>
</Tabs>

You can also group or filter by wallet app (like metamask, phantom, etc) by using the `groupKey` field,
Or by chain (like all EVM wallets, or all SOL wallets, etc.) by using the `chain` field.

## Related functions

* [Connecting and Verifying a Wallet](/javascript/reference/wallets/connect-and-verify-wallet)
* [Getting Networks Data](/javascript/reference/wallets/get-networks-data)
