> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://www.openfort.io/api/mcp` to find what you need.
>
> **Have feedback?** Use `submit_feedback` on the same MCP server.

# Solana wallet configuration

Configure Solana (SVM) embedded wallets through the `solana` key of `walletConfig`. For shared options and the Ethereum setup, see [Wallet configuration](https://www.openfort.io/docs/products/embedded-wallet/react/wallet).

Solana does not use wagmi, so no `WagmiProvider`, `OpenfortWagmiBridge`, or `QueryClientProvider` is needed. Install `@tanstack/react-query` as a peer dependency; `OpenfortProvider` creates a query client when the app does not already provide one.

```tsx [Providers.tsx]
import { ChainTypeEnum, OpenfortProvider } from "@openfort/react"

export function Providers({ children }: { children: React.ReactNode }) {
  return (
    <OpenfortProvider  // [!code focus]
      publishableKey="YOUR_OPENFORT_PUBLISHABLE_KEY"
      walletConfig={{  // [!code focus]
        shieldPublishableKey: "YOUR_SHIELD_PUBLISHABLE_KEY",  // [!code focus]
        chainType: ChainTypeEnum.SVM,  // [!code focus]
        solana: {  // [!code focus]
          cluster: "devnet",  // [!code focus]
          rpcUrls: { devnet: "https://api.devnet.solana.com" },  // [!code focus]
          commitment: "confirmed",  // [!code focus]
        },  // [!code focus]
        connectOnLogin: true,  // [!code focus]
      }}  // [!code focus]
    >
      {children}
    </OpenfortProvider>  // [!code focus]
  )
}
```

## SolanaConfig

```ts
export type SolanaConfig = {
  /** Solana cluster to connect to */
  cluster: SolanaCluster
  /** RPC URLs per cluster (mirrors ethereum.rpcUrls) */
  rpcUrls?: Partial<Record<'mainnet-beta' | 'devnet' | 'testnet', string>>
  /** Commitment level for transactions (default: 'confirmed') */
  commitment?: SolanaCommitment
  /** UI options for Solana-connected screens */
  ui?: SolanaUIOptions
}
```

## Cluster configuration

* `cluster` — **Required.** One of `'mainnet-beta'`, `'devnet'`, or `'testnet'`.
* `rpcUrls` — Optional. Maps cluster name to an RPC endpoint. When omitted, the SDK uses default Solana RPC URLs (`getDefaultSolanaRpcUrl` from `@openfort/react`).
* `commitment` — Optional. Transaction commitment level. Default: `'confirmed'`. Options: `'processed'` | `'confirmed'` | `'finalized'`.
* `ui` — Optional. `{ customAvatar?: React.ComponentType<{ address: string }> }` — custom avatar component shown in Solana-connected screens, receives the wallet address.

:::info
On Solana, the account type is always an EOA. Smart accounts and delegated accounts are Ethereum-only — see [Account types](https://www.openfort.io/docs/products/embedded-wallet/account-types).
:::

## Next steps

* [Send a transaction (Solana)](https://www.openfort.io/docs/products/embedded-wallet/react/wallet/actions/send-transaction/solana)
* [Sign a message (Solana)](https://www.openfort.io/docs/products/embedded-wallet/react/wallet/actions/sign-message-solana)
