Community

Apps

Snort

Snort is a fast Nostr social client with a deeper technical story than its timeline suggests: the same project ships the web app, TypeScript protocol packages, a worker-relay cache, signer flows, wallet wiring, media uploads and a long record of security hardening.

Snort visual
Snort icon
Apps The product layer Clients, signers, publishing tools, wallets and useful experiments.
Back to Nostr
Apps

Apps shelf

Apps pages collect clients, signers, tools, developer libraries and product research without turning the app into the whole network.

Apps All Apps pages App routeProduct profiles, categories, tools and source links Browse appsClose shelf

Social client context

App categories

App profiles

0xchatadvanced-nostr-searchAegisAlbyAlby GoAlby HubAlby HubAlby SDKAmberAmberAmethystAmethystApp and product researchApplication-specific dataBlossomBlossom spec NIP-B7BookstrBorisBouquetCalendar by FormstrChachiNostr Apps DirectoryCoracleCoracleCorny ChatCreatrDamusDamusDeveloper stack researchDittoDittodiVineDocstrDTANEmojitoFlotillaFlycatFormstrFountainFreeFromFundstrfutrGIF BuddyGittrgo-nostrGossipGossipGrimoireGroups NIP-29HablaHablaHello Nostr — ResourcesHighlighterHiveTalkhomebrew-nostrHORNET StorageHugo2NostrHyperNoteIrisIrisJumblekanbanstrKeys BandListrLNBits NostrmarketLumeLumilumiLUMINAMapstrMarmot Protocolmatrix-nostr-bridgeMeetstrMemestrMindsmonstrmostardMostronaknak — Nostr Army KnifeNalgorithmNarrnashboardNDKNegentropyngitNofluxNosNos Socialnos2xnosbinnosclNostorg Feature MatrixNostr App ManagerNostr Apps Directory GuideNostr clients feature listNostr Compass — ProjectsNostr Developer GuideNostr Development KitNostr Events MonitorNostr MCP ServerNostr NestsNostr PlaygroundNostr Service ProvidersNostr Writernostr-post-checkernostr-protocol/nostrnostr-rubynostr-sdknostr-sdk-ffinostr-sdk-flutternostr-to-rssnostr-toolsNostr.bandnostr.buildnostr.co.uk ClientsNostr.how — Clientsnostr.hsNostrabilityNostrAppsNostrApps category — AudioNostrApps category — CareerNostrApps category — CommunityNostrApps category — CurationNostrApps category — Direct MessageNostrApps category — DiscoveryNostrApps category — File SharingNostrApps category — Group ChatNostrApps category — MeatspaceNostrApps category — OnboardingNostrApps category — SignersNostrApps category — Toolsnostrchecknostrdbnostrdb-rsNostreeNostreonNostriaNostridNostrium / read.nostr.comNostrmoNostrubenoStrudelnoStrudelNostterNosturNosturNotedeckNpub.proNpub.worldnsec.appnsiteNsiteNstart.meObsidian Nostr WriterOlasOpenvibeOracoloOstrich WorkOwn Your PostsP2P BandPazPeridotPhoenixPlebeian MarketPostizPostr / write.nostr.comPrimalPrimalPrimal Article Editor / Reads authoringPrimal Studiopynostrpython-nostrRecommended Application HandlersRelay Toolsrsslayrust-nostrrust-nostr docsSatelliteSatellite EarthSatlantisSatShootShakespeareShopstrSlidestrSnortSnortStemstrswift-nostr-clientTreasuresWavlakeWavlakeWikifreediaWikistrYakiHonneYakiHonneYakiHonne mobile/web app directoryYondar

App pages

Deep dives

Field guides

Awesome Nostr branches

Trust context

Research and library

Source inventory

Deep Research: Clients, apps and product surfacesDeep Research: Developer stack and toolingResearch Map: nostrapps.comResearch Source: 0xchatResearch Source: 0xchat — NostrApps pageResearch Source: advanced-nostr-searchResearch Source: Aegis — NostrApps pageResearch Source: AlbyResearch Source: Alby — NostrApps pageResearch Source: Alby GoResearch Source: Alby HubResearch Source: Alby Hub GitHubResearch Source: Alby SDKResearch Source: AmberResearch Source: Amber — NostrApps pageResearch Source: AmethystResearch Source: Amethyst GitHubResearch Source: Awesome Nostr ResourcesResearch Source: BookstrResearch Source: BorisResearch Source: Boris — NostrApps pageResearch Source: BouquetResearch Source: Bouquet — NostrApps pageResearch Source: Calendar by FormstrResearch Source: ChachiResearch Source: Chachi — NostrApps pageResearch Source: CoracleResearch Source: Coracle — NostrApps pageResearch Source: Corny ChatResearch Source: DamusResearch Source: Damus — NostrApps pageResearch Source: DittoResearch Source: Ditto — NostrApps pageResearch Source: DocstrResearch Source: DTANResearch Source: DTAN — NostrApps pageResearch Source: EmojitoResearch Source: Emojito — NostrApps pageResearch Source: Flotilla — NostrApps pageResearch Source: FlycatResearch Source: FormstrResearch Source: Formstr — NostrApps pageResearch Source: FountainResearch Source: FreeFromResearch Source: FreeFrom — NostrApps pageResearch Source: FundstrResearch Source: futrResearch Source: futr — NostrApps pageResearch Source: GIF BuddyResearch Source: GIF Buddy — NostrApps pageResearch Source: GittrResearch Source: go-nostr GitHubResearch Source: GossipResearch Source: Gossip — NostrApps pageResearch Source: GrimoireResearch Source: Grimoire — NostrApps pageResearch Source: HablaResearch Source: Habla — NostrApps pageResearch Source: Hello Nostr — ResourcesResearch Source: HighlighterResearch Source: HiveTalkResearch Source: HORNET Storage — NostrCompassResearch Source: IrisResearch Source: Iris — NostrApps pageResearch Source: JumbleResearch Source: Jumble — NostrApps pageResearch Source: Keys BandResearch Source: Keys Band — NostrApps pageResearch Source: ListrResearch Source: LNBits NostrmarketResearch Source: LumeResearch Source: LumilumiResearch Source: LUMINAResearch Source: MapstrResearch Source: Marmot ProtocolResearch Source: MeetstrResearch Source: MemestrResearch Source: MindsResearch Source: monstr GitHubResearch Source: mostardResearch Source: MostroResearch Source: my.nostr.comResearch Source: nak — Nostr Army KnifeResearch Source: nak GitHubResearch Source: NalgorithmResearch Source: Narr — NostrApps pageResearch Source: nashboardResearch Source: NDK GitHubResearch Source: NDK NPMResearch Source: NegentropyResearch Source: Noflux — NostrApps pageResearch Source: Nos SocialResearch Source: Nos Social — NostrApps pageResearch Source: nos2xResearch Source: nos2x — NostrApps pageResearch Source: nosbinResearch Source: noscl GitHubResearch Source: Nostorg Feature MatrixResearch Source: Nostr App ManagerResearch Source: Nostr Book — KindsResearch Source: Nostr DesignResearch Source: Nostr Developer GuideResearch Source: Nostr NestsResearch Source: Nostr Nests — NostrApps pageResearch Source: Nostr PlaygroundResearch Source: nostr-post-checkerResearch Source: nostr-protocol/nostr GitHubResearch Source: nostr-sdk crates.ioResearch Source: nostr-sdk-ffi GitHubResearch Source: nostr-tools GitHubResearch Source: nostr-tools NPMResearch Source: Nostr.BandResearch Source: nostr.buildResearch Source: nostr.co.uk ClientsResearch Source: Nostr.howResearch Source: Nostr.how — ClientsResearch Source: Nostr.how — ProtocolResearch Source: Nostr.how — What is Nostr?Research Source: Nostr.orgResearch Source: NostrabilityResearch Source: NostrAppsResearch Source: NostrApps category — AudioResearch Source: NostrApps category — CareerResearch Source: NostrApps category — CommunityResearch Source: NostrApps category — CurationResearch Source: NostrApps category — Direct MessageResearch Source: NostrApps category — DiscoveryResearch Source: NostrApps category — File SharingResearch Source: NostrApps category — Group ChatResearch Source: NostrApps category — MeatspaceResearch Source: NostrApps category — OnboardingResearch Source: NostrApps category — SignersResearch Source: NostrApps category — ToolsResearch Source: nostrcheckResearch Source: nostrdb GitHubResearch Source: NostreeResearch Source: Nostree — NostrApps pageResearch Source: NostriaResearch Source: Nostria — NostrApps pageResearch Source: NostridResearch Source: Nostrmo — NostrApps pageResearch Source: Nostrmo GitHubResearch Source: NostrubeResearch Source: noStrudelResearch Source: noStrudel — NostrApps pageResearch Source: NostterResearch Source: NosturResearch Source: Nostur — NostrApps pageResearch Source: NotedeckResearch Source: Npub.proResearch Source: Npub.worldResearch Source: nsec.appResearch Source: NsiteResearch Source: Nstart.meResearch Source: Nstart.me — NostrApps pageResearch Source: Obsidian Nostr Writer — NostrApps pageResearch Source: OlasResearch Source: Olas — NostrApps pageResearch Source: OpenvibeResearch Source: OracoloResearch Source: Oracolo — NostrApps pageResearch Source: Ostrich WorkResearch Source: P2P BandResearch Source: PazResearch Source: PeridotResearch Source: Peridot — NostrApps pageResearch Source: PhoenixResearch Source: Phoenix — NostrApps pageResearch Source: Plebeian MarketResearch Source: Plebeian Market — NostrApps pageResearch Source: PrimalResearch Source: Primal — NostrApps pageResearch Source: Primal Article Editor / Reads authoringResearch Source: Primal StudioResearch Source: pynostr GitHubResearch Source: python-nostr GitHubResearch Source: Registry of KindsResearch Source: Relay Tools — NostrApps pageResearch Source: rsslayResearch Source: rust-nostr docsResearch Source: rust-nostr GitHubResearch Source: SatelliteResearch Source: SatShootResearch Source: ShakespeareResearch Source: Shakespeare — NostrApps pageResearch Source: ShopstrResearch Source: Shopstr — NostrApps pageResearch Source: SlidestrResearch Source: SnortResearch Source: start.nostr.netResearch Source: StemstrResearch Source: TreasuresResearch Source: WavlakeResearch Source: WikifreediaResearch Source: Wikifreedia — NostrApps pageResearch Source: WikistrResearch Source: Wikistr — NostrApps pageResearch Source: YakiHonne mobile/web app directoryResearch Source: YondarResearch Source: Yondar — NostrApps page
Apps24 min readSocial client, React web app, TypeScript Nostr libraries, NIP-46 signer flow, NWC wallet connection, worker relay cache, NIP-17 messages and Blossom media

Snort

Snort is a fast Nostr social client with a deeper technical story than its timeline suggests: the same project ships the web app, TypeScript protocol packages, a worker-relay cache, signer flows, wallet wiring, media uploads and a long record of security hardening.

The quick readSnort is the React-based Nostr client at snort.social, maintained in the v0l/snort repository and listed by its Zapstore manifest as social.snort.app. The checked app package is version 0.5.3; GitHub metadata checked on June 12, 2026 showed 340 stars, 132 forks, 6 open issues, a latest release v0.5.3 published on April 8, 2026, and May 29 commits focused on NIP-17 direct-message failure handling and timestamps. Google Play lists Snort: The Nostr App under v0l with 10K+ downloads, 24 reviews, a 3.6 average, a Mature 17+ rating and an April 8, 2026 update. Umbrel lists Snort v0.5.3 as a social app and highlights security hardening around Schnorr verification, NIP-46 relay-message forgery protection, PIN encryption and NIP-26 delegation trust. The repo also contains @snort/system, @snort/system-react, @snort/shared, @snort/wallet, @snort/worker-relay and @snort/bun-sqlite-relay. The product gives readers feeds, profiles, search, notifications, messages, media, follow sets, relay views, wallet pages and settings. The toolkit gives builders reusable Nostr querying, caching, relay and wallet layers. The main question is how much trust sits in the browser, signer, relay set, local worker relay, media server and wallet connection you choose while using it.

A social client with a protocol toolkit underneath

Snort looks simple from the outside: open snort.social, sign in, read notes, reply, repost, zap, search, follow people and adjust relays. That first impression is accurate enough for a normal user. It is also incomplete. Snort is one of the Nostr clients where the public product and the developer stack are closely tied together. The same repository contains the web app, reusable TypeScript packages, wallet code, a browser worker relay and documentation for developers building other Nostr applications.

The repository README describes Snort as a Nostr UI built with React with an emphasis on speed and efficiency. The app package checked for this article is version 0.5.3 and uses React 19, Vite 7 and Bun. GitHub metadata checked on June 12, 2026 showed 340 stars, 132 forks, 6 open issues, an MIT license and a repository pushed on May 29, 2026. The docs describe the Snort libraries as a suite that powers snort.social, zap.stream, dtan.xyz, nwb.tf, lnvps.net and other Nostr projects. That makes Snort more than a timeline. It is a production client that also exports ideas about how Nostr apps can query, cache, sign, encrypt and route events.

The public distribution trail is active rather than frozen. Google Play lists Snort under v0l with 10K+ downloads, 24 reviews, a 3.6 average, an April 8, 2026 update and data-safety declarations that no data is collected or shared. Umbrel lists Snort v0.5.3 as Fast Nostr UI for umbrelOS, while the GitHub release for v0.5.3 ships Android APK and AAB artifacts. The latest default-branch commits checked on June 12 focused on NIP-17 direct-message handling, which is exactly the kind of maintenance a reader should want to see in a social client that touches private conversations.

That distinction helps the reader use Snort intelligently. If you only need a familiar feed, Snort can be judged like any social app: does it feel fast, can you find people, are messages readable, does the wallet flow make sense? If you care about Nostr as infrastructure, Snort is also worth inspecting as an implementation: which NIPs are supported, how NIP-46 is protected, how the worker relay stores data, how media uploads are signed and how the app chooses relays.

The surface readers actually touch

Snort's route structure shows the product that readers meet. The root tabs include a default feed, For You, Following, Followed by Friends, Conversations, Discover, tags, trending notes, trending hashtags, topics, media, follow sets, relay views, suggested profiles and an agent route. Beyond the tabs, the app includes event threads, profile pages, notifications, a free Nostr address page, a Nostr address page, messages, search, list feeds, a changelog, wallet pages and settings.

That spread is the shape of a mature social client. Snort is not just a post composer and a scrolling list. It gives you multiple ways to find people and notes, multiple entry points for public conversations, a media view, list-based feeds, direct-message routes, relay inspection and wallet flows. The app also has translation infrastructure through Crowdin, which is a quiet sign that the project has thought beyond one language community.

The product still feels closer to a power user's client than to a heavily managed mainstream network. That can be a strength. You see relays, signer choices, wallet connection strings, cache controls and Nostr-specific data types. Readers who want to learn the network may appreciate that transparency. Readers who want the protocol to disappear entirely may find Snort more technical than clients that hide nearly every Nostr concept.

Why the 0.5 line matters

Snort's release trail is unusually useful because it documents security and stability work rather than only cosmetic features. The Umbrel v0.5.3 listing highlights hardening around Schnorr signature verification, PIN encryption, NIP-46 relay-message forgery protection, secret leakage, NIP-26 delegation trust, unsafe JSON parsing, hanging promises and lifecycle or memory leaks. Those are not marketing bullets. They are the exact classes of bugs that matter in a browser-based Nostr client.

The same release line also mentions performance work: batched event verification in WebAssembly, lazy-loaded routes, precompiled translations, worker-relay optimizations and reduced duplicate verification. That tells you where Snort's complexity lives. A fast Nostr client has to verify signatures, query several relays, hydrate profiles, keep local cache state, render conversations and stay responsive when the network is noisy. The speed story is partly product design and partly low-level event handling.

For readers, the lesson is balanced. The existence of a hardening release means earlier code paths needed attention. It also means maintainers are looking directly at the right problems. When you choose a Nostr client, do not only ask whether it supports many NIPs. Ask whether the project fixes signer boundaries, invalid events, stale sessions, relay spoofing, wallet limits and cache bugs in public. Snort gives you a visible trail to inspect.

NIP support is broad, but the details matter

The README's support list covers a large part of everyday Nostr. Snort marks support for the basic protocol flow, contact lists, NIP-05 names, mnemonic key derivation, browser signing, event deletion, text-note threading, relay information, reposts, bech32 entities, nostr URI handling, long-form content, reactions, mentions, custom emoji, sensitive-content tags, user statuses, relay authentication, NIP-44 encryption, NIP-46 Nostr Connect, NIP-47 Nostr Wallet Connect, search, lists, live events, Android signing, zaps, badges, gift wrap, relay-list metadata, app-specific data, app handlers, DVMs, file metadata and HTTP auth.

A list that long is helpful, but it is not a guarantee that every feature is equally complete. Snort notes limited NIP-02 petname support and display-only behavior for delegated signing. The changelog also says NIP-4 direct messages were dropped in favor of NIP-17 in the v0.3 line, while older README text still includes NIP-04 support because encryption methods and legacy flows still appear in the stack. A careful reader should treat the list as a map, not as a final compatibility certificate.

The practical way to read Snort's NIP support is by use case. If you care about login, inspect NIP-07, NIP-46 and NIP-55. If you care about messages, inspect NIP-17, NIP-44 and gift wrap behavior. If you care about payments, inspect NIP-47 and NIP-57. If you care about discovery, inspect NIP-50, NIP-51, NIP-65 and NIP-89. Snort touches all of those areas, but the experience depends on the signer, relays, wallet and media servers you actually use.

Signing choices define the trust boundary

Snort's sign-in code supports a browser signer extension through NIP-07, Nostr Connect through NIP-46 on Android-detected environments and direct key input that accepts nsec, npub, NIP-05, hex or mnemonic formats. That menu matters. A Nostr client can be safe or risky depending on how it obtains signing authority. Signing with an extension or remote signer keeps the private key outside the web app. Pasting an nsec into a site gives that site far more responsibility.

The NIP-46 flow is especially important. Snort's code creates a nostrconnect URL with a generated secret, a relay and a permissions string. The system implementation documents both bunker URLs and nostrconnect URLs, notes that the secret is required in the client-initiated flow and verifies Schnorr signatures before processing NIP-46 messages from relays. The same file explicitly avoids logging decrypted parameters or results that may contain secrets. Those details are exactly where remote signing either becomes useful or becomes a trap.

Readers should still approve signer requests with care. A remote signer can reduce the need to paste keys into websites, but it can also sign real events if you approve too broadly. Snort's NIP-46 permission string includes signing several event kinds and NIP-04 encryption or decryption operations. Treat those as meaningful powers. Use a signer you trust, revoke old connections, avoid experimental sessions on a high-value identity and check whether your signer shows understandable prompts.

Relays are visible instead of hidden

Snort's default configuration names snort.social as the host and NIP-05 domain, includes a profile service at profiles.v0l.io and defines default relays including relay.snort.social, nostr.wine, relay.damus.io and nos.lol with read and write permissions that differ by relay. That is the kind of detail a reader should want to see. Relays are not background decoration in Nostr. They decide where your events are published, where your client reads and how quickly other people can find you.

The settings code gives users relay management rather than hiding the network behind one server. The relays page lists relay status, permissions and uptime, includes an add-relays textarea and tells users to aim for four to eight relays. The route structure also includes relay views, so relays become part of navigation and diagnosis, not just a hidden setup wizard. That makes Snort a good teaching client for people who want to understand why Nostr behaves differently from platform social media.

The tradeoff is that visible relays can be confusing. If you add too few relays, people may not see you. If you add too many, the app can become noisier and slower. If a relay requires authentication, payment or stricter policy, your client behavior changes. Snort gives the knobs, but the reader still has to learn them. A healthy setup is usually a small, deliberate relay set rather than a random pile of websocket URLs.

The worker relay makes Snort feel faster

One of Snort's more distinctive pieces is the worker relay. The package is named @snort/worker-relay and describes itself as a Nostr relay in a service worker. It uses SQLite WebAssembly in its build path, and the app's cache settings expose a Browser or Local Worker Relay, counts for cached data, a wipe action and a database dump named snort.db. There is also a Bun native SQLite relay package implementing the same cache-relay interface.

This design helps explain why Snort can feel responsive even when public relays are uneven. A local cache can store profiles, follow lists, gift wraps and events, then serve repeated views without fetching everything again. The system initialization also enables a follow graph and automatic outbox model. Those are serious product decisions: Snort is trying to make relay-based social data behave like a fast local application.

Local caching changes the reader's privacy and troubleshooting model. Cached data can make the app better, but it also means your browser may hold a meaningful local record of your Nostr activity. If the app behaves strangely, wiping the worker relay may fix stale state. If you are on a shared device, cache behavior matters. If you are debugging a missing note, remember that you may be looking at a mix of live relay data and cached results.

Messages moved toward modern encrypted DMs

Snort's messaging story has changed over time. The v0.3.0 changelog says the project dropped NIP-4 direct messages in favor of NIP-17 encrypted DMs and added NIP-44 v2 encryption. The README still lists NIP-04 because the codebase contains NIP-04 operations for some signer and legacy contexts. For readers, the key point is that Snort is not standing still on old-style encrypted direct messages.

NIP-17 private direct messages use gift-wrapped events and modern encryption patterns to improve on earlier direct-message approaches. In a social client, this changes both UX and trust. You want messages to be readable across clients that support the same modern flow, but you also want the client to handle decryption failures gracefully, avoid leaking secrets, keep relay behavior understandable and not accidentally make old DMs appear safer than they are.

The latest checked repository commit was a merge on May 29, 2026 involving NIP-17 decrypt-failure handling. That is a small but telling maintenance signal. Encrypted messaging bugs often show up in edge cases: missing keys, broken gift wraps, relay gaps, corrupted events, failed decryption and partial migrations from older DM formats. If private messaging is your main use case, test Snort with the exact people and signers you plan to use before relying on it for sensitive conversations.

Wallet features are present, but Snort remains a social client

Snort belongs in the social-client shelf, not the wallet shelf, but money is part of its product surface. The app has wallet routes for sending and receiving, a wallet settings area and a Nostr Wallet Connect settings page. The NWC UI accepts connection strings in the nostr+walletconnect family, asks the wallet for information, stores an active wallet configuration and links users toward Alby's NWC page as a setup path.

The @snort/wallet package parses nostrwalletconnect and nostr+walletconnect URLs, connects to the configured wallet relay and supports get_info and pay_invoice by default. It can also detect whether the connected wallet supports list_transactions, get_balance and make_invoice. The code handles relay authentication by signing a NIP-42 auth event and sends wallet RPC commands through NIP-47 event kinds. This is real wallet plumbing, not merely a zap button.

The reader should treat NWC like any payment permission. A connection string contains enough information for the client to talk to a wallet service through a relay. The wallet may enforce budgets, methods and approvals, but the app can request payments or invoices according to what the wallet allows. Use a wallet connection with small limits first, confirm which methods are supported, check transaction history and disconnect stale wallet sessions when you are done experimenting.

Media is handled through upload services and Blossom

Snort's media handling has moved beyond pasting image URLs. The v0.4.0 changelog says the project replaced NIP-96 uploads with Blossom storage and added media posts for newer event kinds. The upload code includes known upload services such as void.cat, nostr.build, nostrimg.com and nostrcheck.me, while the newer path uses Blossom uploads and mirrors through the blossom-client-sdk. The media settings page lets users maintain a Blossom server list.

The upload path computes file result metadata, uses a signed authorization event for upload, supports upload, mirror, list and delete actions and can add fallback URLs to NIP-94 metadata. That is the right direction for a Nostr media client: relays are not general-purpose file hosts, so the file itself needs a storage server while the signed event carries references, hashes and metadata. Snort's code makes that split explicit.

A reader should not confuse media signing with permanent control. A Blossom server can store and serve a blob, mirrors can copy it elsewhere and other clients can reference the same URL or hash. Deleting from one server may not remove every mirror. If you upload sensitive media, assume it can travel. If you care about resilience, use trusted media servers and mirrors. If you care about deletion, test deletion behavior before posting something hard to retract.

Discovery uses social graph, search and DVMs

Snort's discovery work sits across several layers. The tabs include For You, Followed by Friends, Discover, trending notes, trending hashtags, topics, media and follow sets. The changelog describes a personalized For You feed based on the social graph, Web of Trust spam filtering, DVM-powered trending posts and selectable content discovery DVMs. Those features are a response to one of Nostr's hardest problems: raw relay data does not automatically become a good reading experience.

The app package includes dependencies for search, graph visualization and data vending behavior. The README lists NIP-50 search, NIP-51 lists, NIP-89 application handlers and NIP-90 data vending machines. The v0.5 line adds display for DVM kind 7000 payment-required invoices, which matters because some discovery or AI-like Nostr services may charge for results. Snort is therefore both reading public events and participating in the wider service layer around them.

Readers should remember that discovery surfaces are opinions. A For You feed, Web of Trust filter, trending panel or DVM suggestion can help you find useful people faster. It can also hide things outside your graph, privilege particular relays or depend on paid or third-party computation. Use discovery as a map, not as the network itself. If you are researching a person, event or topic, compare Snort with another client and at least one search-oriented Nostr tool.

The developer packages are part of the Snort story

Snort's docs present the project as a set of TypeScript packages, not only as a hosted client. @snort/system is the core Nostr implementation with caching, querying and relay management. @snort/system-react provides React hooks and components. @snort/shared contains utility functions for keys, event signing and parsing. @snort/wallet handles Lightning wallet integration. @snort/worker-relay gives applications a service-worker relay.

The installation docs list Node.js 18 or Bun 1 as prerequisites and provide install paths for a minimal core setup, a React application, a full stack with wallet support and an all-packages setup. The important signal is architectural: Snort is modular enough for other builders to adopt pieces instead of copying the whole client.

This matters for readers because the Snort client is also a live demonstration of those packages under real load. If you are a developer, the app shows how the packages behave in production: route lazy loading, relay selection, query construction, worker-cache behavior, wallet RPC, signer abstraction and media upload. If you are not a developer, the package split still tells you something about maintainability. A client with reusable internal layers can fix protocol behavior in one place and share it across products.

What to test before relying on Snort

Start with identity and signing. Create or use a low-risk account, sign in through your preferred method, publish a harmless note, reply to someone, delete a test note and sign out. If you use NIP-07, confirm your browser signer shows readable prompts. If you use NIP-46, confirm the connection is revocable and that the permissions make sense. If you import a key directly, understand that the web app has far more responsibility for that key.

Next, test relays and cache behavior. Add one relay you know, remove one you do not need, check whether your relay list publishes correctly and compare a known event in Snort and another client. Visit the cache settings, note whether the Browser Worker Relay is active and understand the wipe or dump controls before you need them. If an event looks missing or stale, remember that relay state and local cache state can both be involved.

Finally, test money and media slowly. Connect an NWC wallet with a tiny budget and pay a small invoice or zap only after checking supported methods. Upload a harmless image, inspect the resulting URL, test whether another client renders it and look at your media server list. Send a low-stakes direct message to a trusted person and confirm both sides can decrypt it. These tests take less time than cleaning up a bad signer, wallet or media decision later.

Who Snort is best for

Snort is best for readers who want a fast, capable Nostr client and do not mind seeing the machinery. It is especially attractive if you care about relay control, signer options, search, follow-set navigation, media posts, wallet connection, zaps and modern encrypted messages. It gives enough product polish to be used every day and enough exposed structure to teach you how Nostr works.

It is also a strong reference point for builders. The project shows how to organize a large Nostr web app around reusable TypeScript packages, React hooks, a local worker relay, wallet abstractions, NIP-46, NIP-47, Blossom and a wide NIP surface. The changelog gives an honest look at the kinds of security and performance issues a production Nostr client has to solve. That is valuable even if you never use snort.social as your main client.

Snort is less ideal for readers who want the protocol completely hidden, or for people who do not want to think about signer choice, relay health, local cache, media storage and wallet permissions. Those concepts appear because Snort is close to the network rather than pretending Nostr is a single platform. If that is what you want, Snort remains one of the most useful social clients to study and one of the more revealing clients to use.

Sources worth opening

Start with the live client, repository, Zapstore manifest and docs, then read the code paths for routing, sign-in, NIP-46, NWC, worker relay, media uploads, settings and the NIPs Snort relies on.

Back to the Crays Nostr page
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

How to use this page

Find the product surface first.

Search Snort, NIP-46, NIP-17, worker relay or NWC when you need a source file or comparison clue.

AppsSocial client context stays openApp routeFeeds, signing, wallet, relay and media context.Browse apps
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

Bring something back

Ask, suggest, submit or nominate.

Use these links when something is missing, a source is stale, or a public Nostr builder belongs in the map.