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.

  1. 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.

  2. 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:.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. 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.

  14. 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

$ /plugin marketplace add getfootgun/footgun
$ /plugin install footgun@footgun