unionlabs/union · error · Error

Wallet does not support standard:connect

Error message

Wallet does not support standard:connect

What it means

The Sui wallet store casts the wallet-standard Wallet to WalletWithFeatures<SuiWalletFeatures> and requires its features["standard:connect"] entry before connecting. If the discovered wallet does not advertise the standard:connect feature, connection is refused with this error. The surrounding class already recorded errorWalletId and persisted state before this point, so the failure is recoverable by picking another wallet.

Source

Thrown at app2/src/lib/wallet/sui/config.svelte.ts:190

    const wallet = pickSuiWallet(walletId)

    if (!wallet) {
      this.connectionStatus = "disconnected"
      this.connectedWallet = undefined
      this.connectionError = "Wallet not found"
      this.errorWalletId = walletId
      this.saveToStorage()
      return
    }

    try {
      const suiWallet = wallet as WalletWithFeatures<SuiWalletFeatures>
      const connectFeature = suiWallet.features["standard:connect"] as {
        connect: (input?: { silent?: boolean }) => Promise<{ accounts: readonly unknown[] }>
      }

      if (!connectFeature) {
        throw new Error("Wallet does not support standard:connect")
      }

      const res = await connectFeature.connect({ silent: false })
      const accounts = res?.accounts ?? wallet.accounts
      const account = accounts?.[0] as AnyWallet["accounts"][number] | undefined

      if (!account) {
        throw new Error("No Sui account returned by wallet")
      }

      this._account = account
      this._signer = createSigner(suiWallet, account)
      this.address = account.address
      this.connectedWallet = walletId
      this.connectionStatus = "connected"

      wallets.suiAddress = S.decodeOption(Ucs05.SuiDisplay)({
        _tag: "SuiDisplay",

View on GitHub (pinned to 031785bb6d)

Solutions

  1. Update or reinstall the wallet extension to a Wallet-Standard-compliant version
  2. Filter the selectable wallet list on features["standard:connect"] presence so incompatible wallets are never clickable
  3. Offer well-known Sui wallets (Suiet, Slush, Ethos) as fallback

Example fix

// before
const connectFeature = suiWallet.features["standard:connect"] as {...}
if (!connectFeature) {
  throw new Error("Wallet does not support standard:connect")
}

// after (filter in the wallet list instead of failing at connect time)
const connectableWallets = wallets.filter(w =>
  typeof (w.features?.["standard:connect"] as { connect?: unknown } | undefined)?.connect === "function"
)
Defensive patterns

Strategy: type-guard

Validate before calling

const connectable = Object.keys(wallet.features ?? {}).includes("standard:connect")
if (!connectable) {
  notify(`${wallet.name} cannot connect from this app. Update or pick another wallet.`)
  return
}

Type guard

const supportsStandardConnect = (w: Wallet): w is WalletWithFeatures<SuiWalletFeatures> =>
  typeof (w.features?.["standard:connect"] as { connect?: unknown } | undefined)?.connect === "function"

Try / catch

try {
  await suiWallets.connect(walletId)
} catch (e) {
  if (e instanceof Error && e.message.includes("standard:connect")) {
    // filter this wallet out of the picker and notify
  }
}

Prevention

When it happens

Trigger: A wallet registered in the wallet-standard registry but lacking standard:connect (e.g. only exposing standard:events); an outdated wallet extension; feature detection racing a wallet still initializing.

Common situations: Niche or outdated Sui browser wallets; wallets that register on install but need an update to fully implement the Wallet Standard.

Related errors


AI-assisted analysis of unionlabs/union@031785bb6d (2026-08-16). Data as JSON: /api/errors/918da0fc36cfcc6d. Report an issue: GitHub.