Skip to main content
Install Lookup 0.11.0 to read names, payment instructions and identity records. It needs no signer. The testnet preset uses the current Registry, Lookup and Primary deployment.
Use Node.js 22.12 or newer. The supported Stellar SDK peer range is >=17 <18. The package is ESM with TypeScript types and supports Node, browsers and workers. To write records, use the Holder SDK. To issue names or configure a namespace, use the Owner SDK. Their TxSigner adapters use a classic G account as the transaction source. Holder also accepts a contractWallet adapter with a C address and signAuthorization callback for supported contract-wallet operations, including native claims. The C wallet authorizes the exact Soroban invocation through its __check_auth implementation; the separate G transaction signer pays network fees and submits. This requires wallet-specific authorization code and Registrar contract_claim_version() == 1 for claims. It does not imply every Holder method or hosted prepare route supports C holders; the current network-address write methods use the G signer.

Universal mode is the default

This example uses the bundled testnet configuration. Universal Lookup discovers each namespace’s Registrar and Resolver on chain. For a custom deployment, provide its matching registryId, lookupId, rpcUrl and passphrase. The quickstart shows explicit current testnet IDs. Pinning those values lets you select a deployment independently of package updates.
  • A missing Lookup configuration throws CONFIG.
  • A custom Registry or network passphrase does not inherit an unrelated Lookup or Primary pin.
  • The SDK currently provides a testnet preset only.

Configure Primary reads

In universal mode, primaryId has three meanings: Complete-M Primary is stored in Lookup and does not use this Primary pin.

Explicit direct compatibility mode

Choose direct mode only for an integration that deliberately reads native Resolvers itself. lookupId: null also selects it. Direct mode checks Registry, Registrar authority and payment capability. Version 1 selects the native payment ABI; version 2 additionally requires destination version 2 and supports M. Failed or unknown capability reads throw instead of selecting an older ABI. lookup, namespaceMetadata, nameMetadata and M identity reads require universal mode. The new status and batch/history reads also require universal mode and their matching contract capabilities.

Other options

HTTPS is required except for allowed local-development hosts. Names are checked for ASCII before lowercasing, and whitespace is not trimmed. Malformed configuration or name input must be corrected rather than retried as an absent record. See reference for methods, result types and typed failures.

Write-client fee limit

Owner 0.12.0 and Holder 0.10.0 include a shared per-transaction fee ceiling. Use the matching release configuration. Add maxNetworkFeeStroops to either write client’s configuration to cap the total network fee for each transaction, including storage restoration:
The default is 5 XLM. This is a maximum, not a flat charge. The client checks the final transaction before asking the signer to approve it. Username prices and namespace application fees remain separate contract payments. maxNativeFeeStroops remains an optional additional limit for native operations; the lower applicable limit wins. If you omit maxNetworkFeeStroops, an explicitly configured maxNativeFeeStroops supplies the general ceiling too. Valid limits are positive bigint values up to 4_294_967_295n stroops. A restoration and the requested write are separate transactions, each subject to the ceiling. For workflows such as setProfile that submit several transactions, the limit applies to each transaction rather than the whole workflow. Review the estimates before raising the limit.