Dr. The Daniel ๐Ÿ––
Dr. The Daniel ๐Ÿ––
Home About RSS Feed ๐Ÿ“ก Admin
← Back to all articles Nostr Forever

Nostr Forever

Sep 4, 2026 • 5 min read

If your web client uses the nostr-tools relay pool, itโ€™s been silently breaking your browser for years. Nobody could figure out why. We solved it last night with a single line of code.

Jumble has been my go-to web client for more than a year, because of its versatility, customizability, and overall design. Itโ€™s built the way I like to use Nostr in the browser, doesnโ€™t prioritize fluff influencer content, and supports features I actually use, like custom emojis and relay feeds. @nprofile1...hyat, its creator, has also been a pleasure to work with. He encouraged me early in my vibecoding journey, and has merged several of my feature submissions and bug fixes along the way. When I had the idea to attempt the first @nprofile1...w55h SDK integration into a Nostr client, I chose Jumble to build on first.

A few months ago, I had the idea to attempt a massively challenging project to build a best-in-class NIP-07 signer that sits alongside your browser window as an active companion to your Nostr experience. @nprofile1...vwyw, as I named it, securely stores multiple nsecs to allow fast user switching in browser clients. This is ideal if you manage a brand account, or a fun alt (I have one for my dog @nprofile1...hkc8), or you need a throwaway account to test while youโ€™re building something. It also lets you connect an NWC wallet to each account, and stores backups of your profile, follows, and mute lists on your relays in case another client nukes them by mistake. It even warns you if something youโ€™re about to sign will erase any of your information, so you can avoid even needing to recover it after the fact.

Anyway, for the longest time, I struggled to get Sidecar to work properly with Jumble. Reposts and reactions did absolutely nothing. I couldnโ€™t find an error, just loading indicators that pulsed forever as if the client was waiting for something that never arrived. Relay authentication took 30 seconds or more, when it even worked at all. Clearing the cache and restarting the browser usually fixed it, and not long after, it was broken again.

I began to think the bug was somewhere in Sidecar. I went looking through the appโ€™s signing queue, its relay handling, and its permissions. I found bugs in all three and fixed them, but none of it made any difference. Then I checked the relays themselves from outside the browser and every one of them answered almost instantly. The relays were working. Sidecar was signing normally. But there was something else in the way.

The answer turned out to be the browserโ€™s network tab. It was full of connections to the same handful of relays, over and over, seven to one relay alone. Every one of them had connected successfully and then transferred nothing at all. Some had been sitting open for more than an hour. In that one session the browser had opened roughly 700 of them.

Thatโ€™s when it all made sense. The problem had to be in the clientโ€™s own dependencies. Jumble, like many other Nostr web clients including Sidecar, relies on the nostr-tools library. When the client needs to talk to a relay, it opens a websocket, and when one of those connections fails, it stays open for the entire life of that browser session. Clients that use the outbox model connect to the relays of everyone you follow to find their latest notes, and that list piles up very quickly. A browser is only designed to hold a limited number of these connections, and once those are exhausted, nothing else can connect. Not Jumble, not Sidecar, not any other tab you have open. Signing still works, because signing doesnโ€™t need a relay, so your client hands you a perfectly good signed event that canโ€™t go anywhere. Thatโ€™s exactly why nothing seemed to be happening.

I worked through these problems methodically using two different agent sessions, one with Claude Opus 5 and the other with GLM 5.3-Flash. We passed information back and forth, and ultimately, Claude came back with the fix. I opened an issue with a full explanation of the problem and a solution in code. Within half an hour, @nprofile1...47w9 had already patched it, published nostr-tools 2.25.2, and commented, โ€œDid you just save Nostr forever?โ€

The fix is one line, in two places, slightly modified from the original:

text
this.ws?.close?.()

Thatโ€™s it. Thatโ€™s the fix. Close the broken socket you left open.

Now, every client using the nostr-tools relay pool gets this with a dependency bump. Other clients that run on NDK or maintain their own networking layer donโ€™t need the fix, and were never affected by this issue.

This is what I love about open source software, and itโ€™s what keeps drawing me in deeper. I donโ€™t have a strong background in handwritten code, but I have a career of solving complex problems in creative ways, and as any of you who know me well will probably agree, I am fucking relentless when I set my mind on accomplishing something.

In the past two years, I pivoted my entire career direction, for at least the third time in under a decade. In that time, I received two awards in the Breez challenge. I got accepted into the @nprofile1...0qlr Startup School, where Iโ€™ve been building @nprofile1...t5x0 with my friend @nprofile1...ksk8. I joined @nprofile1...3uqt, a company with deep roots in Nostr and the Bitcoin community, that has given me the freedom and tools to build and experiment alongside a team of absolute rockstars.

I choose to build on the Nostr and Bitcoin ecosystem because nothing else Iโ€™ve found has ever given me this level of ownership, and personal fulfillment, and I couldnโ€™t imagine being anywhere else. Even if almost nobody gets it yet.

#NostrForever

Dr. The Daniel ๐Ÿ––

Dr. The Daniel ๐Ÿ––

I make stuff for Nostr and Lightning. ๐Ÿ’œโšก๏ธ๐Ÿ–– Powered by Spite-as-a-Service. #NostrForever Sidecar mixologist. ๐Ÿธ๐ŸŠ https://sidecar.top Ghost in the machine ๐Ÿ‘ปโš™๏ธ https://ghostr.org Spacewalker at nostr:npub1fmunwy3lljfyzlgyuyman79lxwm4efz6pzlgqjwc400pr9l708qquvje8w โœจ๐Ÿ‘ฉโ€๐Ÿš€ https://resolvr.io Short order vibecook ๐Ÿ‘จ๐Ÿปโ€๐Ÿณ๐Ÿณ https://zap.cooking 2025 nostr:npub1jugar2agq6369p0l86razavs9shj2p6pscxecevs8j94ap37hkqsjlfc28 </time2build> winner ๐Ÿ† Sats Factory worker โšก๏ธ๐Ÿญ https://satsfactory.com Nodestrich runner ๐Ÿƒโ€โ™‚๏ธโšก๏ธ๐Ÿ’œโ™พ๏ธ https://nodestrich.com Zombie hunter ๐Ÿน๐ŸงŸโ€โ™‚๏ธ https://plebsvszombies.cc Mute list maximalist ๐Ÿคซ๐Ÿ”‡ https://mutable.top Meetup disorganizer ๐Ÿ—ฝ๐Ÿงก https://harlembitcoin.com Chief band namer ๐Ÿค˜๐ŸŽธ nostr:npub12cqtmej8mutnwu0yzfmshznaxltetmn7nkzranps7v4dsxuc6mnqdf5pmv Crash test dummy wallet tester in residence ๐Ÿ’ฅโš ๏ธ Created 2008.jpeg, the first NFT on Nostr (sort of) Are you a Dan? Ask about membership in #OnlyDans ๐Ÿซ‚ Follow the best dog ever ๐Ÿถ๐Ÿ’œ nostr:npub1cudap5kkjdvnv78v08m3748afshj0u3zh9h34svrf4nhn07gn4lscflujc I helped invent the Blocktron ๐Ÿง ๐Ÿ’ก https://blocktron.io Someone once called me a Nostr โ€œfake-fluencerโ€ because I said their app didnโ€™t work (it didnโ€™t) Muted by the guy who thinks sats arenโ€™t the standard #SatsAreTheStandard โœจ Reported for โ€œspamโ€ by nostr:npub1lh273a4wpkup00stw8dzqjvvrqrfdrv2v3v4t8pynuezlfe5vjnsnaa9nk for saying โ€œBLV is DOAโ€ ๐Ÿคก The ex-head engineer at Truth Social called me a slop coder but nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6 said I saved Nostr forever ๐Ÿซถ Unapologetic globetard ๐ŸŒŽ๐ŸŒ๐ŸŒ I was #1 on the #NostrRichList for 4 hours ๐Ÿ’ฐ Iโ€™m not a real doctor, but I play one on Nostr. ๐ŸŽ“ Used to work at a bar, but then I grew up ๐Ÿป GM โ˜€๏ธ PV ๐Ÿ–– since: 767700 No DMs, please. โ›”๏ธ

daniel@sidecar.top
About Author
Dr. The Daniel ๐Ÿ––
Dr. The Daniel ๐Ÿ–– โœ“ daniel@sidecar.top

I make stuff for Nostr and Lightning. ๐Ÿ’œโšก๏ธ๐Ÿ–– Powered by Spite-as-a-Service. #NostrForever Sidecar mixologist. ๐Ÿธ๐ŸŠ https://sidecar.top Ghost in the machine ๐Ÿ‘ปโš™๏ธ https://ghostr.org Spacewalker at nostr:npub1fmunwy3lljfyzlgyuyman79lxwm4efz6pzlgqjwc400pr9l708qquvje8w โœจ๐Ÿ‘ฉโ€๐Ÿš€ https://resolvr.io Short order vibecook ๐Ÿ‘จ๐Ÿปโ€๐Ÿณ๐Ÿณ https://zap.cooking 2025 nostr:npub1jugar2agq6369p0l86razavs9shj2p6pscxecevs8j94ap37hkqsjlfc28 </time2build> winner ๐Ÿ† Sats Factory worker โšก๏ธ๐Ÿญ https://satsfactory.com Nodestrich runner ๐Ÿƒโ€โ™‚๏ธโšก๏ธ๐Ÿ’œโ™พ๏ธ https://nodestrich.com Zombie hunter ๐Ÿน๐ŸงŸโ€โ™‚๏ธ https://plebsvszombies.cc Mute list maximalist ๐Ÿคซ๐Ÿ”‡ https://mutable.top Meetup disorganizer ๐Ÿ—ฝ๐Ÿงก https://harlembitcoin.com Chief band namer ๐Ÿค˜๐ŸŽธ nostr:npub12cqtmej8mutnwu0yzfmshznaxltetmn7nkzranps7v4dsxuc6mnqdf5pmv Crash test dummy wallet tester in residence ๐Ÿ’ฅโš ๏ธ Created 2008.jpeg, the first NFT on Nostr (sort of) Are you a Dan? Ask about membership in #OnlyDans ๐Ÿซ‚ Follow the best dog ever ๐Ÿถ๐Ÿ’œ nostr:npub1cudap5kkjdvnv78v08m3748afshj0u3zh9h34svrf4nhn07gn4lscflujc I helped invent the Blocktron ๐Ÿง ๐Ÿ’ก https://blocktron.io Someone once called me a Nostr โ€œfake-fluencerโ€ because I said their app didnโ€™t work (it didnโ€™t) Muted by the guy who thinks sats arenโ€™t the standard #SatsAreTheStandard โœจ Reported for โ€œspamโ€ by nostr:npub1lh273a4wpkup00stw8dzqjvvrqrfdrv2v3v4t8pynuezlfe5vjnsnaa9nk for saying โ€œBLV is DOAโ€ ๐Ÿคก The ex-head engineer at Truth Social called me a slop coder but nostr:npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6 said I saved Nostr forever ๐Ÿซถ Unapologetic globetard ๐ŸŒŽ๐ŸŒ๐ŸŒ I was #1 on the #NostrRichList for 4 hours ๐Ÿ’ฐ Iโ€™m not a real doctor, but I play one on Nostr. ๐ŸŽ“ Used to work at a bar, but then I grew up ๐Ÿป GM โ˜€๏ธ PV ๐Ÿ–– since: 767700 No DMs, please. โ›”๏ธ

Value 4 Value

Comments & Discussions (0)

Decentralized replies powered by Nostr (NIP-22 / NIP-10)
Loading Nostr comments...
๐Ÿท๏ธ Topics
No items in this list.