iOS: invite deep link opens blank Home and never claims the invite
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
## Summary
A community invite link opens the Buzz iOS app, but the app lands on an empty **Home** screen and does not process or claim the invite. This makes mobile-first onboarding impossible unless the user first pairs with Buzz Desktop.
The relay is healthy and the invite page itself loads correctly. Server logs show the invite-page GET, but no mobile invite-claim request after the app opens.
## Steps to reproduce
1. Create an invite for a self-hosted Buzz community.
2. Send the HTTPS invite URL to a new iPhone user.
3. Open the link in Safari/Chrome.
4. Tap **Accept invite in Buzz**.
5. Buzz mobile opens.
## Actual behavior
Buzz opens to a blank Home screen showing only the bottom navigation and a floating `+` button. The community is not added and no error is displayed.
On the relay:
- `GET /invite/v2.` returns HTTP 200.
- The invite landing page and assets load.
- No subsequent `POST /api/invites/claim` is observed from the phone.
- The community, TLS/WSS endpoint, Postgres, Redis, MinIO, and pairing relay are healthy.
## Expected behavior
Buzz mobile should consume the `buzz://join?relay=...&code=...` payload, allow the user to create or select a mobile identity, claim the invite, and open the joined community without requiring Buzz Desktop.
## Why this matters
An invite is for onboarding another person. Requiring that person to install and configure Buzz Desktop before mobile works makes the iOS app a companion-only client and blocks normal mobile-first team invitations.
## Environment
- Platform: iOS
- Mobile build: App Store/TestFlight version unknown
- Relay: self-hosted on Railway using the Buzz community template
- Relay URL: `wss://buzz-production-8a4f.up.railway.app`
- Observed: 2026-08-06
## Related issues
- #3211 describes invite-link joins reaching mobile but storing/rewriting the relay scheme incorrectly.
- #4307 describes a successful claim followed by an empty community because no channel membership exists.
- #4604 describes a successful claim followed by no WebSocket connection.
- #2324 explicitly distinguishes pairing your own phone from sending another person an invite.
This reproduction appears earlier in the flow: the deep link opens the app, but the relay sees no claim request at all.
## Suggested acceptance criteria
- Opening an HTTPS invite on iOS launches Buzz and preserves the relay URL and invite code.
- A fresh mobile user can create/import an identity and claim the invite directly.
- The relay receives the claim request and the user lands in at least one visible welcome/default channel.
- Failures show an actionable error instead of an empty Home screen.
Contributor guide
Research direction
Start by tracing the iOS HTTPS invite handoff into the mentioned buzz://join?relay=...&code=... payload, then follow the mobile identity flow to POST /api/invites/claim. Verify with a fresh mobile identity that the relay receives the claim and the app opens a visible welcome/default channel; failures should be actionable rather than a blank Home screen.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, rust
- Domain
- mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100