Getting Started

Wagmi SDK — Getting Started

SkillDownload

This guide shows the minimum setup to use CROSSx with wagmi v2+.

Requirements

  • React 18+
  • wagmi v2+
  • viem v2+
  • @tanstack/react-query

1) Install

::: code-group

npm install @nexus-cross/crossx-sdk-core @nexus-cross/crossx-sdk-wagmi wagmi viem @tanstack/react-query
pnpm add @nexus-cross/crossx-sdk-core @nexus-cross/crossx-sdk-wagmi wagmi viem @tanstack/react-query

:::

2) Define chain

import { defineChain } from 'viem'

export const crossMainnet = defineChain({
  id: 612055,
  name: 'CROSS Mainnet',
  nativeCurrency: { name: 'CROSS', symbol: 'CROSS', decimals: 18 },
  rpcUrls: {
    default: { http: ['https://mainnet.crosstoken.io:22001'] },
  },
})

export const crossTestnet = defineChain({
  id: 612044,
  name: 'CROSS Testnet',
  nativeCurrency: { name: 'tCROSS', symbol: 'tCROSS', decimals: 18 },
  rpcUrls: {
    default: { http: ['https://testnet.crosstoken.io:22001'] },
  },
})

3) Configure wagmi

Simple mode (recommended)

SDK is created internally — just pass config options:

// wagmi.config.ts
import { createConfig, http } from 'wagmi'
import { crossxConnector } from '@nexus-cross/crossx-sdk-wagmi'
import { crossMainnet, crossTestnet } from './chains'

export const wagmiConfig = createConfig({
  connectors: [
    crossxConnector({
      projectId: 'YOUR_PROJECT_ID',
      appName: 'My DApp',
    }),
  ],
  chains: [crossMainnet, crossTestnet],
  transports: {
    [crossMainnet.id]: http(),
    [crossTestnet.id]: http(),
  },
})

Advanced mode (SDK injection)

For full control, create the SDK yourself and inject it:

// wagmi.config.ts
import { createConfig, http } from 'wagmi'
import { createCROSSxSDK } from '@nexus-cross/crossx-sdk-core'
import { createCROSSxConnector } from '@nexus-cross/crossx-sdk-wagmi'
import { crossMainnet } from './chains'

const sdk = createCROSSxSDK({
  projectId: 'YOUR_PROJECT_ID',
  appName: 'My DApp',
  theme: 'dark',
  debug: true,
})

export const wagmiConfig = createConfig({
  connectors: [createCROSSxConnector({ sdk })],
  chains: [crossMainnet],
  transports: { [crossMainnet.id]: http() },
})

4) Set up Providers

// main.tsx
import { WagmiProvider } from 'wagmi'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { wagmiConfig } from './wagmi.config'
import App from './App'

const queryClient = new QueryClient()

ReactDOM.createRoot(document.getElementById('root')!).render(
  <WagmiProvider config={wagmiConfig}>
    <QueryClientProvider client={queryClient}>
      <App />
    </QueryClientProvider>
  </WagmiProvider>
)

5) Connect wallet

import { useConnect, useAccount, useDisconnect } from 'wagmi'

function App() {
  const { connectors, connect } = useConnect()
  const { address, isConnected } = useAccount()
  const { disconnect } = useDisconnect()

  const crossx = connectors.find(c => c.id === 'crossx')

  if (isConnected) {
    return (
      <div>
        <p>Address: {address}</p>
        <button onClick={() => disconnect()}>Disconnect</button>
      </div>
    )
  }

  return (
    <button onClick={() => connect({ connector: crossx! })}>
      Connect with CROSSx
    </button>
  )
}

Simple vs Advanced mode

FeatureSimple (crossxConnector)Advanced (createCROSSxConnector)
SDK creationAutomaticManual
Custom adaptersNot availableFull control
Setup complexityMinimalMore code
Recommended forMost appsApps needing custom SDK config

Connector options

crossxConnector({
  projectId: 'YOUR_PROJECT_ID',
  appName: 'My DApp',            // required
  theme: 'dark',                  // optional, 'light' | 'dark'
})

See Core SDK Config for all available options.

Next


© 2025 NEXUS Co., Ltd. All Rights Reserved.