Resend breaking changes, updated weekly
Every verified Resend trap in Footgun: changes and behaviors that break code or give wrong results, newest first. Each one has the error you see, the fix, and the date it was last checked. The list updates when the weekly check adds or retires a trap. For the full cause and sources, open the trap, or see all Resend traps.
fg-0402· added 2026-10-15· last checked 2026-10-15
Resend Audiences calls and audienceId still work but are deprecated in favor of Segments
Symptom
Docs and SDK types say segments where existing code says audiences
Fix
Create contacts without an audience id, attach them to segments, and move broadcast targeting from audiences to segments.
fg-0406· added 2026-10-15· last checked 2026-10-15
Resend inline images with src=cid: show as broken or as plain attachments
Symptom
img src=cid:logo renders as a broken image
Fix
Upgrade to resend 4.8.0 or later and set inlineContentId on the attachment to the same name used after cid:.
fg-0408· added 2026-10-15· last checked 2026-10-15
Resend returns 403 'You can only send testing emails to your own email address'
Symptom
403 validation_error: You can only send testing emails to your own email address
Fix
Verify a domain and send from an address on it. For automated tests, send to the resend.dev test inboxes instead of real or made-up addresses.
fg-0411· added 2026-10-15· last checked 2026-10-15
Resend webhook endpoint gets disabled after repeated failures and events stop
Symptom
Email from Resend saying the webhook endpoint was disabled
Fix
Return 2xx fast and process in the background, dedupe on svix-id, then re-enable the endpoint in the dashboard and replay the missed messages.
fg-0466· added 2026-10-15· last checked 2026-10-15
Attachments are missing from emails sent through the Resend batch endpoint
Symptom
Emails from resend.batch.send arrive without their attachments
Fix
Send any email that carries attachments through the single send endpoint, and use batch only for emails without them, at most 100 per call.
fg-0399· added 2026-10-15· last checked 2026-10-15
Cloudflare Worker deploy fails after upgrading the resend package to 6.9
Symptom
Build errors resolving stream, buffer, string_decoder or crypto
Fix
Upgrade to resend 6.9.2 or later. If you must stay on 6.9.0 or 6.9.1, add compatibility_flags = ["nodejs_compat"] to wrangler.toml.
fg-0400· added 2026-10-15· last checked 2026-10-15
Email body shows [object Promise] after upgrading React Email
Symptom
Recipients receive the literal text [object Promise]
Fix
Await render, or pass the component through the react field and let the SDK render it.
fg-0401· added 2026-10-15· last checked 2026-10-15
Error: Cannot find module 'react-dom/server' when sending plain HTML with Resend
Symptom
Error: Cannot find module 'react-dom/server'
Fix
Upgrade to resend 4.0.1 or later. If you do pass react, install react and react-dom yourself.
fg-0404· added 2026-10-15· last checked 2026-10-15
Resend domain stays pending because the DNS host rewrote resend._domainkey or the send MX
Symptom
Domain stuck in pending or failed for hours
Fix
Enter only the prefix as the host (resend._domainkey, send), add a trailing period to the MX value, set Cloudflare records to DNS only, then use Restart verification.
fg-0405· added 2026-10-15· last checked 2026-10-15
Resend free plan starts failing with daily_quota_exceeded well before 100 sends
Symptom
429 daily_quota_exceeded: You have exceeded your daily email sending quota.
Fix
Count recipients, not API calls, read the x-resend-daily-quota header, and move to a paid plan before production traffic.
fg-0407· added 2026-10-15· last checked 2026-10-15
Resend rejects sends with 403 'The domain is not verified' right after adding DNS records
Symptom
403 validation_error: The example.com domain is not verified. Please, add and verify your domain.
Fix
Wait until the domain status is verified before deploying, and set from to an address on exactly that domain. Fail fast at startup if the configured from domain is not verified.
fg-0409· added 2026-10-15· last checked 2026-10-15
Resend returns 409 invalid_idempotent_request when a retry reuses the key
Symptom
409 invalid_idempotent_request
Fix
Derive the key from a stable event id, build the payload deterministically, retry concurrent 409s after a pause, and keep keys under 256 characters.
fg-0410· added 2026-10-15· last checked 2026-10-15
Resend returns 429 rate_limit_exceeded when sending a list with Promise.all
Symptom
429 rate_limit_exceeded: Too many requests. Please limit the number of requests per second.
Fix
Use the batch endpoint for up to 100 emails per call, throttle the rest, and on 429 wait for the retry-after header before retrying.
fg-0412· added 2026-10-15· last checked 2026-10-15
Resend webhook verification throws even though the signing secret is correct
Symptom
resend.webhooks.verify throws on every event
Fix
Read the body as text before any JSON parser and pass that string with the svix-id, svix-timestamp, and svix-signature headers.
Have your agent check Resend changes before it codes