← All Notes

Email is older than the modern web. SMTP was standardized when most computing happened in universities and research labs. The protocol has been layered over, extended, and warped by four decades of real-world use. And yet email is a critical dependency in almost every production application. Login confirmation, password reset, billing notification, team invitation, anomaly alert — these transactions require email to work reliably, measurably, and with some level of operational visibility.

For most of the last two decades, the developer experience around transactional email has been roughly the same: pick a sending service, configure SMTP credentials, integrate a client library, hope your deliverability is acceptable, and build your own observability if you need it. The category had aged, and the tools in it had aged with it.

What the category looked like before a developer-native product

The established transactional email providers are products built for a previous era of infrastructure tooling. Their APIs reflect choices made in a world where developers were expected to accommodate the tooling, not the other way around. Configuration is verbose. The debugging surface is thin. Rate limiting is opaque. Deliverability tuning requires vendor-specific knowledge that isn't well documented.

More significantly, most transactional email products were built primarily for the marketing or operations buyer, not for the engineering team. The interface is a dashboard designed for non-technical configuration. The API is an afterthought layered on top of a sending infrastructure that predates the current model of how cloud-native applications are built and operated.

Modern engineering teams think about external dependencies differently. They want clean, type-safe APIs. They want observability that integrates with their existing monitoring stack. They want local development environments that behave the same way as production. They want documentation written as if the reader is a developer, not a marketing operations manager. Transactional email, for most of its history, offered none of these things.

The developer-native reset

The interesting thing about a market where the developer experience is systematically bad is that the opening for a developer-native competitor is correspondingly large. This is the same dynamic that explains how Stripe replaced legacy payment processing for a generation of startups: not by offering better pricing or better network reliability, but by offering a dramatically better integration experience for the developer who has to actually build the implementation.

Resend's thesis follows the same logic. Build transactional email infrastructure that is designed, from the ground up, for the engineering team. Clean SDK. Local preview. Delivery analytics surfaced in a way that helps engineers debug problems, not just count sent emails. A React email component library that makes email template development follow the same patterns as web component development.

The "React email" component approach is worth noting specifically. Email HTML is a historical accident — table-based layouts, inline styles, compatibility hacks going back to Outlook 2007. Writing and maintaining email templates in this format is miserable. Moving template authorship into the React component model — where a developer can use the same patterns, tools, and mental models they use everywhere else — eliminates a class of friction that has always made transactional email feel out-of-place in a modern engineering stack.

Platform dynamics

The question for the category is whether developer-native transactional email is a point product or a platform. Our view at the time of investing was that the platform potential is real, for two reasons.

First, email observability is a gateway to other notification infrastructure. Teams that start with transactional email eventually need to reason about SMS, push notifications, in-app notifications, and webhook delivery. If you own the observability and routing layer for email, you are well-positioned to extend that ownership to the other communication channels that follow the same structural pattern: a trigger in an application, a delivery to an external endpoint, a need to know whether delivery succeeded.

Second, deliverability is a platform moat. Getting email reliably into inboxes across providers, at scale, across a broad range of sending patterns, is a hard problem. It requires IP reputation management, domain authentication infrastructure, feedback loop processing, and a continuous response to the evolving spam filtering behavior of major inbox providers. The companies that solve this at scale for many senders develop a collective deliverability advantage that is hard for a new entrant to replicate. This is a genuine barrier to entry.

The combination — developer experience that drives initial adoption, and deliverability infrastructure that creates retention — describes the shape of a durable infrastructure business. That's the thesis behind the category.