UX de Transação
Toasts, confirmações, retries e decodificação de erros para envios voltados ao usuário.
Busque em todas as páginas da documentação
Toasts, confirmações, retries e decodificação de erros para envios voltados ao usuário.
type TxState = "idle" | "building" | "signing" | "sending" | "confirmed" | "failed";Quando usar:
"use client";
import { useState } from "react";
export function useTxToast() {
const [state, setState] = useState<TxState>("idle");
const [signature, setSignature] = useState<string | null>(null);
const [error, setError] = useState<string | null>(null);
async function run(sendFn: () => Promise<string>) {
try {
setError(null);
setState("signing");
const sig = await sendFn();
setSignature(sig);
setState("confirmed");
return sig;
} catch (e) {
setError(e instanceof Error ? e.message : "Transaction failed");
setState("failed");
throw e;
}
}
return { state, signature, error, run };
}O que isso demonstra:
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Email em confirmed | Ops de alto valor | Txs de jogo consumer |
| Envio silencioso em background | Analytics | Transferências iniciadas pelo usuário |
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