Description
Flare doesn't currently support zaps (NIP-57) on Nostr posts. Zaps are a pretty core part of the Nostr experience — most active clients (Amethyst, Damus, Primal, Nostrudel, Snort) support at least basic zap sending, so its absence stands out when browsing Nostr content in Flare's unified timeline.
I'm a regular Flare user across Nostr and the other supported platforms, and this is the main thing that sends me back to a Nostr-only client for that part of my timeline.
Suggested scope
I'd frame this as two separable pieces, since the second is meaningfully bigger than the first:
- Basic zap sending — read
lud16/lud06 from a profile's metadata, fetch the LNURL-pay invoice, and hand it off to the user's existing Lightning wallet app (deep link or QR code) to pay. No wallet custody or balance inside Flare at all — just the NIP-57 request/receipt plumbing plus a zap button and amount on posts. In practice this is close to "just add a zap icon" on each post: any wallet that exposes a standard Lightning address works out of the box, no per-wallet integration needed. Rizful is a good example — free, no-KYC, browser-based, and its whole onboarding flow for Nostr is built around exactly this: set a lud16 address, connect it to a client, get zapped. If Flare just speaks LNURL-pay against whatever address is in the profile, wallets like Rizful (or Alby, Wallet of Satoshi, etc.) work immediately without Flare knowing anything about them specifically.
- Nostr Wallet Connect (NIP-47) — lets users link a remote wallet for one-tap zaps without leaving the app. Bigger surface area (connection management, balance display, security considerations around stored connection secrets), so probably a separate effort after (1) lands, if there's interest at all.
I'm not proposing an implementation here — wanted to check whether this fits where you want Flare to go before anyone (myself included) puts time into it. Happy to help however's useful, whether that's scoping, testing, or writing the NIP-57 piece myself once there's agreement on direction.
For reference, Amethyst's quartz library has a mature Kotlin implementation of both NIP-57 and NIP-47 that could be a useful reference point, license permitting.
Description
Flare doesn't currently support zaps (NIP-57) on Nostr posts. Zaps are a pretty core part of the Nostr experience — most active clients (Amethyst, Damus, Primal, Nostrudel, Snort) support at least basic zap sending, so its absence stands out when browsing Nostr content in Flare's unified timeline.
I'm a regular Flare user across Nostr and the other supported platforms, and this is the main thing that sends me back to a Nostr-only client for that part of my timeline.
Suggested scope
I'd frame this as two separable pieces, since the second is meaningfully bigger than the first:
lud16/lud06from a profile's metadata, fetch the LNURL-pay invoice, and hand it off to the user's existing Lightning wallet app (deep link or QR code) to pay. No wallet custody or balance inside Flare at all — just the NIP-57 request/receipt plumbing plus a zap button and amount on posts. In practice this is close to "just add a zap icon" on each post: any wallet that exposes a standard Lightning address works out of the box, no per-wallet integration needed. Rizful is a good example — free, no-KYC, browser-based, and its whole onboarding flow for Nostr is built around exactly this: set alud16address, connect it to a client, get zapped. If Flare just speaks LNURL-pay against whatever address is in the profile, wallets like Rizful (or Alby, Wallet of Satoshi, etc.) work immediately without Flare knowing anything about them specifically.I'm not proposing an implementation here — wanted to check whether this fits where you want Flare to go before anyone (myself included) puts time into it. Happy to help however's useful, whether that's scoping, testing, or writing the NIP-57 piece myself once there's agreement on direction.
For reference, Amethyst's
quartzlibrary has a mature Kotlin implementation of both NIP-57 and NIP-47 that could be a useful reference point, license permitting.