NDK

NDK (Nostr Development Kit) is a TypeScript toolkit for building nostr applications, maintained by PabloF7z. It is structured as a monorepo of small packages so that client developers can pull in only the parts they need: a core library for relay management and event handling, framework-specific bindings for Svelte 5 and React, a React Native integration for mobile, and standalone packages for higher-level features.

NDK is a nostr development kit that makes the experience of building nostr-related applications, whether they are relays, clients, or anything in between, better, more reliable, and overall more enjoyable to work with than existing solutions. The core goal of NDK is to improve the decentralization of nostr via intelligent conventions and data discovery features without depending on any one central point of coordination.

pablof7z

The advanced packages cover Web of Trust filtering, NIP-77 negentropy set reconciliation, multi-account session management, NIP-17 gift-wrapped DMs, NIP-60 cashu wallet integration with NWC and WebLN support, and a Blossom client for media. A set of cache adapters (in-memory LRU, IndexedDB via Dexie, SQLite, SQLite WASM, Redis, and an experimental nostr-relay-as-cache) lets the same code run anywhere from a browser tab to a server-side process. Outbox-model relay selection (NIP-65) is built into the core and used to drive subscription routing.

Why fund it?

NDK is one of the most widely used TypeScript libraries for building nostr clients. Production apps such as Highlighter, Lume, and Flockstr are built on top of it. By moving the hard parts (relay management, signing adapters, the outbox model, caching, NIP-46 remote signing, zaps, gift-wrapped DMs) into one library, NDK lets app developers focus on their UI and product instead of reimplementing protocol plumbing each time.

OpenSats funded NDK in the first wave of nostr grants in July 2023, and Pablo later received a long-term support grant in April 2024 that funds his ongoing work on NDK alongside nsecBunker, Highlighter, and other projects.

What's next?

Recent work has focused on the Svelte 5 integration with reactive runes, the multi-account sessions package, Web of Trust auto-filtering, and a richer mock infrastructure under @nostr-dev-kit/ndk/test so app developers can write deterministic tests against simulated relays. Pablo continues to push on NIP-46 (nsecBunker) flows, NIP-60 cashu wallet primitives, and improvements to the outbox model.

For ongoing development, see the NDK GitHub repository and the documentation site.

Further Reading