Skip to main content

JS Kit SDK quickstart

Use JS Kit SDK v1 to resolve a .sns domain and query domain data for a wallet.

Setup

Complete the JS Kit SDK installation, then create the shared RPC client:

import {
createDefaultRpcTransport,
createSolanaRpcFromTransport,
} from "@solana/kit";

const transport = createDefaultRpcTransport({
url: "https://your-rpc-endpoint.example",
});
const rpc = createSolanaRpcFromTransport(transport);

Common usage

Resolve a domain

Pass a full .sns name to resolve:

import { resolve } from "@solana-name-service/sns-sdk-kit";

const owner = await resolve({ rpc, domain: "name.sns" });
console.log(owner);
// => "<BASE58_ADDRESS>"

resolve returns the effective owner as a Solana Kit Address.

For .sol resolution that must verify the SRS and corresponding SNS targets match when SRS-backed resolution is enabled in a future update, use safeResolve({ rpc, domain: "name.sol" }) instead.

Get a primary domain

Use getPrimaryDomain with the wallet address:

import { getPrimaryDomain } from "@solana-name-service/sns-sdk-kit";
import type { Address } from "@solana/kit";

const walletAddress = "<WALLET_ADDRESS>" as Address;
const primary = await getPrimaryDomain({ rpc, walletAddress });

if (!primary.stale) {
console.log(`${primary.domainName}.sns`);
// => "name.sns"
}

domainName is TLD-less. Append .sns for display. Do not present a stale result as the wallet's current primary domain.

Get domains for an owner

Use getSnsDomainsForAddress to retrieve top-level domains owned by the wallet:

import { getSnsDomainsForAddress } from "@solana-name-service/sns-sdk-kit";
import type { Address } from "@solana/kit";

const address = "<WALLET_ADDRESS>" as Address;
const domains = await getSnsDomainsForAddress({ rpc, address });
const suffixedDomains = domains.map(({ domain }) => `${domain}.sns`);

console.log(suffixedDomains);
// => ["name.sns", "another-name.sns"]

Each result contains a TLD-less domain and its domainAddress. Results omit names without reverse data and do not include tokenized domains or subdomains.

Next steps