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
| Prop | Type | Default | Required |
|---|---|---|---|
rpcUrl | string | https://api.devnet.solana.com | no |
portalUrl | string | https://portal.lazor.sh | no |
paymasterConfig | { paymasterUrl: string; apiKey?: string } | Devnet Kora | no |
children | ReactNode | — | yes |
PaymasterConfig
interface PaymasterConfig {
paymasterUrl: string; // Kora JSON-RPC endpoint
apiKey?: string; // sent as x-api-key
}Recipes
Next.js App Router
import { Providers } from './providers';
export default function RootLayout({ children }) {
return <html><body><Providers>{children}</Providers></body></html>;
}'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>