Umów konsultację

Bezpłatna wycena w 24h

Resend — co to jest? Wysyłanie emaili z Next.js i React bez SMTP

Resend — co to jest? Wysyłanie emaili z Next.js i React bez SMTP

Narzędzia15 maja 202611 min czytania

Resend to platforma do wysyłania transakcyjnych emaili przez API, stworzona przez byłego inżyniera Vercel. Brzmi jak kolejny SendGrid? Nie do końca. Po migracji dwóch projektów Next.js z Nodemailer + SMTP na Resend, mogę powiedzieć jedno: to jest narzędzie, które zostało zaprojektowane tak, jak developer chciałby, żeby działał email — i które wreszcie sprawia, że wysyłanie maili z aplikacji webowej nie jest frustrującym doświadczeniem.

Problem z emailem w web developmencie jest taki, że email to technologia z lat 70. Protokół SMTP, kodowanie MIME, renderowanie HTML w klientach pocztowych — to wszystko jest archaiczne, kruche i pełne pułapek. Większość developerów podchodzi do tematu emaili jak do konieczności zła: „muszę wysłać potwierdzenie zamówienia, więc podepnę SMTP i jakoś to będzie".

A potem „jakoś" oznacza maile lądujące w spamie, formularze kontaktowe które cisną się, bo serwer SMTP nie odpowiada, i zero informacji o tym, czy mail dotarł do odbiorcy. Z moich projektów wynika, że email jest jednym z najczęściej zaniedbywanych elementów infrastruktury aplikacji webowych — a jednocześnie jednym z najbardziej krytycznych z perspektywy użytkownika.

Czym jest Resend i dlaczego powstał

Resend stworzył Zeno Rocha — programista, który wcześniej pracował nad DevEx w Vercel. I to widać w każdym aspekcie narzędzia: czyste API, minimalna konfiguracja, natywna integracja z React.

Resend to usługa API-first do wysyłania emaili transakcyjnych i marketingowych. W przeciwieństwie do starszych platform (SendGrid, Mailgun, Amazon SES), Resend został zbudowany od zera z myślą o nowoczesnym stacku JavaScript/TypeScript:

  • SDK dla Node.js/TypeScript — typowany, intuicyjny, bez boilerplate'u
  • React Email — companion library pozwalająca budować szablony emaili jako komponenty React (JSX, nie archaiczny HTML z tabelami)
  • Webhooks — informacje o dostarczeniu, otwarciu, kliknięciu i odrzuceniu w czasie rzeczywistym
  • Wbudowana obsługa domen — konfiguracja DKIM, SPF i DMARC z poziomu dashboardu

Kluczowa filozofia Resend: email powinien być tak prosty do wysłania jak fetch request. I faktycznie — w najprostszej formie wysłanie maila z Next.js wygląda tak:

import { Resend } from 'resend'

const resend = new Resend(process.env.RESEND_API_KEY)

await resend.emails.send({
  from: 'Max Digital <kontakt@maxdigital.pl>',
  to: 'klient@example.com',
  subject: 'Potwierdzenie zapytania',
  html: '<p>Dziękuję za kontakt!</p>'
})

Cztery linie kodu. Brak konfiguracji SMTP. Brak problemów z połączeniem. Brak timeoutów.

Nodemailer + SMTP vs. Resend — co się zmienia

Żeby zrozumieć, dlaczego Resend to krok naprzód, trzeba zobaczyć, jak wygląda tradycyjne podejście do emaili w Next.js.

Typowy setup z Nodemailer:

import nodemailer from 'nodemailer'

const transporter = nodemailer.createTransport({
  host: 'smtp.hosting.pl',
  port: 587,
  secure: false,
  auth: {
    user: process.env.SMTP_USER,
    pass: process.env.SMTP_PASS,
  },
})

await transporter.sendMail({
  from: '"Max Digital" <kontakt@maxdigital.pl>',
  to: 'klient@example.com',
  subject: 'Potwierdzenie zapytania',
  html: '<p>Dziękuję za kontakt!</p>',
})

Wygląda podobnie? Na papierze tak. W praktyce — różnica jest fundamentalna.

Aspekt Nodemailer + SMTP Resend
Połączenie TCP socket do serwera SMTP — timeout, reconnect, TLS handshake HTTPS POST — standardowy fetch, działa wszędzie
Serverless Problematyczne — SMTP utrzymuje połączenie, serverless je zamyka Natywne — bezstanowe HTTP request
Deliverability Zależy od reputacji IP serwera SMTP (hosting współdzielony = ryzyko) Resend zarządza pulami IP z wysoką reputacją
Monitoring Brak — nie wiesz, czy mail dotarł Dashboard z delivery rate, opens, clicks, bounces
Szablony Surowy HTML string lub silnik szablonów (Handlebars itp.) React Email — komponenty JSX z podglądem na żywo
Cena SMTP „za darmo" (wliczony w hosting) — ale bez gwarancji deliverability Darmowe do 100 maili/dzień, potem od $20/mies.

Największy problem Nodemailera w kontekście Next.js na Vercel: SMTP i serverless to fatalna para. Vercel functions mają krótki czas życia (10–60 sekund), a SMTP wymaga ustanowienia połączenia TCP, handshake TLS i utrzymania sesji. W najgorszym scenariuszu (SMTP serwer nie odpowiada) — Twój formularz kontaktowy wisi 30 sekund i zwraca timeout. Użytkownik widzi błąd i wychodzi.

Resend eliminuje ten problem całkowicie — to zwykły HTTP POST, który zachowuje się identycznie jak każdy inny API call w Twojej aplikacji.

React Email — szablony emaili jako komponenty React

To jest funkcja, która przekonała mnie do Resend bardziej niż cokolwiek innego.

Budowanie szablonów emaili to jedno z najbardziej frustrujących doświadczeń w web developmencie. Klienty pocztowe (Outlook, Gmail, Apple Mail) renderują HTML kompletnie inaczej niż przeglądarki. Nie ma Flexbox. Nie ma Grid. Nie ma nowoczesnego CSS. Jedyne, co działa wszędzie, to zagnieżdżone tabele — jak w 2003 roku.

React Email rozwiązuje ten problem, oferując gotowe komponenty React, które pod spodem generują kompatybilny HTML:

import { Html, Head, Body, Container, Text, Button } from '@react-email/components'

export function WelcomeEmail({ name }: { name: string }) {
  return (
    <Html>
      <Head />
      <Body style={{ background: '#f4f4f4', fontFamily: 'sans-serif' }}>
        <Container style={{ maxWidth: 560, margin: '0 auto', padding: 20 }}>
          <Text style={{ fontSize: 20, fontWeight: 'bold' }}>
            Cześć {name}!
          </Text>
          <Text>Dziękuję za kontakt z Max Digital.</Text>
          <Button
            href="https://maxdigital.pl"
            style={{ background: '#ff014f', color: 'white', padding: '12px 24px', borderRadius: 6 }}
          >
            Zobacz naszą ofertę
          </Button>
        </Container>
      </Body>
    </Html>
  )
}

Piszesz JSX, a React Email kompiluje to do HTML z tabelami, który renderuje się poprawnie w Outlook 2016 i w Apple Mail na iPhone jednocześnie. Masz type safety, reużywalne komponenty, i podgląd w przeglądarce podczas tworzenia — identycznie jak przy budowaniu UI w React.

W mojej praktyce React Email skrócił czas tworzenia szablonów emaili z kilku godzin do 20–30 minut. Zamiast kopiować HTML z jakiegoś email buildera, debugować go w Litmusie i modlić się, żeby Outlook go nie rozjechał — piszę komponent i wiem, że zadziała.

Wdrożenie Resend w Next.js — praktyczny setup

Poniżej pełny setup, którego używam w projektach klientów. API route w Next.js App Router obsługująca formularz kontaktowy:

// app/api/contact/route.ts
import { Resend } from 'resend'
import { NextResponse } from 'next/server'
import { ContactEmail } from '@/emails/contact'

const resend = new Resend(process.env.RESEND_API_KEY)

export async function POST(req: Request) {
  const { name, email, message } = await req.json()

  const { data, error } = await resend.emails.send({
    from: 'Formularz kontaktowy <kontakt@maxdigital.pl>',
    to: 'samotnekobietki@gmail.com',
    replyTo: email,
    subject: `Nowe zapytanie od ${name}`,
    react: ContactEmail({ name, email, message }),
  })

  if (error) {
    return NextResponse.json({ error: error.message }, { status: 500 })
  }

  return NextResponse.json({ id: data?.id })
}

Zwróć uwagę na kilka szczegółów:

Max Mazurkiewicz

Max Mazurkiewicz

Founder

POTRZEBUJESZ SPERSONALIZOWANEJ WYCENY?

Chcesz się na coś zdecydować ale od nadmiaru możliwości boli głowa? Skontaktuj się z nami, dobierzemy rozwiązanie do potrzeb Twojej firmy.

Umów się na konsultację
  • replyTo: email — gdy klient odpowie na maila, trafi do osoby, która wypełniła formularz. Banalnie proste, a wiele formularzy tego nie robi.
  • react: ContactEmail(...) — zamiast surowego HTML, przekazujesz komponent React Email. Resend SDK renderuje go automatycznie.
  • Brak try-catch wokół SMTP — Resend zwraca obiekt z data i error, standardowy wzorzec error handling bez wyjątków.

Deliverability — dlaczego maile z SMTP hostingu lądują w spamie

To temat, o którym większość developerów nie myśli — dopóki klient nie powie „maile z formularza nie dochodzą".

Kiedy wysyłasz email przez SMTP współdzielonego hostingu (np. home.pl, nazwa.pl, OVH), Twoja wiadomość wychodzi z adresu IP, który współdzielisz z setkami innych kont. Jeśli ktoś na tym samym serwerze rozsyła spam — Twój adres IP trafia na blacklistę i Twoje maile lądują w spamie. Nie masz nad tym żadnej kontroli.

Resend rozwiązuje to na kilku poziomach:

  • Dedykowane pule IP z zarządzaną reputacją — Resend aktywnie monitoruje deliverability
  • Automatyczna konfiguracja DKIM i SPF — po dodaniu domeny w dashboardzie dostajesz rekordy DNS do ustawienia; Resend weryfikuje je i raportuje status
  • DMARC compliance — maile wysyłane przez Resend przechodzą weryfikację DMARC, co jest coraz częściej wymagane przez Gmail i Outlook
  • Dashboard z delivery rate — widzisz, ile maili dotarło, ile wylądowało w spamie (bounced), ile zostało otwartych

W jednym z moich projektów po migracji z SMTP hostingu na Resend delivery rate wzrósł z ok. 82% do 99.1% — mierzony przez Resend dashboard na próbie 400+ maili z formularza kontaktowego w ciągu miesiąca. Różnica była natychmiast widoczna: klient przestał dostawać maile „nie dostałem potwierdzenia" od swoich klientów.

Cennik Resend — ile to kosztuje w praktyce

Resend ma prosty, przejrzysty cennik — bez ukrytych kosztów za „premium deliverability" czy „advanced analytics", które inne platformy lubią chować za wyższymi planami.

Plan Limit Cena Uwagi
Free 100 maili / dzień $0 Wystarczy dla formularza kontaktowego strony firmowej
Pro 50 000 maili / mies. $20/mies. Dedykowany IP, custom tracking domain
Enterprise Custom Custom SLA, dedicated support, SSO

Dla kontekstu: strona firmowa, która otrzymuje 5–10 zapytań z formularza dziennie, mieści się w darmowym planie. Sklep e-commerce wysyłający potwierdzenia zamówień, powiadomienia o wysyłce i maile marketingowe — plan Pro za $20 pokryje potrzeby do skali kilkudziesięciu tysięcy transakcji miesięcznie.

Porównując z alternatywami: SendGrid startuje od $20/mies. za 50 000 maili (porównywalnie), ale Resend oferuje React Email, lepszy DX i prostszy dashboard. Amazon SES jest tańszy przy dużych wolumenach ($0.10 za 1 000 maili), ale wymaga ręcznej konfiguracji infrastruktury i nie ma wbudowanego SDK dla React.

Kiedy Resend, a kiedy coś innego

Resend nie jest idealnym narzędziem do wszystkiego. W mojej praktyce sprawdza się najlepiej w konkretnych scenariuszach:

Kiedy Resend:

  • Projekty Next.js / React — natywna integracja i React Email dają nieporównywalny DX
  • Strony firmowe z formularzami kontaktowymi — darmowy plan, 10-minutowe wdrożenie
  • Aplikacje na Vercel / serverless — HTTP API zamiast SMTP = zero problemów z połączeniem
  • Maile transakcyjne (potwierdzenia, resetowanie hasła, powiadomienia)

Kiedy coś innego:

  • Masowy email marketing (100k+ maili) — Mailchimp, ConvertKit lub Brevo mają lepsze narzędzia do segmentacji i automatyzacji kampanii
  • Ekstremalnie duże wolumeny (miliony maili) — Amazon SES będzie tańszy przy tej skali
  • Projekty non-JS — Resend działa z każdym językiem przez REST API, ale SDK i React Email to główna przewaga; w Pythonie czy PHP ta przewaga nie istnieje

Resend w SaaS — emaile transakcyjne które budują produkt

Jeśli budujesz SaaS na Next.js, emaile transakcyjne to nie „feature" — to fundamentalny element doświadczenia użytkownika. Welcome email po rejestracji, potwierdzenie subskrypcji, powiadomienie o zmianie planu, reset hasła, alert o zbliżającym się limicie — każda z tych wiadomości wpływa na retencję i postrzeganie Twojego produktu.

Dlaczego Resend sprawdza się w SaaS-ach lepiej niż SMTP czy starsze platformy:

  • Onboarding emails — welcome email musi dotrzeć natychmiast. Z SMTP hostingu „natychmiast" oznacza 5–30 sekund (queue, retry, TLS handshake). Z Resend API — poniżej sekundy. Pierwsze wrażenie w SaaS jest bezcenne.
  • Webhooks delivery — Resend wysyła webhooki o statusie dostarczenia (delivered, bounced, complained). Możesz reagować programowo — np. jeśli email weryfikacyjny bounce'uje, pokaż użytkownikowi komunikat „sprawdź adres email" zamiast ciszy.
  • Skalowalność — na wczesnym etapie SaaS-u darmowy plan (100 maili/dzień) wystarczy. Gdy rośniesz — przeskakujesz na plan Pro bez zmiany kodu. Nie musisz migrować z jednego SMTP na inny.
  • React Email = spójny branding — w SaaS-ie maile są częścią produktu. Budowanie szablonów w JSX pozwala współdzielić design tokens (kolory, fonty) między aplikacją a emailami. Spójność wizualna buduje profesjonalizm.

W SaaS-ach, które buduję na Next.js, Resend jest standardowym wyborem od etapu MVP. Darmowy plan eliminuje koszty na starcie, React Email daje profesjonalne szablony od pierwszego dnia, a migracja na wyższy plan to zmiana jednej zmiennej środowiskowej.

Podsumowanie — email nie musi boleć

Resend rozwiązuje realny problem, z którym mierzy się każdy developer budujący aplikacje webowe: wysyłanie emaili z kodu jest nieproporcjonalnie trudne do tego, jak prostą operacją powinno być.

SMTP, problemy z deliverability, archaiczne szablony HTML — to wszystko odchodzi do przeszłości z narzędziem, które zostało zaprojektowane przez developerów dla developerów. React Email pozwala budować piękne, responsywne maile w JSX. HTTP API eliminuje problemy z serverless. Dashboard daje wgląd w to, co dzieje się z mailami po wysłaniu.

Jeśli budujesz cokolwiek na Next.js i potrzebujesz wysyłać emaile — Resend to najrozsądniejszy wybór na rynku. Darmowy plan pokrywa potrzeby większości stron firmowych, wdrożenie zajmuje 10 minut, a efekt — maile które docierają — jest natychmiast widoczny.

Najczęściej zadawane pytania

Tak — darmowy plan pozwala wysyłać do 100 emaili dziennie (ok. 3 000 miesięcznie) z jednej domeny. To wystarcza dla strony firmowej z formularzem kontaktowym. Plan Pro za $20/mies. daje 50 000 emaili i dedykowany IP.

Resend oferuje natywny SDK dla TypeScript, integrację z React Email (szablony emaili jako komponenty JSX) i prostszy dashboard. SendGrid ma szerszą ofertę marketingową, ale jego developer experience jest gorszy — konfiguracja jest bardziej złożona, a SDK mniej typowany.

Tak — to jeden z głównych powodów, dla których Resend powstał. W przeciwieństwie do SMTP (który wymaga utrzymywania połączenia TCP), Resend używa HTTP API — bezstanowy request, idealny dla serverless functions na Vercel z krótkim czasem życia.

React Email to companion library, która pozwala budować szablony emaili jako komponenty React (JSX). Nie jest wymagana — Resend akceptuje też surowy HTML. Ale React Email znacząco upraszcza tworzenie responsywnych maili, bo komponenty generują HTML kompatybilny z Outlook, Gmail i Apple Mail.

Resend zarządza dedykowanymi pulami IP z wysoką reputacją i wymaga poprawnej konfiguracji DKIM, SPF i DMARC. W moich projektach delivery rate po migracji z SMTP hostingu na Resend wzrósł z ok. 82% do ponad 99%. Kluczowe jest prawidłowe ustawienie rekordów DNS domeny.

Resend obsługuje zarówno maile transakcyjne, jak i marketingowe z wbudowaną funkcją Audiences. Jednak dla zaawansowanych kampanii z segmentacją, automatyzacjami i A/B testami lepsze będą dedykowane platformy jak Mailchimp czy ConvertKit.

Max Mazurkiewicz
Max Mazurkiewicz
Founder
Digital marketing expert