WalletConnectProvider requires a config with your registered client ID. The SDK uses DogeOS production services automatically. The remaining options control your app’s chains, wallet choices, and appearance.
import type { WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
const dogeConfig: WalletConnectKitConfig = {
clientId: "YOUR_DOGEOS_CLIENT_ID",
}Fields#
| Field | Required | Purpose |
|---|---|---|
clientId | Yes | Your registered DogeOS SDK client ID |
chains | No | Chains your app supports, grouped by family |
defaultConnectChain | No | Chain family to show first, such as "evm" |
login | No | Which email, social, and external wallet options appear |
metadata | No | App name, URL, and icon shown in WalletConnect sessions |
walletConnectProjectId | No | Your own WalletConnect project ID, if needed |
theme | No | Colors and light/dark mode |
connectors | No | Custom wallet selection from getConnectors() |
Client ID#
Request a client ID through the Partner Interest Form . It is public and belongs in your browser configuration.
Have your deployed app origin and local development origin registered for the same integration. Use the exact scheme, hostname, and port you registered; localhost and 127.0.0.1 are different hosts.
Chains#
Configure the chains your app uses. DogeOS Chikyū Testnet belongs under evm; it is separate from the Dogecoin network. Selecting a testnet changes the blockchain your app connects to, while the SDK continues to use its production services.
Save this chain definition in chains.ts:
import type { Chain } from "@dogeos/dogeos-sdk"
export const dogeOSChikyuTestnet = {
id: 6281971,
name: "DogeOS Chikyū Testnet",
nativeCurrency: { name: "DOGE", symbol: "DOGE", decimals: 18 },
rpcUrls: { default: { http: ["https://rpc.testnet.dogeos.com/"] } },
blockExplorers: {
default: {
name: "DogeOS L2Scan",
url: "https://dogeos-testnet.l2scan.co",
},
},
testnet: true,
} satisfies ChainPass it under chains.evm:
import { ChainTypeEnum, type WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
import { dogeOSChikyuTestnet } from "./chains"
export const dogeConfig: WalletConnectKitConfig = {
clientId: "YOUR_DOGEOS_CLIENT_ID",
defaultConnectChain: ChainTypeEnum.EVM,
chains: { evm: [dogeOSChikyuTestnet] },
}Dynamic Chains#
For an app that also supports Solana or Dogecoin, use getChains() to obtain their network entries. This preserves the chain identifiers expected by those wallets. Load the configuration before mounting the provider, and show a retry option if loading fails.
import { ChainTypeEnum, getChains, type WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
import { dogeOSChikyuTestnet } from "./chains"
export async function createDogeConfig(): Promise<WalletConnectKitConfig> {
const { solana, dogecoin } = await getChains()
if (!solana?.length || !dogecoin?.length) {
throw new Error("Required wallet networks are unavailable")
}
return {
clientId: "YOUR_DOGEOS_CLIENT_ID",
defaultConnectChain: ChainTypeEnum.EVM,
chains: { evm: [dogeOSChikyuTestnet], solana, dogecoin },
}
}getChains() rejects if the network request fails or returns no chains. Omit this step when you only need the explicit EVM configuration above.
Connectors#
The provider loads wallet choices automatically. You only need connectors when customizing that selection; obtain the entries with getConnectors(). Handle a rejected request before mounting the provider.
These configuration entries are different from the live WalletConnector accepted by connect(). Use openModal() for the standard connection flow.
Login#
By default, users can sign in with email, Google, or X, or connect an external wallet. DogeOS manages social authentication; you only choose which methods to display.
For example, to show only Google and X:
import type { WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
const dogeConfig: WalletConnectKitConfig = {
clientId: "YOUR_DOGEOS_CLIENT_ID",
login: {
basicLogins: [],
socialLogins: [{ type: "google" }, { type: "x" }],
},
}Each omitted array keeps its default methods. Set an array to [] to disable those methods. To show only external wallets, set basicLogins: ["externalWallets"] and socialLogins: []; see External-Wallet-Only Mode.
WalletConnect#
The SDK includes a default WalletConnect project ID. If your app uses WalletConnect, supply your app’s metadata so users recognize it in their wallet. Set walletConnectProjectId if you manage your own project.
import type { WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
const dogeConfig: WalletConnectKitConfig = {
clientId: "YOUR_DOGEOS_CLIENT_ID",
metadata: {
name: "Your App",
description: "Your DogeOS application",
url: "https://your-app.example",
icons: ["https://your-app.example/icon.png"],
},
}Theme#
Set defaultTheme to your app’s current mode. Supply only the color tokens you want to change; the SDK merges them with its default colors.
import type { WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
const dogeConfig: WalletConnectKitConfig = {
clientId: "YOUR_DOGEOS_CLIENT_ID",
theme: {
defaultTheme: "dark",
themes: {
light: { colors: { primary: { DEFAULT: "#fcd436" } } },
dark: { colors: { primary: { DEFAULT: "#fcd436" }, background: "#0d0d0d" } },
},
},
}Update theme.defaultTheme when your app’s light/dark mode changes.
Style Overrides#
Import @dogeos/dogeos-sdk/style.css once. Use the theme options above for colors and WalletConnectEmbed wrapper props for layout and spacing.
import { WalletConnectEmbed } from "@dogeos/dogeos-sdk"
export function WalletPanel() {
return <WalletConnectEmbed style={{ width: "100%", maxWidth: 448 }} />
}Avoid targeting internal SDK class names. The SDK demo shows an app with a theme toggle and inline wallet panel.
Complete Example#
This configuration connects to Chikyū, uses the default login methods, and identifies your app in WalletConnect sessions. Import the chains.ts definition above.
import { ChainTypeEnum, type WalletConnectKitConfig } from "@dogeos/dogeos-sdk"
import { dogeOSChikyuTestnet } from "./chains"
export const dogeConfig: WalletConnectKitConfig = {
clientId: "YOUR_DOGEOS_CLIENT_ID",
defaultConnectChain: ChainTypeEnum.EVM,
chains: { evm: [dogeOSChikyuTestnet] },
metadata: {
name: "Your App",
description: "Your DogeOS application",
url: "https://your-app.example",
icons: ["https://your-app.example/icon.png"],
},
}