Rainbow logo
RainbowKit
2.2.10

RainbowKitとWagmi v2への移行

wagmiviemのピア依存関係が 2.x.x に達し、破壊的な変更が行われました。

移行手順に従ってください。

RainbowKit、wagmi、およびviemを最新バージョンにアップグレードしてください

npm i @rainbow-me/rainbowkit wagmi [email protected]

@tanstack/react-queryのピア依存をインストール

Wagmi v2では、TanStack Queryが必須のピア依存関係です。

以下のコマンドでインストールしてください:

npm i @tanstack/react-query

RainbowKit と Wagmi の設定をアップグレードしてください

import '@rainbow-me/rainbowkit/styles.css'
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query' - import { createPublicClient, http } from 'viem' - import { WagmiConfig } from 'wagmi' + import { WagmiProvider, http } from 'wagmi' - import { configureChains, createConfig } from 'wagmi' import { mainnet } from 'wagmi/chains' import { RainbowKitProvider } from '@rainbow-me/rainbowkit' - import { getDefaultWallets, connectorsForWallets } from '@rainbow-me/rainbowkit' + import { getDefaultConfig } from '@rainbow-me/rainbowkit'
/* getDefaultWallets is now optional */ - const { wallets } = getDefaultWallets({ - appName: 'RainbowKit demo', - projectId: 'YOUR_PROJECT_ID', - chains, - })
/* connectorsForWallets is now optional */ - const connectors = connectorsForWallets([...wallets])
- const { chains, publicClient } = configureChains( - [mainnet, sepolia], - [publicProvider(), publicProvider()], - )
- const config = createConfig({ - autoConnect: true, - publicClient, - })
/* New API that includes Wagmi's createConfig and replaces getDefaultWallets and connectorsForWallets */ + const config = getDefaultConfig({ + appName: 'RainbowKit demo', + projectId: 'YOUR_PROJECT_ID', + chains: [mainnet], + transports: { + [mainnet.id]: http(), + }, + })
+ const queryClient = new QueryClient()
const App = () => { return ( - <WagmiConfig config={config}> + <WagmiProvider config={config}> + <QueryClientProvider client={queryClient}> - <RainbowKitProvider chains={chains}> + <RainbowKitProvider> {/* Your App */} </RainbowKitProvider> + </QueryClientProvider> - </WagmiConfig> + </WagmiProvider> ) }

wagmiviemの破壊的変更を確認してください

dAppでwagmiフックとviemアクションを使用している場合、v2の移行ガイドに従う必要があります:

EIP-6963 ウォレットの動作改善

新しい EIP-6963 接続標準をサポートするウォレット(RainbowMetaMask などを含む)は、ウォレットを接続する体験の間に Installed セクションに自動的に表示されるようになりました。 これにより、ユーザーはお気に入りのウォレットを常に見つけて、競合やフォールバックボタンなしで dApps に接続できるようになります。 これにより、ユーザーはお気に入りのウォレットを常に見つけて、競合やフォールバックボタンなしで dApps に接続できるようになります。

開発者は、エンドユーザー向けの好ましいウォレットを強調するために、カスタムウォレットリストを完全にコントロールし続けることができます。injectedWalletwalletConnectWalletをすべてのプラットフォームに対応するためにリストに含め続けることが推奨されます。

getDefaultConfig を使用した Wagmi 設定

この新しいAPIは設定体験を簡素化し、WagmiのcreateConfigを直接使用する必要性を置き換えます。チェーン設定が簡素化され、transportsの公開プロバイダが推論されます。

デフォルトのウォレットリストが自動的に含まれるため、getDefaultWalletsconnectorsForWalletsを使用する必要がなくなります。

インポートしたまたはカスタムウォレットコネクタをwalletsに渡すことで、カスタムウォレットリストを作成できます。ウォレットコネクタをインスタンス化し、projectIdchainsを渡す必要はありません。

const config = getDefaultConfig({
appName: 'RainbowKit demo',
projectId: 'YOUR_PROJECT_ID',
chains: [mainnet],
wallets: [rainbowWallet], /* optional custom wallet list */
/* Wagmi createConfig options including `transports` are also accepted */
})

RainbowKitProvider

<RainbowKitProvider>chainsを渡す必要がなくなりました。

- <RainbowKitProvider chains={chains}> + <RainbowKitProvider>

カスタムチェーン

Wagmi v2に従い、Chainタイプが変更されましたが、RainbowKitのiconUrliconBackgroundメタデータを引き続きサポートします。

+ import { Chain } from '@rainbow-me/rainbowkit'
const avalanche = { id: 43_114, name: 'Avalanche', iconUrl: 'https://s2.coinmarketcap.com/static/img/coins/64x64/5805.png', iconBackground: '#fff', nativeCurrency: { name: 'Avalanche', symbol: 'AVAX', decimals: 18 }, rpcUrls: { default: { http: ['https://api.avax.network/ext/bc/C/rpc'] }, }, blockExplorers: { default: { name: 'SnowTrace', url: 'https://snowtrace.io' }, }, contracts: { multicall3: { address: '0xca11bde05977b3631167028862be2a173976ca11', blockCreated: 11_907_934, }, }, } as const satisfies Chain

getDefaultConfigの例:

const config = getDefaultConfig({
+ chains: [ + avalanche, /* custom chain */ + { + ...mainnet, + iconBackground: '#000', + iconUrl: 'https://example.com/icons/ethereum.png', + }, /* metadata overrides */ + ], });

createConfigの例:

+ import { Chain } from '@rainbow-me/rainbowkit' + const chains: readonly [Chain, ...Chain[]] = [ + { + ...mainnet, + iconBackground: '#000', + iconUrl: 'https://example.com/icons/ethereum.png', + }, + ]; const config = createConfig({ chains, transports: { [mainnet.id]: http(), }, })

カスタムウォレット

RainbowKitウォレットコネクタは、Wagmi v2をサポートするために実質的な変更を受けています。dAppでのカスタムウォレットコネクタをアップグレードするために、更新された文書コネクタ例を参照してください。

ウォレットコネクタは今やEIP-6963標準をrdnsプロップと共にサポートします。このプロップを適切に設定することにより、EIP-6963をサポートするウォレットがウォレットリストに二重に表示されることを避けることができます。

GitHubでRainbowKit v2に関する問題やフィードバックを報告してください こちら