@solana/client houdt de runtime oppervlakte slank. Eén store, één RPC stack en
een wallet registry voeden de verschillende helpers zodat dezelfde instantie
CLI's, scripts of volledige UI's kan ondersteunen. Actions, watchers en helpers
delen allemaal cache, subscriptions en wallet sessies via die enkele client.
Wanneer je een puur React-ervaring bouwt, is het meestal sneller om te
beginnen met @solana/react-hooks. Het hooks
pakket wikkelt dezelfde client runtime in en biedt kant-en-klare hooks zodat
je alleen naar de headless client gaat wanneer je extra controle nodig hebt.
Installeren
$npm install @solana/client
Gebruik elke package manager; de client draait in browsers, workers, React, Svelte of server-side runtimes.
Maak eenmalig een client aan
Kies Wallet Standard connectors (auto discovery is de snelste manier om te starten), maak vervolgens de client aan. Dit enkele object biedt toegang tot de store, actions, watchers en helpers.
import { autoDiscover, createClient } from "@solana/client";const client = createClient({endpoint: "https://api.devnet.solana.com",websocketEndpoint: "wss://api.devnet.solana.com",walletConnectors: autoDiscover()});await client.actions.connectWallet("wallet-standard:phantom");const balance = await client.actions.fetchBalance("Fke...address");console.log(balance.lamports?.toString());
De client store houdt cluster config, subscriptions, pending transactions en wallet sessies bij. Je kunt je eigen Zustand store aanleveren als je persistentie of multi-tab coördinatie nodig hebt.
Wallet orkestratie
Connectors bevatten Wallet Standard metadata plus connect/disconnect logica.
Registreer de ingebouwde phantom(), solflare(), backpack(), of
autoDiscover() helpers, of wikkel custom providers in met
createWalletStandardConnector. Alle wallet actions (connect, disconnect, sign,
send) lopen via de client registry zodat elke consumer gesynchroniseerd blijft.
Actions, watchers en helpers
- Actions wikkelen veelvoorkomende RPC reads en writes in terwijl ze de
store updaten (bijv.
fetchAccount,requestAirdrop,setCluster). - Watchers multiplexen websocket subscriptions, streamen updates naar de store en geven je abort handles voor cleanup.
- Helpers bieden hogere-niveau flows zoals SOL transfers, SPL token helpers, signature polling en transaction pools.
const abortWatcher = client.watchers.watchBalance({ address: "Fke...address" },(lamports) => {console.log("live balance", lamports.toString());});// Later when the component unmounts or the flow endsabortWatcher.abort();
Transactie helper patroon
De transactie helper beheert blockhash verversing, fee payer resolutie en ondertekening. Je kunt voorbereiden, inspecteren en verzenden met welke UX je ook prefereert.
const prepared = await client.helpers.transaction.prepare({authority: client.store.getState().wallet.session!,instructions: [instructionA, instructionB]});await client.helpers.transaction.simulate(prepared, {commitment: "processed"});const signature = await client.helpers.transaction.send(prepared);console.log("submitted", signature.toString());
Gebruik prepareAndSend voor een voorgebouwde flow (simulatie plus logging) of
roep sign / toWire aan om handmatig handtekeningen te verzamelen voordat je
het wire formaat zelf doorstuurt.
Veelvoorkomende patronen voor Solana ontwikkelaars
- Headless state machines: Draai de client binnen API routes, scripts of workers om dezelfde wallet + RPC orchestratie logica te hergebruiken die je UI aandrijft.
- Realtime dashboards: Combineer watchers (saldi, accounts, handtekeningen) met je favoriete UI bibliotheek; de client handelt websocket fan-out en cache invalidatie af.
- Custom stores: Injecteer je eigen Zustand store om te hydrateren vanuit IndexedDB/localStorage, spiegel state naar server sessies, of coördineer tussen browsertabbladen.
- Bridge naar React hooks: Geef een geconfigureerde client instantie door
aan
@solana/react-hookswanneer je ergonomische hooks bovenop dezelfde runtime wilt. - Testbaarheid: De enkele client interface kan worden gemockt in unit tests, waardoor het eenvoudig is om RPC responses of wallet sessies te simuleren zonder dat er een browserwallet aanwezig is.
Is this page helpful?