Installation
Get up and running with RainbowKit
Install
Install RainbowKit and its peer dependencies, wagmi and ethers.
npm install @rainbow-me/rainbowkit wagmi@0.2 ethers
Import
Import RainbowKit, wagmi, and ethers.
import '@rainbow-me/rainbowkit/styles.css';
import {
RainbowKitProvider,
Chain,
getDefaultWallets,
connectorsForWallets,
} from '@rainbow-me/rainbowkit';
import { WagmiProvider, chain } from 'wagmi';
import { providers } from 'ethers';
Configure
Configure your wallets, desired chains and generate the required connectors.
...
import { providers } from 'ethers';
const infuraId = process.env.INFURA_ID;
const provider = ({ chainId }) =>
new providers.InfuraProvider(chainId, infuraId);
const chains: Chain[] = [
{ ...chain.mainnet, name: 'Ethereum' },
{ ...chain.polygonMainnet, name: 'Polygon' },
{ ...chain.optimism, name: 'Optimism' },
{ ...chain.arbitrumOne, name: 'Arbitrum' },
];
const wallets = getDefaultWallets({
chains,
infuraId,
appName: 'My RainbowKit App',
jsonRpcUrl: ({ chainId }) =>
chains.find(x => x.id === chainId)?.rpcUrls?.[0] ??
chain.mainnet.rpcUrls[0],
});
const connectors = connectorsForWallets(wallets);
We recommend using custom providers such as InfuraProvider
and AlchemyProvider
. For help generating provider ID's, see the Infura docs and the Alchemy docs.
Wrap providers
Wrap your application with RainbowKitProvider
and WagmiProvider
.
...
const connectors = connectorsForWallets(wallets);
const App = () => {
return (
<WagmiProvider
autoConnect
connectors={connectors}
provider={provider}
>
<RainbowKitProvider chains={chains}>
<YourApp />
</RainbowKitProvider>
</WagmiProvider>
);
};
Use it
Then, in your app, import and render the ConnectButton
component.
import { ConnectButton } from '@rainbow-me/rainbowkit';
export const YourApp = () => {
return <ConnectButton />;
};
You're done! RainbowKit will now handle your user's wallet selection, display wallet/transaction information and handle network/wallet switching.
Note if you're using Remix remember to add RainbowKit to its server dependencies.