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.
Solutions
- Update or reinstall the wallet extension to a Wallet-Standard-compliant version
- Filter the selectable wallet list on features["standard:connect"] presence so incompatible wallets are never clickable
- 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
- Filter the wallet picker on features['standard:connect'] presence
- Listen for wallet-standard register events and re-check features when wallets update
- Pin known-good wallet extension versions in e2e tests
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
- Invalid Sui signer: expected Ed25519Keypair
- No return value from channel_balance
- No return value from compute_salt
- No Sui account returned by wallet
- Not a MoveObject
AI-assisted analysis of unionlabs/union@031785bb6d (2026-08-16).
Data as JSON: /api/errors/918da0fc36cfcc6d.
Report an issue: GitHub.
Appendix: 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)