RainbowKitとWagmi v2への移行
wagmiとviemのピア依存関係が 2.x.x に達し、破壊的な変更が行われました。
移行手順に従ってください。
RainbowKit、wagmi、およびviemを最新バージョンにアップグレードしてください
@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>
)
}
wagmiとviemの破壊的変更を確認してください
dAppでwagmiフックとviemアクションを使用している場合、v2の移行ガイドに従う必要があります:
EIP-6963 ウォレットの動作改善
新しい EIP-6963 接続標準をサポートするウォレット(Rainbow、MetaMask などを含む)は、ウォレットを接続する体験の間に Installed セクションに自動的に表示されるようになりました。 これにより、ユーザーはお気に入りのウォレットを常に見つけて、競合やフォールバックボタンなしで dApps に接続できるようになります。 これにより、ユーザーはお気に入りのウォレットを常に見つけて、競合やフォールバックボタンなしで dApps に接続できるようになります。
開発者は、エンドユーザー向けの好ましいウォレットを強調するために、カスタムウォレットリストを完全にコントロールし続けることができます。injectedWalletとwalletConnectWalletをすべてのプラットフォームに対応するためにリストに含め続けることが推奨されます。
getDefaultConfig を使用した Wagmi 設定
この新しいAPIは設定体験を簡素化し、WagmiのcreateConfigを直接使用する必要性を置き換えます。チェーン設定が簡素化され、transportsの公開プロバイダが推論されます。
デフォルトのウォレットリストが自動的に含まれるため、getDefaultWalletsやconnectorsForWalletsを使用する必要がなくなります。
インポートしたまたはカスタムウォレットコネクタをwalletsに渡すことで、カスタムウォレットリストを作成できます。ウォレットコネクタをインスタンス化し、projectIdとchainsを渡す必要はありません。
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のiconUrlやiconBackgroundメタデータを引き続きサポートします。
+ 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に関する問題やフィードバックを報告してください こちら。