Skip to main content

Setup Providers

Before using Sui hooks and components, we need to set up the providers.

Create dApp Kit Configuration

Create src/lib/dapp-kit.ts:
import { createDAppKit } from '@mysten/dapp-kit-react';
import { SuiGrpcClient } from '@mysten/sui/grpc';

const GRPC_URLS = {
  testnet: 'https://fullnode.testnet.sui.io:443',
};

export const dAppKit = createDAppKit({
  networks: ['testnet'],
  createClient: (network) => new SuiGrpcClient({
    network,
    baseUrl: GRPC_URLS[network]
  }),
});

// Register types for hook type inference
declare module '@mysten/dapp-kit-react' {
  interface Register {
    dAppKit: typeof dAppKit;
  }
}

Create Providers Component

Create src/components/providers.tsx:
import type { ReactNode } from "react";
import "@mysten/dapp-kit/dist/index.css";
import { DAppKitProvider } from "@mysten/dapp-kit-react";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { dAppKit } from "@/lib/dapp-kit";

const queryClient = new QueryClient();

export function Providers({ children }: { children: ReactNode }) {
  return (
    <QueryClientProvider client={queryClient}>
      <DAppKitProvider dAppKit={dAppKit}>
        {children}
      </DAppKitProvider>
    </QueryClientProvider>
  );
}

Wrap App with Providers

Update src/main.tsx:
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import { Providers } from "./components/providers";
import { App } from "./app";
import "./index.css";

createRoot(document.getElementById("root")!).render(
  <StrictMode>
    <Providers>
      <App />
    </Providers>
  </StrictMode>
);

What Each Provider Does

QueryClientProvider

  • Manages data fetching cache
  • Handles loading and error states
  • Provides automatic refetching

DAppKitProvider

  • Manages wallet connections
  • Provides access to Sui client
  • Handles network switching

Next Steps

Connect Wallet

Add wallet connection to your app