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

# getSignerForSmartWalletAccount

# getSignerForSmartWalletAccount

Gets a WalletClient instance for the EOA (Externally Owned Account) that owns the smart wallet account. This signer can be used to sign EVM transactions directly with the underlying EOA.

## Usage

```javascript theme={"system"}
import { getSignerForSmartWalletAccount } from "@dynamic-labs-sdk/zerodev";
import { isEvmWalletAccount } from "@dynamic-labs-sdk/evm";
import { getPrimaryWalletAccount } from "@dynamic-labs-sdk/client";

const walletAccount = getPrimaryWalletAccount();

if (walletAccount && isEvmWalletAccount(walletAccount)) {
  const signer = await getSignerForSmartWalletAccount({
    smartWalletAccount: walletAccount,
  });

  // Use the signer to sign messages or transactions with the EOA
  const signature = await signer.signMessage({
    message: "Hello, World!",
  });
}
```

## Parameters

| Parameter            | Type                       | Description                                                             |
| -------------------- | -------------------------- | ----------------------------------------------------------------------- |
| `smartWalletAccount` | `EvmWalletAccount`         | The smart wallet account to get the signer for                          |
| `client`             | `DynamicClient` (optional) | The Dynamic client instance. Only required when using multiple clients. |

## Returns

`Promise<WalletClient>` - A promise that resolves to a viem WalletClient instance for the EOA.

## Errors

| Error                                  | Description                                                                      |
| -------------------------------------- | -------------------------------------------------------------------------------- |
| `NoSmartWalletAccountSignerFoundError` | Thrown when no signer wallet account is found for the given smart wallet account |

## React

```tsx theme={"system"}
import { getSignerForSmartWalletAccount } from '@dynamic-labs-sdk/zerodev';
import { isEvmWalletAccount } from '@dynamic-labs-sdk/evm';
import { useGetWalletAccounts } from '@dynamic-labs-sdk/react-hooks';
import { useState } from 'react';

function EoaSignButton() {
  const { data: walletAccounts = [] } = useGetWalletAccounts();
  const walletAccount = walletAccounts.find(isEvmWalletAccount);
  const [signature, setSignature] = useState('');

  const handleSign = async () => {
    if (!walletAccount) return;
    const signer = await getSignerForSmartWalletAccount({ smartWalletAccount: walletAccount });
    const sig = await signer.signMessage({ message: 'Hello from the EOA signer' });
    setSignature(sig);
  };

  return (
    <div>
      <button onClick={handleSign} disabled={!walletAccount}>Sign with EOA</button>
      {signature && <p>Signature: {signature.slice(0, 20)}...</p>}
    </div>
  );
}
```

## Related functions

* [createKernelClientForWalletAccount](/javascript/reference/zerodev/create-kernel-client-for-wallet-account) - Create a ZeroDev Kernel client
