Summary

The createWalletClientFromWallet utility function will take any Wallet from the Dynamic context and return a Viem WalletClient with the Account and Chain set.

This is useful if you want to interact with a particular wallet via viem or for other 3rd party packages that require a WalletClient from viem.

Example:

Signing message via viem with the primary wallet

import { useDynamicContext } from '@dynamic-labs/sdk-react-core'
import { createWalletClientFromWallet } from '@dynamic-labs/viem-utils'

const App = () => {
  const { primaryWallet } = useDynamicContext()

  const signMessage = async () => {
    if (!primaryWallet) return

    const walletClient = await createWalletClientFromWallet(primaryWallet)

    // No account is required by viem here, because the account is already setup.
    const signedMessage = await walletClient.signMessage({
      message: 'example message',
    })

    console.log({ signedMessage })
  }

  return <button onClick={() => signMessage()}>Sign message</button>
}

From the wallet client returned by the createWalletClientFromWallet, you can use it with other 3rd party packages that are viem compatible to interact with your primary wallet.

Was this page helpful?