Skip to content

Releases: rainbow-me/rainbowkit

@rainbow-me/[email protected]

21 Nov 08:13
dd122dc
Compare
Choose a tag to compare

Minor Changes

  • 9ce75a6: The new WalletButton component helps dApps with custom wallet list implementations adopt RainbowKit and all of it's maintenance-free benefits.

    import { WalletButton } from '@rainbow-me/rainbowkit';
    
    <WalletButton wallet="rainbow" />
    <WalletButton wallet="metamask" />
    <WalletButton wallet="coinbase" />

    Like the ConnectButton, the WalletButton.Custom component is available for custom implementations and styling.

    <WalletButton.Custom wallet="rainbow">
      {({ ready, connect }) => {
        return (
          <button type="button" disabled={!ready} onClick={connect}>
            Connect Rainbow
          </button>
        );
      }}
    </WalletButton.Custom>

    Most dApps are best served by the ConnectButton. Reference the docs here for more information about WalletButton adoption and usecases.

@rainbow-me/[email protected]

21 Nov 06:07
abee1f4
Compare
Choose a tag to compare

Patch Changes

  • 2f56ab2: Adopted 'use client' directive for safe App Router usage
  • 9dfe053: Added strict peer incompatibility with next-auth@5. RainbowKit will support next-auth v5 in a future release with improved App Router support.

@rainbow-me/[email protected]

21 Nov 08:12
dd122dc
Compare
Choose a tag to compare

Minor Changes

  • 9ce75a6: The RainbowButton component is the simplest way to add support for Rainbow Wallet to dApps that use wagmi and prefer a more custom connector experience over RainbowKit.

    1. Install @rainbow-me/rainbow-button and its peer dependencies

    The package is compatible with Next.js, React, and Vite. Ensure that you follow peer dependency warnings.

    npm install @rainbow-me/rainbow-button wagmi viem

    2. Configure with Wagmi and install the RainbowButton

    Pass an instance of the RainbowConnector to your Wagmi connector list, and wrap your app in the RainbowButtonProvider. Then drop-in the RainbowButton component into your wallet list.

    import "@rainbow-me/rainbow-button/styles.css";
    import {
      RainbowButtonProvider,
      RainbowConnector,
    } from "@rainbow-me/rainbow-button";
    
    const wagmiClient = createConfig({
      connectors: [new RainbowConnector({ chains, projectId })],
      publicClient,
    });
    
    function MyApp({ Component, pageProps }: AppProps) {
      return (
        <WagmiConfig config={wagmiClient}>
          <RainbowButtonProvider>{/* Your App */}</RainbowButtonProvider>
        </WagmiConfig>
      );
    }
    
    export const YourApp = () => {
      return <RainbowButton />;
    };

    You can also use the RainbowButton.Custom component for custom implementations and styling.

    <RainbowButton.Custom>
      {({ ready, connect }) => {
        return (
          <button type="button" disabled={!ready} onClick={connect}>
            Connect Rainbow
          </button>
        );
      }}
    </RainbowButton.Custom>

    3. And that's it!

    Now your users can enjoy a seamless connection experience for Rainbow — without any maintenance or headaches.

    A WalletButton component is also available in RainbowKit if you'd like to adopt support for additional wallets.

@rainbow-me/[email protected]

20 Nov 06:02
cb56848
Compare
Choose a tag to compare

Patch Changes

  • 74ead9d: Tokenary Support

    Example usage

    import {
      getDefaultWallets,
      connectorsForWallets,
    } from "@rainbow-me/rainbowkit";
    import { tokenaryWallet } from "@rainbow-me/rainbowkit/wallets";
    const { wallets } = getDefaultWallets({ appName, chains });
    const connectors = connectorsForWallets([
      ...wallets,
      {
        groupName: "Other",
        wallets: [tokenaryWallet({ chains })],
      },
    ]);
  • 94dce82: Fixed scroll bar inconsistencies in the Chain selector for large chain lists or when animating upon user interaction

  • 39d81e9: Fixed a bug where the avatar loading indicator had used excessive CPU cycles

@rainbow-me/[email protected]

31 Oct 14:34
328038c
Compare
Choose a tag to compare

Minor Changes

  • ef64a22: Improved desktop wallet download support

    RainbowKit wallet connectors now support desktop download links and desktop
    wallet instructions.

    Dapps that utilize the Custom Wallets API can reference the updated docs here.

    {
      downloadUrls: {
        windows: 'https://my-wallet/windows-app',
        macos: 'https://my-wallet/macos-app',
        linux: 'https://my-wallet/linux-app',
        desktop: 'https://my-wallet/desktop-app',
      }
    }

    We've also introduced a new 'connect' InstructionStepName type in the instructions API to provide wallet connection instructions.

    return {
      connector,
      desktop: {
        getUri,
        instructions: {
          learnMoreUrl: 'https://my-wallet/learn-more',
          steps: [
            // ...
            {
              description: 'A prompt will appear for you to approve the connection to My Wallet.'
              step: 'connect',
              title: 'Connect',
            }
          ]
        },
      },
    }

@rainbow-me/[email protected]

30 Oct 20:29
9b567f9
Compare
Choose a tag to compare

Patch Changes

  • 9f68c30: Fixed an issue with Trust Wallet detection in Trust's in-app mobile browser
  • 3f595c1: Added localization support in the Authentication flow for SIWE
  • e2075b3: Improved Coinbase Wallet detection when multiple wallets are active

@rainbow-me/[email protected]

23 Oct 07:21
dbca805
Compare
Choose a tag to compare

Patch Changes

  • 02e796c: SafePal Wallet Support

    Example usage

    import {
      getDefaultWallets,
      connectorsForWallets,
    } from "@rainbow-me/rainbowkit";
    import { safepalWallet } from "@rainbow-me/rainbowkit/wallets";
    const { wallets } = getDefaultWallets({ appName, chains });
    const connectors = connectorsForWallets([
      ...wallets,
      {
        groupName: "Other",
        wallets: [safepalWallet({ projectId, chains })],
      },
    ]);
  • efb8566: SubWallet Support

    Example usage

    import {
      getDefaultWallets,
      connectorsForWallets,
    } from "@rainbow-me/rainbowkit";
    import { subWallet } from "@rainbow-me/rainbowkit/wallets";
    const { wallets } = getDefaultWallets({ appName, chains, projectId });
    const connectors = connectorsForWallets([
      ...wallets,
      {
        groupName: "Other",
        wallets: [subWallet({ chains, projectId })],
      },
    ]);
  • 4b7a44c: Okto Support

    Example usage

    import {
      getDefaultWallets,
      connectorsForWallets,
    } from "@rainbow-me/rainbowkit";
    import { oktoWallet } from "@rainbow-me/rainbowkit/wallets";
    const { wallets } = getDefaultWallets({ appName, projectId, chains });
    const connectors = connectorsForWallets([
      ...wallets,
      {
        groupName: "Other",
        wallets: [oktoWallet({ projectId, chains })],
      },
    ]);
  • 2c8abbb: Zeal Support

    Example usage

    import {
      getDefaultWallets,
      connectorsForWallets,
    } from "@rainbow-me/rainbowkit";
    import { zealWallet } from "@rainbow-me/rainbowkit/wallets";
    const { wallets } = getDefaultWallets({ appName, chains });
    const connectors = connectorsForWallets([
      ...wallets,
      {
        groupName: "Other",
        wallets: [zealWallet({ chains })],
      },
    ]);
  • e41103f: CLV Wallet Support

    Example usage

    import {
      getDefaultWallets,
      connectorsForWallets,
    } from "@rainbow-me/rainbowkit";
    import { clvWallet } from "@rainbow-me/rainbowkit/wallets";
    const { wallets } = getDefaultWallets({ appName, chains });
    const connectors = connectorsForWallets([
      ...wallets,
      {
        groupName: "Other",
        wallets: [clvWallet({ chains, projectId })],
      },
    ]);
  • b0022ae: Desig Wallet support

    Example usage

    import {
      getDefaultWallets,
      connectorsForWallets,
    } from "@rainbow-me/rainbowkit";
    import { desigWallet } from "@rainbow-me/rainbowkit/wallets";
    const { wallets } = getDefaultWallets({ appName, chains, projectId });
    const connectors = connectorsForWallets([
      ...wallets,
      {
        groupName: "Other",
        wallets: [desigWallet({ chains })],
      },
    ]);

@rainbow-me/[email protected]

15 Oct 20:43
924d776
Compare
Choose a tag to compare

Patch Changes

  • 6cbd9a5: Added zkSync and zkSyncTestnet network support
  • b2b69dc: Added holesky testnet support
  • 7d97860: Fixed an issue where a user would not get automatically logged out from the Authentication API after switching their wallet in MetaMask or other browser wallets. Users must now sign a new SIWE message after switching wallets.

@rainbow-me/[email protected]

06 Oct 22:57
02d986a
Compare
Choose a tag to compare

Patch Changes

  • b60e335: Fixed a dependency resolution issue for ESModule projects related to i18n-js

@rainbow-me/[email protected]

06 Oct 06:59
265da51
Compare
Choose a tag to compare

Minor Changes

  • b37f5d6: RainbowKit is now localized in 13 languages and counting 🌎

    A user's preferred language is automatically detected and the wallet linking experience will be fully localized out of the box, including the ConnectButton. Developers can always customize the language selection or allow their users to choose a different language by passing a locale prop to RainbowKitProvider like so:

    <RainbowKitProvider locale="zh-CN">

    RainbowKit's localization support works even better alongside i18n support in Next.js, so that locale selection can be specifed with custom domains or a subpath like /zh-CN/. Reference our guide to learn more.

    If you would like to see support for an additional language, please open a GitHub Discussion and we'll work to support it as soon as possible.