Rainbow logo
RainbowKit
2.2.8

विस्थापन मार्गदर्शिका

विस्थापन मार्गदर्शिका

रेनबोकिट का स्थानांतरण करना

wagmi और viem पीयर निर्भरताएं 2.x.x पर पहुँच गई हैं जिसमें महत्वपूर्ण परिवर्तन आए हैं।

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

1. RainbowKit, 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. अपने 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> ) }

4. wagmi और viem में महत्वपूर्ण परिवर्तनों की जाँच करें

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

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

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

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

2. getDefaultConfig के साथ Wagmi कॉन्फ़िगरेशन**

यह नया API कॉन्फ़िगरेशन अनुभव को सरल बनाता है और सीधे Wagmi के createConfig का उपयोग करने की आवश्यकता को प्रतिस्थापित करता है। Chain कॉन्फ़िगरेशन को सरल किया गया है, जिसमें 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> में पास करने की आवश्यकता नहीं है।

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

4. कस्टम चेन्स

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 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. कस्टम वॉलेट्स

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

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

wagmi सहकर्मी निर्भरता को 1.x.x के लिए अपडटे किया गया है।

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

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

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

**2. viem सहकर्मी निर्भरता स्थापित करें

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

npm i viem

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

wagmi के पिछले संस्करणों में जो ethers पर निर्भर थे, WalletConnect द्वारा आवश्यक fs, net, और tls मॉड्यूल स्वचालित रूप से पॉलीफिल्ड किए गए थे। यह मामला अब RainbowKit v1 + wagmi v1 के साथ नहीं है, जो viem पर निर्मित हैं।

अपने प्रोजेक्ट के लिए कॉन्फिगरेशन मार्गदर्शन के लिए हमारे Next.js Webpack Config और Create React App polyfills नमूनों का पुणः संदर्भ लें।

Vite और Remix के लिए अतिरिक्त ढांचा मार्गदर्शन उपलब्ध है यहां

**4. wagmi में तोड़ने वाले परिवर्तन की जांच करें

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

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

wagmi पीर डिपेंडेंसी को 0.12.x पर अपडेट किया गया है।

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

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

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

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

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

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

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

const projectId = 'YOUR_PROJECT_ID';
const { wallets } = getDefaultWallets({
appName: 'My RainbowKit App',
projectId,
chains,
});
const connectors = connectorsForWallets([
...wallets,
{
groupName: 'Other',
wallets: [
argentWallet({ 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 }), ];

RainbowKit ने wagmi सहकर्मी निर्भरता को 0.5.x में अपडेट किया है।

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

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

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

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

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

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

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

यदि आप पहले chainId पर RPC URLs का निर्माण करते थे createConnector, तो अब आप wagmi के साथ configureChains का उपऔग करते हुए RPC URLs को internally handle करते हैं, ऐसा आप अपनी logic remove कर सकते हैं।

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 }), ], }, ]);

RainbowKit ने wagmi के पीर निर्भरता को ^0.4 के लिए अद्यतित किया है।

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

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

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

RainbowKit के बजाय wagmi से configureChains को आयात करें:

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

RainbowKit अब 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> ); };

और आप हो गए! 🌈