LazorKit LogoLazorKit
React SDK

LazorkitProvider

Provider component — initialises the wallet store and paymaster config.

Mount once at the top of your client tree. LazorkitProvider creates the wallet store, builds the RPC connection, and stores the paymaster config.

import { LazorkitProvider } from '@lazorkit/wallet';

Client only

This provider uses navigator.credentials and localStorage. Mount it inside a client-side boundary — in Next.js App Router, wrap it in a "use client" file.

Minimum setup

<LazorkitProvider>
  <App />
</LazorkitProvider>

Defaults: Solana Devnet, portal.lazor.sh, public Kora paymaster.

Production setup

<LazorkitProvider
  rpcUrl={process.env.NEXT_PUBLIC_RPC_URL}
  portalUrl="https://portal.lazor.sh"
  paymasterConfig={{
    paymasterUrl: process.env.NEXT_PUBLIC_PAYMASTER_URL!,
    apiKey: process.env.NEXT_PUBLIC_PAYMASTER_KEY,
  }}
>
  <App />
</LazorkitProvider>

Props

PropTypeDefaultRequired
rpcUrlstringhttps://api.devnet.solana.comno
portalUrlstringhttps://portal.lazor.shno
paymasterConfig{ paymasterUrl: string; apiKey?: string }Devnet Korano
childrenReactNodeyes

PaymasterConfig

interface PaymasterConfig {
  paymasterUrl: string;                    // Kora JSON-RPC endpoint
  apiKey?: string;                         // sent as x-api-key
}

Recipes

Next.js App Router

app/layout.tsx
import { Providers } from './providers';

export default function RootLayout({ children }) {
  return <html><body><Providers>{children}</Providers></body></html>;
}
app/providers.tsx
'use client';
import { LazorkitProvider } from '@lazorkit/wallet';
import { Buffer } from 'buffer';

if (typeof window !== 'undefined') (window as any).Buffer ??= Buffer;

export function Providers({ children }: { children: React.ReactNode }) {
  return (
    <LazorkitProvider rpcUrl={process.env.NEXT_PUBLIC_RPC_URL}>
      {children}
    </LazorkitProvider>
  );
}

Switch networks at runtime

const [cluster, setCluster] = useState<'devnet' | 'mainnet'>('devnet');

const rpcUrl = cluster === 'devnet'
  ? 'https://api.devnet.solana.com'
  : 'https://api.mainnet-beta.solana.com';

return <LazorkitProvider rpcUrl={rpcUrl}>{children}</LazorkitProvider>;

Multiple environments

const paymasterConfig = process.env.NODE_ENV === 'production'
  ? { paymasterUrl: process.env.NEXT_PUBLIC_KORA_MAINNET!, apiKey: process.env.NEXT_PUBLIC_KORA_KEY }
  : { paymasterUrl: 'https://kora.devnet.lazorkit.com' };

<LazorkitProvider paymasterConfig={paymasterConfig}>{children}</LazorkitProvider>