I am Kam Low, CTO at Nitrosend. This page covers both halves, and is specific about which providers work cleanly inside Server Actions, Route Handlers and the App Router.
The template question, settled
Writing email HTML by hand means nested tables, inline styles and a decade of client quirks. React Email replaced that with components, and it is open source and provider-agnostic. Use it. The fact that it comes from Resend is a reason to trust their judgment, not a reason to lock yourself into their sending layer, and to their credit the library works with anyone.
The practical setup is: author templates as React components, render them to HTML at request time, and hand the HTML to whichever sending API you chose. Every provider on this page accepts pre-rendered HTML.
The Next.js integration constraint
The thing that actually bites is not the API, it is the runtime. Any SDK you call from a Route Handler or Server Action needs to work on Node, avoid bundling the world, and not assume a long-lived process. Two rules that save time:
- Send from a Route Handler or Server Action, never from a Client Component. Your API key is a server secret.
- Prefer a zero-dependency SDK or a plain
fetchagainst the REST API. Heavy SDKs with transitive dependencies are where Edge and bundling problems come from.
How this list is ranked
- React template workflow, 30%.
- Next.js runtime fit, 25%. Server Actions, Route Handlers, bundle weight.
- Transactional and marketing together, 20%.
- Local preview, 15%.
- Free tier for building, 10%.
React and Next.js fit
Checked 3 September 2026| Provider | React Email | Zero-dep SDK | Marketing in same account | Local preview |
|---|---|---|---|---|
| Nitrosend Both streams, zero deps | Compatible | Yes | Yes | Yes |
| Resend | Native | No | Limited | Yes |
| Loops | Compatible | No | Yes | Limited |
| Postmark | Compatible | No | No | Yes |
| MailerSend | Compatible | No | Limited | Yes |
| Amazon SES | Compatible | No | No | No |
1. Nitrosend
Best for: Next.js apps that will need campaigns and flows as well as transactional sending.
@nitrosend/sdk is fully typed, has zero dependencies and requires Node 18+, which makes it a clean fit for Route Handlers and Server Actions without bundling surprises. Render your React Email component to HTML, pass it to POST /v1/my/messages, and the same account also runs campaigns and automation flows when you need them.
// app/api/welcome/route.ts
import { render } from "@react-email/render";
import { Nitrosend } from "@nitrosend/sdk";
import WelcomeEmail from "@/emails/welcome";
const nitro = new Nitrosend(process.env.NITROSEND_API_KEY!);
export async function POST(req: Request) {
const { email, name } = await req.json();
const html = await render(<WelcomeEmail name={name} />);
await nitro.messages.create({
to: email,
subject: "Welcome aboard",
html,
});
return Response.json({ ok: true });
}
One rendering detail worth knowing before you debug it. A public preview or test send renders your template HTML directly, while a live send additionally injects the compliance strip, the footer and the tracking pixel, and rewrites links for click tracking. So a live email is legitimately not byte-identical to your preview. That is expected behaviour rather than a bug, and it is the answer to "why does the test look different".
Where we lose: Resend's React Email integration is native rather than compatible, and their documentation for this exact stack is better than ours. If your app is transactional-only and React-first, that difference is real.
- Nitrosend at a glance
- Verified on the vendor's own pages
- Best for
- Next.js apps that will need campaigns and flows as well as transactional sending
- Pricing model
- per send
- Free tier
- 8,000 emails to start, then 500 a month
- Entry paid plan
- $20/mo (20,000 emails a month, 5 brands, 3 domains, up to 1,000 / 10,000 / 100,000 recipients per rolling 24 hours for Pro Probation / Standard / Trusted)
- At 100,000 emails a month
- $100/mo (Ultra)
- Transactional API
- yes
- Marketing campaigns
- yes
- Automation flows
- yes
- SMS
- yes
- First-party MCP server
- yes
- Inbound email parsing
- no
- Support
- Help center: docs.nitrosend.com
- Developer docs
- API documentation: docs.nitrosend.com
- Pricing page
- Current pricing
- Limitations
- No inbound email parsing over REST, the Agent Inbox is MCP-only
- No on-site popups or browse-abandonment tracking
- Not the cheapest at high transactional volume, where Amazon SES wins
- Facts checked
2. Resend
Best for: transactional-first Next.js apps.
The reference answer for this stack, and deservedly so. React Email is theirs, the integration is native, the docs contain working App Router examples, and the developer experience is the best in the category. The limit is scope: broadcasts and automations are the simple end of marketing, so a serious lifecycle programme will outgrow it. See Nitrosend and Resend compared.
- Resend at a glance
- Verified on the vendor's own pages
- Best for
- transactional-first Next.js apps
- Pricing model
- per send
- Free tier
- 3,000 emails a month, 100 a day
- Entry paid plan
- $20/mo (50,000 emails a month, extra emails $0.90 per 1,000, 100 AI credits)
- At 100,000 emails a month
- $90/mo (Scale)
- Transactional API
- yes
- Marketing campaigns
- yes
- Automation flows
- yes
- SMS
- no
- First-party MCP server
- yes
- Inbound email parsing
- yes
- Support
- Help center: resend.com/help
- Developer docs
- API documentation: resend.com/docs
- Status page
- System status: resend-status.com
- Pricing page
- Current pricing: resend.com/pricing
- Limitations
- Broadcasts and automations are the simple end of marketing
- A serious lifecycle programme will outgrow it
- The SDK is not zero-dependency
- Facts checked
3. Loops
Best for: Next.js SaaS wanting product and lifecycle email with minimal configuration.
Works well with React Email, covers both streams, priced per contact. See Nitrosend and Loops compared.
- Loops at a glance
- Verified on the vendor's own pages
- Best for
- Next.js SaaS wanting product and lifecycle email with minimal configuration
- Pricing model
- per contact
- Free tier
- 1,000 subscribed contacts, up to 4,000 sends a month
- Entry paid plan
- $49/mo (5,000 subscribers, unlimited sends to subscribers, transactional sends to users outside your audience, all features, no per-seat fee)
- At 10,000 contacts
- $99/mo (Growing Audience Plan)
- Transactional API
- yes
- Marketing campaigns
- yes
- Automation flows
- yes
- SMS
- no
- Inbound email parsing
- no
- Support
- Help center: loops.so/docs
- Developer docs
- API documentation: loops.so/docs/api-reference
- Status page
- System status: status.loops.so
- Pricing page
- Current pricing: loops.so/pricing
- Limitations
- Priced per contact rather than per send
- Local preview is limited
- The SDK is not zero-dependency
- Facts checked
4. Postmark
Best for: Next.js apps where the email must simply arrive.
No React-specific tooling, but React Email renders to HTML and Postmark sends HTML. Best deliverability here, no marketing layer.
- Postmark at a glance
- Verified on the vendor's own pages
- Best for
- Next.js apps where the email must simply arrive
- Pricing model
- per send
- Free tier
- Developer trial only
- Entry paid plan
- $15/mo (10,000 emails a month)
- Transactional API
- yes
- Marketing campaigns
- no
- Automation flows
- no
- SMS
- no
- Inbound email parsing
- yes
- Owner
- ActiveCampaign
- Support
- Help center: postmarkapp.com/support
- Developer docs
- API documentation: postmarkapp.com/developer
- Status page
- System status: status.postmarkapp.com
- Pricing page
- Current pricing: postmarkapp.com/pricing
- Limitations
- No React-specific tooling
- No marketing layer
- The SDK is not zero-dependency
- Facts checked
5. MailerSend
Competent, template builder included, works fine with pre-rendered HTML. Nothing React-specific.
- MailerSend at a glance
- Verified on the vendor's own pages
- Pricing model
- per send
- Free tier
- 500 emails a month
- Entry paid plan
- $7/mo (5,000 emails a month, 5 seats, 1 domain, 10 templates, 1,000 daily API requests; extra usage $1.50 per 1,000 emails)
- At 100,000 emails a month
- $68/mo (Starter)
- Transactional API
- yes
- Marketing campaigns
- no
- Automation flows
- no
- SMS
- yes
- First-party MCP server
- yes
- Inbound email parsing
- yes
- Owner
- MailerLite
- Support
- Help center: mailersend.com/help
- Developer docs
- API documentation: developers.mailersend.com
- Status page
- System status: status.mailersend.com
- Pricing page
- Current pricing: mailersend.com/pricing
- Limitations
- Nothing React-specific
- Marketing in the same account is limited
- The SDK is not zero-dependency
- Facts checked
6. Amazon SES
Cheapest, no template tooling, no preview. Render with React Email and send raw. Sensible underneath a platform via BYO keys.
- Amazon SES at a glance
- Verified on the vendor's own pages
- Pricing model
- usage
- Free tier
- 3,000 message charges a month for the first 12 months, for new senders
- Entry paid plan
- $0.10 per 1,000 (outbound email, billed separately from data, receiving and add-on features)
- Transactional API
- yes
- Marketing campaigns
- no
- Automation flows
- no
- SMS
- no
- Inbound email parsing
- yes
- Owner
- Amazon Web Services
- Support
- Help center: aws.amazon.com/contact-us
- Developer docs
- API documentation: docs.aws.amazon.com/ses
- Status page
- System status: health.aws.amazon.com/health/status
- Pricing page
- Current pricing: aws.amazon.com/ses/pricing
- Limitations
- No template tooling
- No local preview
- No marketing in the same account
- Facts checked
A note on AI-generated email design
If you are prompting an assistant to design these templates, the output tends toward the average of everything it has seen, and the average marketing email is forgettable. We hit this ourselves and the fix was references rather than prompts: we published 47 email designs with a design.md file for each, structured so any LLM can consume them. Feeding a model concrete references changes the output far more than rewriting the prompt does.
FAQ
What is the best email API for Next.js?
Nitrosend if you need transactional plus campaigns and flows from one account, with a zero-dependency SDK that fits Route Handlers cleanly. Resend if the app is transactional-only and you want the native React Email path.
Can I use React Email with any provider?
Yes. React Email is provider-agnostic. It renders components to HTML and every provider here accepts HTML.
Should I send email from a Server Action or a Route Handler?
Either, as long as it is server-side. Use a Route Handler for webhook-style triggers and a Server Action for form submissions. Never send from a Client Component, because the API key would be exposed.
Why does my sent email look different from the preview?
Live sends typically inject a compliance footer and tracking pixel and rewrite links for click tracking, which previews do not. Expect a small difference between preview and delivered mail.
Do I need an SDK for Next.js?
No. A plain fetch to the REST API works and avoids bundle weight entirely. An SDK earns its place on typed errors and retries.