Providers e App Router
Conecte providers de carteira e RPC no Next.js App Router sem crashes de SSR.
Busque em todas as páginas da documentação
Conecte providers de carteira e RPC no Next.js App Router sem crashes de SSR.
// app/layout.tsx
import { SolanaProvider } from "./solana-provider";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
<SolanaProvider>{children}</SolanaProvider>
</body>
</html>
);
}// app/solana-provider.tsx
"use client";Quando usar:
window is not defined de SDKs de carteira.// app/solana-provider.tsx
"use client";
import { useMemo } from "react";
import { ConnectionProvider, WalletProvider } from "@solana/wallet-adapter-react";
import { WalletModalProvider } from "@solana/wallet-adapter-react-ui";
import { PhantomWalletAdapter, SolflareWalletAdapter } from "@solana/wallet-adapter-wallets";
import "@solana/wallet-adapter-react-ui/styles.css";
export function SolanaProvider({ children }: { children: React.ReactNode }) {
const endpoint = process.env.NEXT_PUBLIC_RPC_URL!;
const wallets = useMemo(
() => [new PhantomWalletAdapter(), new SolflareWalletAdapter()],
[]
);
return (
<ConnectionProvider endpoint={endpoint}>
<WalletProvider wallets={wallets} autoConnect>
<WalletModalProvider>{children}</WalletModalProvider>
</WalletProvider>
</ConnectionProvider>
);
}O que isso demonstra:
useMemo estabiliza instâncias de wallet adapter.createSolanaRpc do kit dentro de hooks para leituras.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Provider @wallet-ui/react | template create-solana-dapp | Investimento existente em adapter |
| Pages Router | App legado apenas | App Router greenfield |
Providers em client layout.tsx; pages misturam server + client components.
Env de servidor só para keypairs; NEXT_PUBLIC_ para URLs de RPC.
Todos os exemplos usam @solana/kit, não web3.js v1.
Assinatura apenas em client components.
Revalide leituras on-chain com cuidado - a chain é fonte da verdade.
Endpoints HTTPS retornando JSON de Solana Actions.
App React Native separado com MWA.
Surfpool para integração; mock RPC em testes unitários.
Arquivos env e program IDs separados.
Decodifique logs de simulação para mensagens voltadas ao usuário.
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026