<>ts-stack
Get StartedArchitecturePackagesSpecsGuides
⌘K
Reference
Home
Get StartedOverviewInstallChoose your stackKey concepts
ArchitectureOverviewStack layersBEEF (BRC-62)BRC-100 Wallet InterfaceIdentity & AuthConformance pipeline
PackagesOverviewSDKWallet
@bsv/wallet-toolbox@bsv/btms@bsv/btms-permission-module@bsv/wallet-relay@bsv/wallet-toolbox-examples
NetworkOverlaysMessagingMiddlewareHelpers
InfrastructureOverviewmessage-box-serveroverlay-serveruhrp-server-basicuhrp-server-cloud-bucketwabwallet-infrachaintracks-server
SpecsOverviewBRC-100 Wallet InterfaceOverlay HTTPMessage-box HTTPAuthsocket (WebSocket)BRC-31 Auth HandshakeBRC-29 Peer PaymentBRC-121 / HTTP 402ARC BroadcastMerkle ServiceStorage AdapterGASP SyncUHRPAir-Gap Optical (BRC-141)
ConformanceOverviewVector catalogTS runnerContributing vectors
GuidesOverviewBuild a wallet-aware appRun an overlay nodePeer-to-peer messagingHTTP 402 payments
ReferenceOverviewBRC indexRepository health
AboutVersioningContributingDoc agentDocumentation sources
npmhttps://www.npmjs.com/package/@bsv/wallet-toolbox-clientv2.10.3API reference (TypeDoc) ↗
Loading…
Edit this page on GitHub
© 2026 BSV Blockchain. ts-stack is open-source.
GitHubContributingVersioning

@bsv/wallet-toolbox-client

@bsv/wallet-toolbox-client is the browser-safe Wallet Toolbox distribution. It includes the BRC-100 wallet, signer, services, IndexedDB storage, and remote storage client without Node-only Knex, SQLite, MySQL, or filesystem adapters. IndexedDB listOutputs results keep totalOutputs equal to the full matching count across short final and out-of-range pages. Related browser noSend chains retain local action batching, while unrelated actions cannot join or commit the active workspace. Supported remote providers can resume a soft-expired workspace using its exact persisted inputs. WalletStorageManager.getStores() retains each remote provider's configured endpointURL after production bundlers minify class names, so backup selection and make-primary flows remain stable. Immediate browser actions can chain wallet-managed change from a delayed parent only after completed and unproven liquidity is exhausted or exact serialized-cost comparison proves that a pathological settled plan is larger. Pending funds are never hidden. IndexedDB wallets migrate exact untouched 144-output / 32-satoshi defaults to a progressive 5,000-satoshi preference. Durable permission tokens retain delayed broadcast so permission approval does not inherit network latency. Opt-in remote-storage timing spans retain trace and parent-span correlation in the telemetry sink without adding headers to authenticated requests.

The browser distribution also exposes the WAB UMP ambiguity fallback and OTP-verified startPhoneNumberChange / completePhoneNumberChange flow. A settings UI may submit the current number to force a fresh presentation hash; it must persist the wallet snapshot immediately after success. Browser authentication accepts one verified matching UMP token as an existing account. When no token verifies, one clean empty overlay response establishes a new account even if other hosts fail or return malformed records.

The browser build includes the fetch-based, credential-free ChainTracks v2 client and reconnecting SSE adapter without Node-only modules. Public defaults cover mainnet, testnet, and TerraTestNet; STN/TSTN use an injected or configured endpoint.

The portable local controller coalesces stale height refresh and immutable object loads, applies failed-load backoff, and validates through the asynchronous InlineBulkFileDataValidator without importing Node worker or filesystem code.

Install

bash
npm install @bsv/wallet-toolbox-client @bsv/sdk

Use

ts
import {
  Services,
  StorageClient,
  Wallet,
  WalletSigner,
  WalletStorageManager
} from '@bsv/wallet-toolbox-client'

The package publishes browser/import ESM and CommonJS conditions with matching declarations. Its installed-consumer gate bundles the exact tarball with Vite and esbuild, rejects Node-only modules, validates source maps, and enforces compressed and uncompressed size budgets.

Remote Wallet Storage often serves public web, extension, WUI, and mobile clients from origins unknown at build time. The client imposes no origin allowlist. Operators may explicitly configure one at the service edge, but CORS is not authentication; storage authorization and identity isolation remain mandatory in either mode.

See the package README for complete remote and IndexedDB setup.

License

Open BSV License Version 6. See the package license.