Summary
Browser Fedimint clients using @fedimint/fedimint-client-wasm-bundler@0.1.1 and @fedimint/transport-web@0.1.2 (the latest published releases) fail to upgrade the WebSocket connection to iroh-relay servers, receiving HTTP/1.1 400 Bad Request.
Repro
- Create a browser Fedimint client using the latest published SDK
- Attempt to join any federation that uses iroh-relay (e.g. via use1-1.relay.n0.iroh-canary.iroh.link)
- Observe browser console:
GET wss://use1-1.relay.n0.iroh-canary.iroh.link/relay [HTTP/1.1 400 Bad Request]
Firefox can't establish a connection to wss://use1-1.relay.n0.iroh-canary.iroh.link/relay
The HTTPS GET to https://use1-1.relay.n0.iroh-canary.iroh.link/ returns 200 with "This is an Iroh Relay server" — the server is alive, only the WebSocket upgrade fails.
Hypothesis
iroh 0.91.0 (August 2025) shipped wire-level breaking changes to the relay handshake protocol:
https://www.iroh.computer/blog/iroh-0-91-0-the-last-relay-break
Quoting the release notes:
"made changes to the handshake protocol to tighten up security and potentially remove a round-trip, and made changes to the messaging protocol"
It looks like use1-1.relay.n0.iroh-canary.iroh.link has been upgraded to iroh ≥0.91, but @fedimint/fedimint-client-wasm-bundler@0.1.1 still bundles a pre-0.91 iroh client. The two can't handshake.
Environment
- @fedimint/fedimint-client-wasm-bundler@0.1.1
- @fedimint/transport-web@0.1.2
- Firefox 134 (Chrome behaves identically per spot-check)
- Vite 5.4.21 bundler
- Multiple federations attempted (Bitcoin Principles, Bitcoin Life Federation, Afribit)
- Fedi mobile WORKS against the same federations (native iroh transport, not WebSocket relay)
Asks
- Is there a planned SDK release that targets iroh ≥0.91?
- Are there canary builds I should try that include the iroh bump?
- Is there a workaround we can apply on our side (custom transport, alternative relay endpoint, etc.) while waiting for the SDK update?
Context
I'm building Chama (https://github.com/jesuspirate/chama), a Bitcoin-native non-custodial P2P commerce platform using NIP-44 + Fedimint ecash. Deploy at chama.satoshimarket.app. Browser support is critical for our June 2026 Nairobi launch.
Happy to test fixes, file detailed repros, or contribute. cc @alexlwn123 since you maintain the SDK.
Thanks for all the work on Fedimint.
Summary
Browser Fedimint clients using @fedimint/fedimint-client-wasm-bundler@0.1.1 and @fedimint/transport-web@0.1.2 (the latest published releases) fail to upgrade the WebSocket connection to iroh-relay servers, receiving HTTP/1.1 400 Bad Request.
Repro
The HTTPS GET to https://use1-1.relay.n0.iroh-canary.iroh.link/ returns 200 with "This is an Iroh Relay server" — the server is alive, only the WebSocket upgrade fails.
Hypothesis
iroh 0.91.0 (August 2025) shipped wire-level breaking changes to the relay handshake protocol:
https://www.iroh.computer/blog/iroh-0-91-0-the-last-relay-break
Quoting the release notes:
It looks like use1-1.relay.n0.iroh-canary.iroh.link has been upgraded to iroh ≥0.91, but @fedimint/fedimint-client-wasm-bundler@0.1.1 still bundles a pre-0.91 iroh client. The two can't handshake.
Environment
Asks
Context
I'm building Chama (https://github.com/jesuspirate/chama), a Bitcoin-native non-custodial P2P commerce platform using NIP-44 + Fedimint ecash. Deploy at chama.satoshimarket.app. Browser support is critical for our June 2026 Nairobi launch.
Happy to test fixes, file detailed repros, or contribute. cc @alexlwn123 since you maintain the SDK.
Thanks for all the work on Fedimint.