resend-node

The official Node.js and TypeScript SDK for sending email through the Resend API.

SDK
npm
v6.34.1
971 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
89 /100 Excellent
Development Activity 100
Maintenance 100
Community 60
Maturity 56
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
86 /100 Excellent
Architecture 85
Code Quality 88
Innovation 80
Learning Curve 90

Resend’s official Node.js SDK is a fully typed client for the Resend email API, letting you send transactional and marketing email with a few lines of code. It wraps every Resend endpoint — emails, batches, broadcasts, domains, contacts, audiences/segments, API keys, webhooks, and more — behind a single ergonomic Resend class.

Beyond plain text and HTML, the SDK can render React email components to HTML at send time via @react-email/render, so you can author templates as JSX and ship them without a separate build step. It targets modern Node.js (>=20), ships dual ESM/CJS builds, and returns a consistent { data, error } shape on every call.

What You Get

  • A single typed Resend client exposing every Resend API resource (emails, batch, broadcasts, domains, contacts, segments, API keys, webhooks, templates, and more).
  • First-class React email support that renders JSX templates to HTML at send time via the optional @react-email/render peer dependency.
  • A consistent { data, error } return shape on every call, so failures are handled as values rather than thrown exceptions.
  • Dual ESM/CJS builds with bundled .d.ts type declarations and idempotency-key support for safe retries.

Common Use Cases

  • Sending transactional email such as sign-up confirmations, password resets, and receipts from a Node.js backend.
  • Delivering marketing broadcasts and managing contacts, segments, and suppressions programmatically.
  • Rendering React Email components to HTML and sending them directly without a separate template pipeline.

Under The Hood

Architecture — The public surface is a single Resend class in src/resend.ts that holds a base URL, user agent, and an auth Headers object, then instantiates one resource controller per API area (Emails, Batch, Broadcasts, Domains, Contacts, Segments, ApiKeys, Webhooks, and more) as readonly fields. Each controller receives the Resend instance and calls its shared post/get/put/patch/delete helpers, which funnel into one fetchRequest method wrapping the native fetch; that method normalizes every outcome into a { data, error, headers } response so errors are returned as values. React templates are rendered to HTML in src/render.ts, which lazily imports @react-email/render only when a react payload is supplied.

Tech Stack — Written in TypeScript targeting Node.js >=20, with a build via tsdown producing dual ESM/CJS output plus .d.ts declarations. Runtime dependencies are minimal: postal-mime for inbound email parsing and standardwebhooks for webhook verification, with @react-email/render as an optional peer dependency. Tooling uses Biome for lint/format, Vitest for tests, and PollyJS for recorded HTTP fixtures.

Code Quality — Testing is thorough: 36 *.spec.ts files sit alongside the source, plus integration specs backed by recorded HAR fixtures under __recordings__ and a separate e2e/ suite. Each resource is split into a controller plus a dedicated interfaces/ directory, giving strong type coverage and consistent naming. Error handling is deliberate — fetchRequest distinguishes JSON API errors, malformed responses, and network failures, returning a typed ErrorResponse in each case.

API Design — The developer experience is a highlight: a two-line setup (new Resend(key) then resend.emails.send(...)) gets you sending, method names mirror REST verbs and resource names, and the uniform { data, error } return removes try/catch boilerplate. All request and response types are exported from the package root, the README documents text, HTML, and React flows, and idempotency keys are a first-class option for safe retries.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers