Melhores práticas do @solana/kit
Resumo condensado de 25 práticas para clientes @solana/kit 7.0.0 em produção.
-
Fixe @solana/kit@7.0.0: Trave a versão major no package.json e CI - tipagens RPC mudam entre minors (@solana/kit Basics).
-
Importe de forma estreita: Use subpath exports e pacotes de programa para manter bundles pequenos.
-
Sempre
.send()em chamadas RPC: Builders são lazy até enviar. -
Use lamports
bigint: Nunca matemática SOL float na UI ou servidores. -
Separe URLs HTTP e WSS: Subscriptions precisam de endpoints
wss://(RPC e subscriptions). -
Abort subscriptions WebSocket: Limpe no unmount React e mudanças de rota.
-
Busque blockhashes frescos por submissão: Lifetimes obsoletos são a principal falha de confirmação.
-
Simule antes do prompt da carteira: Poupe usuários de pagar por erros previsíveis (Assinatura e envio).
-
Defina signers fee payer explicitamente: Strings de endereço sozinhas não assinam (Keypairs e signers).
-
Prepend instruções compute budget: Priority fees e limites CU vêm primeiro na mensagem.
-
Prefira mensagens versão 0: Padrão para ALTs e validadores modernos.
-
Gere codecs a partir da IDL: Layouts manuais derivam de programas Anchor 0.32.1 (Codecs e serialização).
-
Regenere clientes Codama no CI: Falhe builds quando IDL mudar pastas geradas sujas.
-
RPC de provedor em produção: Endpoints públicos limitam taxa; use URLs com chave.
-
Combine commitment ao risco:
confirmedpara UX;finalizedpara leituras de tesouraria. -
Nunca embuta segredos mainnet no frontend: Código browser é público; use carteiras ou patrocínio servidor.
-
Logue assinaturas e links do explorer: Tickets de suporte precisam de IDs de transação rastreáveis.
-
Trate rejeições de carteira com graça: Usuários cancelam conexões e assinaturas - UX de retry clara.
-
Migre do web3.js por rota: Dual stacks dobram bundle e bugs (Migrando do web3.js v1).
-
Use
sendAndConfirmTransactionFactorycom WSS: Loops de confirmação só HTTP são frágeis sob carga. -
Comprima com dados ALT frescos: Recarregue contas de lookup table antes de
compressTransactionMessageUsingAddressLookupTables. -
Tipifique endereços com
address(): Capture base58 inválido na construção. -
Teste contra Surfpool 0.12.0: Execuções locais compatíveis Agave antes de gastar devnet.
-
Documente capacidades RPC: DAS, APIs de priority fee e simulação diferem por vendor.
-
Mantenha versões de carteira e kit alinhadas: templates create-solana-dapp acompanham pares adapter + kit compatíveis.
FAQs
Novos apps devem começar com kit?
Sim - web3.js v1 é legado para TypeScript greenfield.
gill é obrigatório?
Não - acelera bootstrap mas kit é a dependência core.
Um cliente RPC por app?
Tipicamente uma factory HTTP + uma WSS reutilizada via context.
Quão grandes devem ser os bundles?
Audite com seu bundler - tree-shaking só funciona com imports estreitos.
Config devnet vs mainnet?
Variáveis de ambiente por deploy; nunca hardcode URLs mainnet em componentes compartilhados.
Relacionados
- Noções básicas do @solana/kit - intro prática
- Melhores práticas de integração de carteira - signers browser
- Melhores práticas de clientes tipados - clientes orientados por IDL
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.