Rainbow logo
RainbowKit
2.2.10

माइग्रेशन गाइड

माइग्रेशन गाइड

रेनबो किट माइग्रेट करना

wagmi और viem पीयर निर्भरताएँ 2.x.x तक पहुँच चुकी हैं और इनमें ब्रेकिंग बदलाव हैं।

नीचे दिए गए चरणों का पालन करें।

1. रेनबो किट, wagmi, और viem को उनके नवीनतम संस्करण तक अपग्रेड करें

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

2. @tanstack/react-query पियर निर्भरता इंस्टॉल करें

Wagmi v2 के साथ, TanStack Query अब एक आवश्यक पीयर निर्भरता है।

इसे निम्नलिखित आदेश के साथ स्थापित करें:

npm i @tanstack/react-query

3. अपनी रेनबो किट और वेगमी कंफिगरेशन अपग्रेड करें

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> ) }

4. wagmi और viem में ब्रेकिंग परिवर्तन की जांच करें

यदि आप अपने dApp में wagmi होक्स और viem एक्शन का उपयोग करते हैं, तो आपको v2 के लिए माइग्रेशन गाइड का पालन करना पड़ेगा:

1. EIP-6963 वॉलेट्स के लिए व्यवहार में सुधार

नए EIP-6963 कनेक्शन मानक का समर्थन करने वाले वॉलेट (जिसमें रेनबो, मेटामास्क और अन्य शामिल हैं) अब Installed सेक्शन में स्वतः दिखाई देंगे। इससे सुनिश्चित होता है कि उपयोगकर्ता हमेशा अपने पसंदीदा वॉलेट खोज सकें और dApps से बिना संघर्ष या फ़ॉलबैक बटन के जुड़ सकें।

डेवलपर्स उपयोगकर्ता-अंत वेल्ट्स के लिए कस्टम वॉलेट सूची पर पूरा नियंत्रण बनाए रखते हैं। यह प्रोत्साहित किया जाता है कि आप अपनी सूची में injectedWallet और walletConnectWallet शामिल करें ताकि सभी प्लेटफार्म समर्थित हो।

2. 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 */
})

3. रेनबो किट प्रोवाइडर

आपको अब <RainbowKitProvider> में chains पास करने की आवश्यकता नहीं है।

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

4. कस्टम चेन

चेन प्रकार Wagmi v2 के अनुसार बदला गया है, और 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 overides */ + ], });

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(), }, })

5. कस्टम वॉलेट्स

रेनबो किट वॉलेट कनेक्टर्स ने Wagmi v2 को समर्थन देने के लिए महत्वपूर्ण बदलाव लिए हैं। किसी भी कस्टम वॉलेट कनेक्टर्स को अपग्रेड करने के लिए वर्तमान दस्तावेज़ और उदाहरण कनेक्टर का अनुकरण करें।

वॉलेट कनेक्टर्स अब rdns प्रोप के साथ EIP-6963 मानक का समर्थन करते हैं। सुनिश्चित करें कि आपकी वॉलेट सूची में EIP-6963 समर्थित वॉलेट्स की डुप्लीकेट संदर्भों को रोकने के लिए इसे भरा हुआ है।

wagmi पियर निर्भरता को 1.x.x में अद्यतन किया गया है।

नीचे दिए गए चरणों का पालन करें।

1. रेनबो किट और wagmi को उनके नवीनतम संस्करण तक अपग्रेड करें

npm i @rainbow-me/rainbowkit@^1 wagmi@^1

2. viem पियर निर्भरता इंस्टॉल करें

wagmi v1 के लिए viem पियर निर्भरता आवश्यक है। इसे निम्नलिखित कमांड के साथ इंस्टॉल करें:

npm i viem

3. बंडलर और पॉलीफिल संगतता सुनिश्चित करें

अपने प्रोजेक्ट के लिए कॉन्फ़िगरेशन मार्गदर्शन के लिए हमारी Next.js Webpack कंफिग सैंपल का संदर्भ लें।

Vite और Remix के लिए अतिरिक्त फ्रेमवर्क गाइड्स यहाँ उपलब्ध हैं।

4. wagmi में ब्रेकिंग परिवर्तन की जांच करें

यदि आप wagmi हूक्स का अपने एप्लिकेशन में उपयोग करते हैं, तो आपको wagmi की v1 में माइग्रेशन गाइड का पालन करना होगा।

उनकी माइग्रेशन गाइड यहां देख सकते हैं

wagmi पियर निर्भरता को 0.12.x तक अपडेट किया गया है।

रेनबो किट ने WalletConnect v1 सपोर्ट के लिए WalletConnectLegacyConnector का समर्थन करने वाला कनेक्टर को wagmi में अपनाया है। WalletConnect v2 और WalletConnectConnector के लिए बिना किसी ब्रेकिंग परिवर्तन के एक पैच रिलीज़ जल्द ही उपलब्ध होगा।

वॉलेट्स को भविष्य के संस्करणों में स्वचालित रूप से स्थानांतरित किया जाएगा।

हर dApp को WalletConnect v2 को सक्षम करने के लिए अब WalletConnect Cloud projectId प्रदान करना आवश्यक है। यह कार्य जून 28, 2023 तक पूरा किया जाना चाहिए, इससे पहले कि WalletConnect v1 ब्रिज सर्वर बंद हो जाए। रेनबो किट v1 को तब चुपके से पसंद करेगा जब projectId निर्दिष्ट नहीं है।

नीचे दिए गए चरणों का पालन करें।

npm i @rainbow-me/rainbowkit@^0.12.0 wagmi@^0.12.0

हर dApp जो WalletConnect पर निर्भर करता है, को अब WalletConnect Cloud से एक projectId प्राप्त करने की आवश्यकता है। यह पूरी तरह से मुफ्त है और केवल कुछ ही मिनटों का समय लेता है।

getDefaultWallets और व्यक्तिगत रेनबो किट वॉलेट कनेक्टर्स को निम्नलिखित के जैसे projectId प्रदान करें:

const projectId = 'YOUR_PROJECT_ID';
const { wallets } = getDefaultWallets({
appName: 'My RainbowKit App',
projectId,
chains,
});
const connectors = connectorsForWallets([
...wallets,
{
groupName: 'Other',
wallets: [
readyWallet({ projectId, chains }),
trustWallet({ projectId, chains }),
ledgerWallet({ projectId, chains }),
],
},
]);

wagmi पियर निर्भरता को 0.11.x तक अपडेट किया गया है।

नीचे दिए गए चरणों का पालन करें।

npm i @rainbow-me/rainbowkit@^0.11.0 wagmi@^0.11.0

यदि आप अपने एप्लिकेशन में wagmi हुक्स का उपयोग करते हैं, तो आपको जांच करनी होगी कि क्या आपके एप्लिकेशन पर wagmi के बदलाओं का असर पड़ा है।

उनकी माइग्रेशन गाइड यहां देख सकते हैं

wagmi पियर निर्भरता को 0.10.x तक अपडेट किया गया है।

नीचे दिए गए चरणों का पालन करें।

npm i @rainbow-me/rainbowkit@^0.10.0 wagmi@^0.10.0

यदि आप अपने एप्लिकेशन में wagmi हुक्स का उपयोग करते हैं, तो आपको जांच करनी होगी कि क्या आपके एप्लिकेशन पर wagmi के बदलाओं का असर पड़ा है।

उनकी माइग्रेशन गाइड यहां देख सकते हैं

wagmi पियर निर्भरता को 0.9.x तक अपडेट किया गया है।

नीचे दिए गए चरणों का पालन करें।

npm i @rainbow-me/rainbowkit@^0.9.0 wagmi@^0.9.0

यदि आप अपने एप्लिकेशन में wagmi हुक्स का उपयोग करते हैं, तो आपको जांच करनी होगी कि क्या आपके एप्लिकेशन पर wagmi के बदलाओं का असर पड़ा है।

उनकी माइग्रेशन गाइड यहां देख सकते हैं

wagmi पियर निर्भरता को 0.8.x तक अपडेट किया गया है।

नीचे दिए गए चरणों का पालन करें।

npm i @rainbow-me/rainbowkit@^0.8.0 wagmi@^0.8.0

यदि आप अपने एप्लिकेशन में wagmi हुक्स का उपयोग करते हैं, तो आपको जांच करनी होगी कि क्या आपके एप्लिकेशन पर wagmi के बदलाओं का असर पड़ा है।

उनकी माइग्रेशन गाइड यहां देख सकते हैं

यदि आप एक कस्टम वॉलेट सूची बना रहे हैं, तो अब आपको प्रत्येक वॉलेट को व्यक्तिगत रूप से आयात करना होगा ताकि बंडल आकार को घटाया जा सके। ध्यान दें कि वॉलेट अब wallet ऑब्जेक्ट के माध्यम से नामस्थान नहीं हैं, सभी वॉलेट्स में अब Wallet प्रत्यय है।

-import { connectorsForWallets, wallet } from '@rainbow-me/rainbowkit'; +import { connectorsForWallets } from '@rainbow-me/rainbowkit'; +import { + injectedWallet, + rainbowWallet, + metaMaskWallet, + coinbaseWallet, + walletConnectWallet, +} from '@rainbow-me/rainbowkit/wallets';
const wallets = [
- wallet.injected({ chains }), - wallet.rainbow({ chains }), - wallet.metaMask({ chains }), - wallet.coinbase({ chains, appName: 'My App' }), - wallet.walletConnect({ chains }), + injectedWallet({ chains }), + rainbowWallet({ chains }), + metaMaskWallet({ chains }), + coinbaseWallet({ chains, appName: 'My App' }), + walletConnectWallet({ chains }), ];

साथ ही ध्यान दें कि Steakwallet पिछड़ी संगतता लेयर हटा दी गई है। इसके बजाय Omni का उपयोग किया जाना चाहिए।

-import { wallet } from '@rainbow-me/rainbowkit'; +import { omniWallet } from '@rainbow-me/rainbowkit/wallets';
const wallets = [
- wallet.steak({ chains }), + omniWallet({ chains }), ];

रेनबो किट ने wagmi पियर निर्भरता को 0.5.x तक अद्यतन किया है।

नीचे दिए गए चरणों का पालन करें।

रेनबो किट और wagmi को उनके नवीनतम संस्करण तक अपग्रेड करें

npm i @rainbow-me/rainbowkit@^0.4.0 wagmi@^0.5.0

यदि आप अपने एप्लिकेशन में wagmi हुक्स का उपयोग करते हैं, तो आपको जांच करनी होगी कि क्या आपके एप्लिकेशन पर wagmi के बदलाओं का असर पड़ा है।

उनकी माइग्रेशन गाइड यहां देख सकते हैं

Wallet प्रकार में createConnector से chainId पैरामीटर को हटा दिया गया है।

सभी बिल्ट-इन वॉलेट्स नए API का उपयोग कर रहे हैं। अधिकांश उपभोक्ता अप्रभावित रहेंगे। यह परिवर्तन केवल उन उपभोक्ताओं को प्रभावित करता है जिन्होंने कस्टम वॉलेट्स बनाया/उपयोग किया है।

यदि आपने पहले createConnector पर chainId से RPC URL व्युत्पन्न किए थे, तो अब आप उस तर्क को हटा सकते हैं क्योंकि wagmi अब configureChains के साथ उपयोग किए जाने पर आंतरिक रूप से RPC URL को संभालता है।

import { connectorsForWallets, wallet, Chain, Wallet } from '@rainbow-me/rainbowkit';
import { chain, configureChains } from 'wagmi';
import { alchemyProvider } from 'wagmi/providers/alchemy';
import { publicProvider } from 'wagmi/providers/public';
import { WalletConnectConnector } from 'wagmi/connectors/walletConnect';
export interface MyWalletOptions {
chains: Chain[]; }
-const chains = [chain.mainnet] +const { chains } = configureChains( + [chain.mainnet], + [ + alchemyProvider({ alchemyId: process.env.ALCHEMY_ID }), + publicProvider(), + ] +);
export const rainbow = ({ chains }: MyWalletOptions): Wallet => ({
... - createConnector: ({ chainId }) => { + createConnector: () => { - const rpc = chains.reduce( - (rpcUrlMap, chain) => ({ - ...rpcUrlMap, - [chainId]: chain.rpcUrls.default, - }), - {} - ); const connector = new WalletConnectConnector({ chains, options: { qrcode: false, - rpc, }, }); } ... }
const connectors = connectorsForWallets([
{ groupName: 'Recommended', wallets: [ rainbow({ chains }), ], }, ]);

रेनबो किट ने wagmi पियर निर्भरता को ^0.4 तक अपडेट किया है।

नीचे दिए गए चरणों का पालन करें।

रेनबो किट और wagmi को उनके नवीनतम संस्करण तक अपग्रेड करें

npm i @rainbow-me/rainbowkit@^0.2.0 wagmi@^0.4.2

रेनबो किट के बजाय wagmi से configureChains आयात करें:

- import { configureChains } from '@rainbow-me/rainbowkit'; + import { configureChains } from 'wagmi';

रेनबो किट अब एक apiProvider API निर्यात नहीं करता है। इसे wagmi से अपनी पसंद के प्रोवाइडर से बदलें।

- import { apiProvider } from '@rainbow-me/rainbowkit';

wagmi/providers/alchemy से alchemyProvider आयात करें।

+ import { alchemyProvider } from 'wagmi/providers/alchemy';
const { chains, provider } = configureChains(
[chain.mainnet, chain.polygon, chain.optimism, chain.arbitrum], - [apiProvider.alchemy(process.env.ALCHEMY_ID)] + [alchemyProvider({ alchemyId: process.env.ALCHEMY_ID })] );

wagmi/providers/infura से infuraProvider आयात करें।

+import { infuraProvider } from 'wagmi/providers/infura';
const { chains, provider } = configureChains(
[chain.mainnet, chain.polygon, chain.optimism, chain.arbitrum], - [apiProvider.infura(process.env.INFURA_ID)] + [infuraProvider({ infuraId: process.env.INFURA_ID })] );

wagmi/providers/jsonRpc से jsonRpcProvider आयात करें।

+ import { jsonRpcProvider } from 'wagmi/providers/jsonRpc';
const { chains, provider } = configureChains(
[chain.mainnet, chain.polygon], [ - apiProvider.jsonRpc(chain => ({ - rpcUrl: `https://${chain.id}.example.com`, - })), + jsonRpcProvider({ + rpc: chain => ({ + http: `https://${chain.id}.example.com`, + }), + }), ] );

wagmi/providers/public से publicProvider आयात करें।

+ import { publicProvider } from 'wagmi/providers/public';
const { chains, provider } = configureChains(
[chain.mainnet, chain.polygon], - [apiProvider.fallback()] + [publicProvider()] );

WagmiProvider का नाम बदलकर WagmiConfig करें।

import {
- WagmiProvider + WagmiConfig } from 'wagmi'
const App = () => {
return ( - <WagmiProvider client={wagmiClient}>...</WagmiProvider> + <WagmiConfig client={wagmiClient}>...</WagmiConfig> ); };

और आप हो गए! 🌈