> ## 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.

# canConnectWithHardwareWallet

> Check if a wallet provider supports a given hardware wallet vendor

Checks whether a specific wallet provider supports connecting via a hardware wallet vendor (e.g.,
Ledger). Use this before presenting hardware wallet options to the user, or to filter the list of
available providers to only those compatible with a hardware device.

## Usage

```javascript theme={"system"}
import {
  getAvailableWalletsToConnect,
  canConnectWithHardwareWallet,
} from '@dynamic-labs-sdk/client';

const ledgerProvider = getAvailableWalletsToConnect().find((provider) =>
  canConnectWithHardwareWallet({
    walletProviderKey: provider.key,
    hardwareWalletVendor: 'ledger',
  })
);

if (ledgerProvider) {
  console.log(`${ledgerProvider.name} supports Ledger`);
}
```

## Parameters

| Parameter              | Type                       | Description                                                                                                             |
| ---------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `walletProviderKey`    | `string`                   | The key identifying the wallet provider. Use `getAvailableWalletsToConnect()` to get available providers and their keys |
| `hardwareWalletVendor` | `HardwareWalletVendor`     | The hardware wallet vendor to check for. Currently `'ledger'`                                                           |
| `client`               | `DynamicClient` (optional) | The Dynamic client instance. Only required when using multiple clients.                                                 |

## Returns

`boolean` — `true` if the wallet provider declares support for the given hardware wallet vendor,
`false` otherwise.

## Examples

### Filter providers to Ledger-compatible ones

```javascript theme={"system"}
import {
  canConnectWithHardwareWallet,
  getAvailableWalletsToConnect,
} from '@dynamic-labs-sdk/client';

const allProviders = getAvailableWalletsToConnect();

const ledgerProviders = allProviders.filter((provider) =>
  canConnectWithHardwareWallet({
    walletProviderKey: provider.key,
    hardwareWalletVendor: 'ledger',
  })
);
```

### Connect with the first available Ledger provider

```javascript theme={"system"}
import {
  getAvailableWalletsToConnect,
  canConnectWithHardwareWallet,
  connectWithWalletProvider,
} from '@dynamic-labs-sdk/client';

const ledgerProvider = getAvailableWalletsToConnect().find((provider) =>
  canConnectWithHardwareWallet({
    walletProviderKey: provider.key,
    hardwareWalletVendor: 'ledger',
  })
);

if (ledgerProvider) {
  const walletAccount = await connectWithWalletProvider({
    walletProviderKey: ledgerProvider.key,
    hardwareWalletVendor: 'ledger',
  });
}
```

## React

`canConnectWithHardwareWallet` is synchronous — filter the list from `useGetAvailableWalletProvidersData` in [`@dynamic-labs-sdk/react-hooks`](/javascript/reference/react-hooks), which updates when providers change. See [Getting available wallets to connect](/javascript/reference/wallets/get-available-wallets-to-connect) for the same pattern.

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

function LedgerProviderList() {
  const { data: providers = [] } = useGetAvailableWalletProvidersData();
  const { mutate: connectWithWalletProvider } = useConnectWithWalletProvider();
  const ledgerProviders = providers.filter((p) =>
    canConnectWithHardwareWallet({
      walletProviderKey: p.key,
      hardwareWalletVendor: 'ledger',
    }),
  );

  return (
    <ul>
      {ledgerProviders.map((p) => (
        <li key={p.key}>
          <button
            onClick={() =>
              connectWithWalletProvider({
                walletProviderKey: p.key,
                hardwareWalletVendor: 'ledger',
              })
            }
          >
            Connect via {p.name}
          </button>
        </li>
      ))}
    </ul>
  );
}
```

## Related functions

* [isHardwareWalletAccount](/javascript/reference/client/is-hardware-wallet-account) - Check if a connected account came from a hardware wallet
* [connectWithWalletProvider](/javascript/reference/wallets/connect-and-verify-wallet) - Connect a wallet (supports `hardwareWalletVendor`)
* [Hardware Wallet Support](/javascript/reference/wallets/hardware-wallets) - Overview of hardware wallet support
