[{"data":1,"prerenderedAt":1552},["ShallowReactive",2],{"docs-navigation":3,"docs:\u002Fdocs\u002Fnuxt\u002Femail\u002Fresend":618,"\u002Fdocs\u002Fnuxt\u002Femail\u002Fresend:surround":1549},[4],{"title":5,"path":6,"children":7},"Docs","\u002Fdocs",[8,316,467],{"title":9,"path":10,"children":11},"Vite","\u002Fdocs\u002Fvite",[12,30,52,63,78,100,174,183,219,238,255,273,304],{"title":13,"path":14,"description":15,"icon":16,"children":17},"Getting Started","\u002Fdocs\u002Fvite\u002Fgetting-started","Learn the ViteHub package model, pick a starting path, and get to a working feature quickly.","i-lucide-rocket",[18,22,26],{"title":19,"path":20,"description":21},"Choose a Package","\u002Fdocs\u002Fvite\u002Fgetting-started\u002Fchoose-a-package","Pick the right ViteHub feature by the job you need to solve on the server.",{"title":23,"path":24,"description":25},"Entrypoints","\u002Fdocs\u002Fvite\u002Fgetting-started\u002Fentrypoints","Understand what belongs on the package root and what each framework-specific entrypoint owns.",{"title":27,"path":28,"description":29},"Architecture","\u002Fdocs\u002Fvite\u002Fgetting-started\u002Farchitecture","How ViteHub keeps one shared feature bridge across Vite, Nitro, and Nuxt.",{"title":31,"path":32,"description":33,"icon":34,"children":35},"Database","\u002Fdocs\u002Fvite\u002Fdatabase","Set up Drizzle or Prisma with `@vitehub\u002Fdb` and explicit ORM runtime imports.","i-lucide-database",[36,40,44,48],{"title":37,"path":38,"description":39},"Drizzle","\u002Fdocs\u002Fvite\u002Fdatabase\u002Fdrizzle","Configure Drizzle with `@vitehub\u002Fdb\u002Fdrizzle`, schema discovery, and committed SQL migrations.",{"title":41,"path":42,"description":43},"Prisma","\u002Fdocs\u002Fvite\u002Fdatabase\u002Fprisma","Configure Prisma with `@vitehub\u002Fdb\u002Fprisma`, generated client output, and native Prisma migrations.",{"title":45,"path":46,"description":47},"Migrations","\u002Fdocs\u002Fvite\u002Fdatabase\u002Fmigrations","Understand when ViteHub applies committed Drizzle and Prisma migrations during development and build.",{"title":49,"path":50,"description":51},"Platform notes","\u002Fdocs\u002Fvite\u002Fdatabase\u002Fplatform-notes","Review driver defaults, hosting behavior, and current runtime limits for Drizzle and Prisma.",{"title":53,"path":54,"description":55,"icon":56,"children":57},"KV","\u002Fdocs\u002Fvite\u002Fkv","Set up key-value storage with the same provider detection used by NuxtHub.","i-lucide-database-zap",[58],{"title":59,"path":60,"description":61,"icon":62},"Usage","\u002Fdocs\u002Fvite\u002Fkv\u002Fusage","Use the KV SDK to set, get, delete, clear, and list key-value pairs.","i-lucide-code",{"title":64,"path":65,"description":66,"icon":67,"children":68},"Blob","\u002Fdocs\u002Fvite\u002Fblob","Add blob storage for images, videos, documents, and other files with `@vitehub\u002Fblob`.","i-lucide-shapes",[69,74],{"title":70,"path":71,"description":72,"icon":73},"Upload","\u002Fdocs\u002Fvite\u002Fblob\u002Fupload","Upload files with validation, simple form handlers, and multipart flows using `@vitehub\u002Fblob`.","i-lucide-upload",{"title":75,"path":76,"description":77,"icon":62},"Blob SDK","\u002Fdocs\u002Fvite\u002Fblob\u002Fusage","Store, read, list, validate, serve, and delete files with `@vitehub\u002Fblob`.",{"title":79,"path":80,"description":81,"icon":82,"children":83},"Vector","\u002Fdocs\u002Fvite\u002Fvector","Add provider-agnostic named vector indexes with similarity search.","i-lucide-scan-search",[84,90,95],{"title":85,"path":86,"description":87,"icon":88,"group":89},"Cloudflare","\u002Fdocs\u002Fvite\u002Fvector\u002Fcloudflare","Configure @vitehub\u002Fvector against Cloudflare Vectorize.","i-simple-icons-cloudflare","Providers",{"title":91,"path":92,"description":93,"icon":94,"group":89},"Postgres","\u002Fdocs\u002Fvite\u002Fvector\u002Fpostgres","Configure @vitehub\u002Fvector against a pgvector-backed Postgres database.","i-simple-icons-postgresql",{"title":96,"path":97,"description":98,"icon":99,"group":89},"Upstash","\u002Fdocs\u002Fvite\u002Fvector\u002Fupstash","Configure @vitehub\u002Fvector against the Upstash Vector HTTP API.","i-simple-icons-upstash",{"title":101,"path":102,"description":103,"icon":104,"children":105},"Queue","\u002Fdocs\u002Fvite\u002Fqueue","Send background jobs through Platformatic, Cloudflare, Vercel, Netlify, Upstash QStash, or Memory.","i-lucide-layers",[106,110,114,118,123,127,131,135,139,144,147,152,157,161,166,170],{"title":107,"path":108,"description":109},"Quickstart","\u002Fdocs\u002Fvite\u002Fqueue\u002Fquickstart","Get a first queue working locally with the memory provider.",{"title":111,"path":112,"description":113},"Runtime API","\u002Fdocs\u002Fvite\u002Fqueue\u002Fruntime-api","Reference for defineQueue, runQueue, deferQueue, getQueue, and the core Queue types.",{"title":115,"path":116,"description":117},"When to use Queue","\u002Fdocs\u002Fvite\u002Fqueue\u002Fwhen-to-use","Decide when Queue is the right primitive compared with Workflow, Cron, or inline request handling.",{"title":119,"path":120,"description":121,"group":122},"Send a job","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Fsend-a-job","Enqueue payloads with runQueue and the common delivery patterns.","Guides",{"title":124,"path":125,"description":126,"group":122},"Defer after response","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Fdefer-after-response","Use deferQueue when the queue send should happen after the current response is committed.",{"title":128,"path":129,"description":130,"group":122},"Validate payloads","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Fvalidate-payloads","Validate payloads before enqueueing and before running queue handlers.",{"title":132,"path":133,"description":134,"group":122},"Local development","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Flocal-development","Use the memory provider for local development and understand how auto-selection works.",{"title":136,"path":137,"description":138,"group":122},"Native handles","\u002Fdocs\u002Fvite\u002Fqueue\u002Fguides\u002Fnative-handles","Know when to use getQueue and provider-native methods instead of the portable runtime API.",{"title":140,"path":141,"description":142,"icon":143,"group":89},"Platformatic","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fplatformatic","Configure Platformatic Job Queue with local or self-hosted workers.","i-brand-platformatic",{"title":85,"path":145,"description":146,"icon":88,"group":89},"\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fcloudflare","Configure Cloudflare Queues and process named queues in Workers.",{"title":148,"path":149,"description":150,"icon":151,"group":89},"Vercel","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fvercel","Configure Vercel Queue and send named jobs through Vercel.","i-simple-icons-vercel",{"title":153,"path":154,"description":155,"icon":156,"group":89},"Netlify","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fnetlify","Configure Netlify Async Workloads and run named queues on Netlify.","i-simple-icons-netlify",{"title":158,"path":159,"description":160,"icon":99,"group":89},"Upstash QStash","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fupstash-qstash","Configure Upstash QStash for queues and signed callback delivery.",{"title":162,"path":163,"description":164,"icon":165,"group":89},"Memory","\u002Fdocs\u002Fvite\u002Fqueue\u002Fproviders\u002Fmemory","Process queue jobs in-memory for local development and testing.","i-lucide-memory-stick",{"title":167,"path":168,"description":169},"Troubleshooting","\u002Fdocs\u002Fvite\u002Fqueue\u002Ftroubleshooting","Diagnose common Queue setup and runtime problems across local and hosted providers.",{"title":171,"path":172,"description":173},"Playground","\u002Fdocs\u002Fvite\u002Fqueue\u002Fplayground","Explore the existing Queue playground app and the files that show the end-to-end runtime flow.",{"title":175,"path":176,"description":177,"icon":178,"children":179},"Cache","\u002Fdocs\u002Fvite\u002Fcache","Configure Nitro cache storage for local development, Vercel, and Cloudflare deployments.","i-lucide-timer-reset",[180],{"title":59,"path":181,"description":182,"icon":62},"\u002Fdocs\u002Fvite\u002Fcache\u002Fusage","Cache routes and server functions with practical invalidation examples.",{"title":184,"path":185,"description":186,"icon":187,"children":188},"Email","\u002Fdocs\u002Fvite\u002Femail","Render markdown email files and send them through Resend, SendGrid, or Postmark.","i-lucide-mail",[189,194,199,204,209,214],{"title":190,"path":191,"description":192,"icon":193},"Frontmatter","\u002Fdocs\u002Fvite\u002Femail\u002Ffrontmatter","Define subject lines, recipients, metadata, and delivery defaults directly in the Markdown email file.","i-lucide-file-text",{"title":195,"path":196,"description":197,"icon":198},"Input Schemas","\u002Fdocs\u002Fvite\u002Femail\u002Finput-schemas","Add an embedded schema block when you want email input validation and stronger TypeScript inference.","i-brand-standard-schema",{"title":200,"path":201,"description":202,"icon":203},"i18n","\u002Fdocs\u002Fvite\u002Femail\u002Fi18n","Localize Markdown emails with locale-specific template files and ICU message formatting.","i-lucide-languages",{"title":205,"path":206,"description":207,"icon":208,"group":89},"Resend","\u002Fdocs\u002Fvite\u002Femail\u002Fresend","Configure Resend for transactional delivery and native batch sending.","i-provider-resend",{"title":210,"path":211,"description":212,"icon":213,"group":89},"SendGrid","\u002Fdocs\u002Fvite\u002Femail\u002Fsendgrid","Configure SendGrid when you need advanced delivery controls and template support.","i-provider-sendgrid",{"title":215,"path":216,"description":217,"icon":218,"group":89},"Postmark","\u002Fdocs\u002Fvite\u002Femail\u002Fpostmark","Configure Postmark for transactional streams and template-first sends.","i-provider-postmark",{"title":220,"path":221,"description":222,"icon":223,"children":224},"Workflow","\u002Fdocs\u002Fvite\u002Fworkflow","Run durable workflows on Cloudflare, Netlify, Vercel, or OpenWorkflow.","i-lucide-workflow",[225,228,231,235],{"title":85,"path":226,"description":227,"icon":88},"\u002Fdocs\u002Fvite\u002Fworkflow\u002Fcloudflare","Configure Cloudflare Workflows and inspect runs from your app.",{"title":148,"path":229,"description":230,"icon":151},"\u002Fdocs\u002Fvite\u002Fworkflow\u002Fvercel","Configure Vercel Workflow and run durable workflows on Vercel.",{"title":232,"path":233,"description":234,"icon":223},"OpenWorkflow","\u002Fdocs\u002Fvite\u002Fworkflow\u002Fopenworkflow","Connect OpenWorkflow and use your own workflow backend behind the ViteHub API.",{"title":153,"path":236,"description":237,"icon":156},"\u002Fdocs\u002Fvite\u002Fworkflow\u002Fnetlify","Configure Netlify Async Workloads and run discovered workflows on Netlify.",{"title":239,"path":240,"description":241,"icon":242,"children":243},"Cron","\u002Fdocs\u002Fvite\u002Fcron","Schedule crons with Node, Cloudflare, or Vercel.","i-lucide-list-check",[244,249,252],{"title":245,"path":246,"description":247,"icon":248},"Node","\u002Fdocs\u002Fvite\u002Fcron\u002Fnode","Configure in-process scheduling for local crons and lightweight cron tasks.","i-simple-icons-nodedotjs",{"title":85,"path":250,"description":251,"icon":88},"\u002Fdocs\u002Fvite\u002Fcron\u002Fcloudflare","Configure Cloudflare-triggered schedules for your crons.",{"title":148,"path":253,"description":254,"icon":151},"\u002Fdocs\u002Fvite\u002Fcron\u002Fvercel","Generate Vercel cron config from discovered crons.",{"title":256,"path":257,"description":258,"icon":259,"children":260},"Browser","\u002Fdocs\u002Fvite\u002Fbrowser","Run named browser automations against Playwright, Browserbase, or Cloudflare Browser Rendering.","i-lucide-monitor-play",[261,264,269],{"title":85,"path":262,"description":263,"icon":88},"\u002Fdocs\u002Fvite\u002Fbrowser\u002Fcloudflare","Configure Cloudflare Browser Rendering through the official `cloudflare` package.",{"title":265,"path":266,"description":267,"icon":268},"Browserbase","\u002Fdocs\u002Fvite\u002Fbrowser\u002Fbrowserbase","Configure Browserbase for managed CDP sessions and session-aware browser calls.","i-lucide-orbit",{"title":270,"path":271,"description":272,"icon":259},"Playwright","\u002Fdocs\u002Fvite\u002Fbrowser\u002Fplaywright","Configure remote Playwright browser sessions over a WebSocket endpoint.",{"title":274,"path":275,"description":276,"icon":277,"children":278},"Sandbox","\u002Fdocs\u002Fvite\u002Fsandbox","Run isolated sandboxes on Cloudflare Durable Objects, Cloudflare Dynamic Workers, Vercel, Deno, Docker, or locally.","i-lucide-box",[279,282,286,289,294,299],{"title":85,"path":280,"description":281,"icon":88},"\u002Fdocs\u002Fvite\u002Fsandbox\u002Fcloudflare","Configure Cloudflare Sandbox on top of Durable Objects.",{"title":283,"path":284,"description":285,"icon":88},"Cloudflare Dynamic","\u002Fdocs\u002Fvite\u002Fsandbox\u002Fcloudflare-dynamic","Configure Cloudflare Dynamic Workers with the Worker Loader API.",{"title":148,"path":287,"description":288,"icon":151},"\u002Fdocs\u002Fvite\u002Fsandbox\u002Fvercel","Configure Vercel Sandbox and run isolated sandboxes on Vercel.",{"title":290,"path":291,"description":292,"icon":293},"Deno","\u002Fdocs\u002Fvite\u002Fsandbox\u002Fdeno","Configure Deno Sandbox and run isolated sandboxes on Deno Deploy.","i-simple-icons-deno",{"title":295,"path":296,"description":297,"icon":298},"Docker","\u002Fdocs\u002Fvite\u002Fsandbox\u002Fdocker","Configure Docker Sandbox and run isolated sandboxes locally.","i-simple-icons-docker",{"title":300,"path":301,"description":302,"icon":303},"Local","\u002Fdocs\u002Fvite\u002Fsandbox\u002Flocal","Run sandboxes locally with OS-level isolation using platform primitives.","i-lucide-monitor",{"title":305,"path":306,"description":307,"icon":308,"children":309},"Analytics","\u002Fdocs\u002Fvite\u002Fanalytics","Integrate explicit analytics backends with a small shared runtime API.","i-lucide-megaphone",[310,313],{"title":148,"path":311,"description":312,"icon":151},"\u002Fdocs\u002Fvite\u002Fanalytics\u002Fvercel","Configure Vercel Analytics through the official SDK and keep a small portable runtime API.",{"title":85,"path":314,"description":315,"icon":88},"\u002Fdocs\u002Fvite\u002Fanalytics\u002Fcloudflare","Configure first-party analytics ingestion on Cloudflare and query a semantic event shape on top of Analytics Engine slots.",{"title":317,"path":318,"children":319},"Nitro","\u002Fdocs\u002Fnitro",[320,329,340,345,352,361,396,401,416,427,436,445,460],{"title":13,"path":321,"description":15,"icon":16,"children":322},"\u002Fdocs\u002Fnitro\u002Fgetting-started",[323,325,327],{"title":19,"path":324,"description":21},"\u002Fdocs\u002Fnitro\u002Fgetting-started\u002Fchoose-a-package",{"title":23,"path":326,"description":25},"\u002Fdocs\u002Fnitro\u002Fgetting-started\u002Fentrypoints",{"title":27,"path":328,"description":29},"\u002Fdocs\u002Fnitro\u002Fgetting-started\u002Farchitecture",{"title":31,"path":330,"description":33,"icon":34,"children":331},"\u002Fdocs\u002Fnitro\u002Fdatabase",[332,334,336,338],{"title":37,"path":333,"description":39},"\u002Fdocs\u002Fnitro\u002Fdatabase\u002Fdrizzle",{"title":41,"path":335,"description":43},"\u002Fdocs\u002Fnitro\u002Fdatabase\u002Fprisma",{"title":45,"path":337,"description":47},"\u002Fdocs\u002Fnitro\u002Fdatabase\u002Fmigrations",{"title":49,"path":339,"description":51},"\u002Fdocs\u002Fnitro\u002Fdatabase\u002Fplatform-notes",{"title":53,"path":341,"description":55,"icon":56,"children":342},"\u002Fdocs\u002Fnitro\u002Fkv",[343],{"title":59,"path":344,"description":61,"icon":62},"\u002Fdocs\u002Fnitro\u002Fkv\u002Fusage",{"title":64,"path":346,"description":66,"icon":67,"children":347},"\u002Fdocs\u002Fnitro\u002Fblob",[348,350],{"title":70,"path":349,"description":72,"icon":73},"\u002Fdocs\u002Fnitro\u002Fblob\u002Fupload",{"title":75,"path":351,"description":77,"icon":62},"\u002Fdocs\u002Fnitro\u002Fblob\u002Fusage",{"title":79,"path":353,"description":81,"icon":82,"children":354},"\u002Fdocs\u002Fnitro\u002Fvector",[355,357,359],{"title":85,"path":356,"description":87,"icon":88,"group":89},"\u002Fdocs\u002Fnitro\u002Fvector\u002Fcloudflare",{"title":91,"path":358,"description":93,"icon":94,"group":89},"\u002Fdocs\u002Fnitro\u002Fvector\u002Fpostgres",{"title":96,"path":360,"description":98,"icon":99,"group":89},"\u002Fdocs\u002Fnitro\u002Fvector\u002Fupstash",{"title":101,"path":362,"description":103,"icon":104,"children":363},"\u002Fdocs\u002Fnitro\u002Fqueue",[364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394],{"title":107,"path":365,"description":109},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fquickstart",{"title":111,"path":367,"description":113},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fruntime-api",{"title":115,"path":369,"description":117},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fwhen-to-use",{"title":119,"path":371,"description":121,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Fsend-a-job",{"title":124,"path":373,"description":126,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Fdefer-after-response",{"title":128,"path":375,"description":130,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Fvalidate-payloads",{"title":132,"path":377,"description":134,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Flocal-development",{"title":136,"path":379,"description":138,"group":122},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fguides\u002Fnative-handles",{"title":140,"path":381,"description":142,"icon":143,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fplatformatic",{"title":85,"path":383,"description":146,"icon":88,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fcloudflare",{"title":148,"path":385,"description":150,"icon":151,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fvercel",{"title":153,"path":387,"description":155,"icon":156,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fnetlify",{"title":158,"path":389,"description":160,"icon":99,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fupstash-qstash",{"title":162,"path":391,"description":164,"icon":165,"group":89},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fproviders\u002Fmemory",{"title":167,"path":393,"description":169},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Ftroubleshooting",{"title":171,"path":395,"description":173},"\u002Fdocs\u002Fnitro\u002Fqueue\u002Fplayground",{"title":175,"path":397,"description":177,"icon":178,"children":398},"\u002Fdocs\u002Fnitro\u002Fcache",[399],{"title":59,"path":400,"description":182,"icon":62},"\u002Fdocs\u002Fnitro\u002Fcache\u002Fusage",{"title":184,"path":402,"description":186,"icon":187,"children":403},"\u002Fdocs\u002Fnitro\u002Femail",[404,406,408,410,412,414],{"title":190,"path":405,"description":192,"icon":193},"\u002Fdocs\u002Fnitro\u002Femail\u002Ffrontmatter",{"title":195,"path":407,"description":197,"icon":198},"\u002Fdocs\u002Fnitro\u002Femail\u002Finput-schemas",{"title":200,"path":409,"description":202,"icon":203},"\u002Fdocs\u002Fnitro\u002Femail\u002Fi18n",{"title":205,"path":411,"description":207,"icon":208,"group":89},"\u002Fdocs\u002Fnitro\u002Femail\u002Fresend",{"title":210,"path":413,"description":212,"icon":213,"group":89},"\u002Fdocs\u002Fnitro\u002Femail\u002Fsendgrid",{"title":215,"path":415,"description":217,"icon":218,"group":89},"\u002Fdocs\u002Fnitro\u002Femail\u002Fpostmark",{"title":220,"path":417,"description":222,"icon":223,"children":418},"\u002Fdocs\u002Fnitro\u002Fworkflow",[419,421,423,425],{"title":85,"path":420,"description":227,"icon":88},"\u002Fdocs\u002Fnitro\u002Fworkflow\u002Fcloudflare",{"title":148,"path":422,"description":230,"icon":151},"\u002Fdocs\u002Fnitro\u002Fworkflow\u002Fvercel",{"title":232,"path":424,"description":234,"icon":223},"\u002Fdocs\u002Fnitro\u002Fworkflow\u002Fopenworkflow",{"title":153,"path":426,"description":237,"icon":156},"\u002Fdocs\u002Fnitro\u002Fworkflow\u002Fnetlify",{"title":239,"path":428,"description":241,"icon":242,"children":429},"\u002Fdocs\u002Fnitro\u002Fcron",[430,432,434],{"title":245,"path":431,"description":247,"icon":248},"\u002Fdocs\u002Fnitro\u002Fcron\u002Fnode",{"title":85,"path":433,"description":251,"icon":88},"\u002Fdocs\u002Fnitro\u002Fcron\u002Fcloudflare",{"title":148,"path":435,"description":254,"icon":151},"\u002Fdocs\u002Fnitro\u002Fcron\u002Fvercel",{"title":256,"path":437,"description":258,"icon":259,"children":438},"\u002Fdocs\u002Fnitro\u002Fbrowser",[439,441,443],{"title":85,"path":440,"description":263,"icon":88},"\u002Fdocs\u002Fnitro\u002Fbrowser\u002Fcloudflare",{"title":265,"path":442,"description":267,"icon":268},"\u002Fdocs\u002Fnitro\u002Fbrowser\u002Fbrowserbase",{"title":270,"path":444,"description":272,"icon":259},"\u002Fdocs\u002Fnitro\u002Fbrowser\u002Fplaywright",{"title":274,"path":446,"description":276,"icon":277,"children":447},"\u002Fdocs\u002Fnitro\u002Fsandbox",[448,450,452,454,456,458],{"title":85,"path":449,"description":281,"icon":88},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fcloudflare",{"title":283,"path":451,"description":285,"icon":88},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fcloudflare-dynamic",{"title":148,"path":453,"description":288,"icon":151},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fvercel",{"title":290,"path":455,"description":292,"icon":293},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fdeno",{"title":295,"path":457,"description":297,"icon":298},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Fdocker",{"title":300,"path":459,"description":302,"icon":303},"\u002Fdocs\u002Fnitro\u002Fsandbox\u002Flocal",{"title":305,"path":461,"description":307,"icon":308,"children":462},"\u002Fdocs\u002Fnitro\u002Fanalytics",[463,465],{"title":148,"path":464,"description":312,"icon":151},"\u002Fdocs\u002Fnitro\u002Fanalytics\u002Fvercel",{"title":85,"path":466,"description":315,"icon":88},"\u002Fdocs\u002Fnitro\u002Fanalytics\u002Fcloudflare",{"title":468,"path":469,"children":470},"Nuxt","\u002Fdocs\u002Fnuxt",[471,480,491,496,503,512,547,552,567,578,587,596,611],{"title":13,"path":472,"description":15,"icon":16,"children":473},"\u002Fdocs\u002Fnuxt\u002Fgetting-started",[474,476,478],{"title":19,"path":475,"description":21},"\u002Fdocs\u002Fnuxt\u002Fgetting-started\u002Fchoose-a-package",{"title":23,"path":477,"description":25},"\u002Fdocs\u002Fnuxt\u002Fgetting-started\u002Fentrypoints",{"title":27,"path":479,"description":29},"\u002Fdocs\u002Fnuxt\u002Fgetting-started\u002Farchitecture",{"title":31,"path":481,"description":33,"icon":34,"children":482},"\u002Fdocs\u002Fnuxt\u002Fdatabase",[483,485,487,489],{"title":37,"path":484,"description":39},"\u002Fdocs\u002Fnuxt\u002Fdatabase\u002Fdrizzle",{"title":41,"path":486,"description":43},"\u002Fdocs\u002Fnuxt\u002Fdatabase\u002Fprisma",{"title":45,"path":488,"description":47},"\u002Fdocs\u002Fnuxt\u002Fdatabase\u002Fmigrations",{"title":49,"path":490,"description":51},"\u002Fdocs\u002Fnuxt\u002Fdatabase\u002Fplatform-notes",{"title":53,"path":492,"description":55,"icon":56,"children":493},"\u002Fdocs\u002Fnuxt\u002Fkv",[494],{"title":59,"path":495,"description":61,"icon":62},"\u002Fdocs\u002Fnuxt\u002Fkv\u002Fusage",{"title":64,"path":497,"description":66,"icon":67,"children":498},"\u002Fdocs\u002Fnuxt\u002Fblob",[499,501],{"title":70,"path":500,"description":72,"icon":73},"\u002Fdocs\u002Fnuxt\u002Fblob\u002Fupload",{"title":75,"path":502,"description":77,"icon":62},"\u002Fdocs\u002Fnuxt\u002Fblob\u002Fusage",{"title":79,"path":504,"description":81,"icon":82,"children":505},"\u002Fdocs\u002Fnuxt\u002Fvector",[506,508,510],{"title":85,"path":507,"description":87,"icon":88,"group":89},"\u002Fdocs\u002Fnuxt\u002Fvector\u002Fcloudflare",{"title":91,"path":509,"description":93,"icon":94,"group":89},"\u002Fdocs\u002Fnuxt\u002Fvector\u002Fpostgres",{"title":96,"path":511,"description":98,"icon":99,"group":89},"\u002Fdocs\u002Fnuxt\u002Fvector\u002Fupstash",{"title":101,"path":513,"description":103,"icon":104,"children":514},"\u002Fdocs\u002Fnuxt\u002Fqueue",[515,517,519,521,523,525,527,529,531,533,535,537,539,541,543,545],{"title":107,"path":516,"description":109},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fquickstart",{"title":111,"path":518,"description":113},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fruntime-api",{"title":115,"path":520,"description":117},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fwhen-to-use",{"title":119,"path":522,"description":121,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Fsend-a-job",{"title":124,"path":524,"description":126,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Fdefer-after-response",{"title":128,"path":526,"description":130,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Fvalidate-payloads",{"title":132,"path":528,"description":134,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Flocal-development",{"title":136,"path":530,"description":138,"group":122},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fguides\u002Fnative-handles",{"title":140,"path":532,"description":142,"icon":143,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fplatformatic",{"title":85,"path":534,"description":146,"icon":88,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fcloudflare",{"title":148,"path":536,"description":150,"icon":151,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fvercel",{"title":153,"path":538,"description":155,"icon":156,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fnetlify",{"title":158,"path":540,"description":160,"icon":99,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fupstash-qstash",{"title":162,"path":542,"description":164,"icon":165,"group":89},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fproviders\u002Fmemory",{"title":167,"path":544,"description":169},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Ftroubleshooting",{"title":171,"path":546,"description":173},"\u002Fdocs\u002Fnuxt\u002Fqueue\u002Fplayground",{"title":175,"path":548,"description":177,"icon":178,"children":549},"\u002Fdocs\u002Fnuxt\u002Fcache",[550],{"title":59,"path":551,"description":182,"icon":62},"\u002Fdocs\u002Fnuxt\u002Fcache\u002Fusage",{"title":184,"path":553,"description":186,"icon":187,"children":554},"\u002Fdocs\u002Fnuxt\u002Femail",[555,557,559,561,563,565],{"title":190,"path":556,"description":192,"icon":193},"\u002Fdocs\u002Fnuxt\u002Femail\u002Ffrontmatter",{"title":195,"path":558,"description":197,"icon":198},"\u002Fdocs\u002Fnuxt\u002Femail\u002Finput-schemas",{"title":200,"path":560,"description":202,"icon":203},"\u002Fdocs\u002Fnuxt\u002Femail\u002Fi18n",{"title":205,"path":562,"description":207,"icon":208,"group":89},"\u002Fdocs\u002Fnuxt\u002Femail\u002Fresend",{"title":210,"path":564,"description":212,"icon":213,"group":89},"\u002Fdocs\u002Fnuxt\u002Femail\u002Fsendgrid",{"title":215,"path":566,"description":217,"icon":218,"group":89},"\u002Fdocs\u002Fnuxt\u002Femail\u002Fpostmark",{"title":220,"path":568,"description":222,"icon":223,"children":569},"\u002Fdocs\u002Fnuxt\u002Fworkflow",[570,572,574,576],{"title":85,"path":571,"description":227,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fworkflow\u002Fcloudflare",{"title":148,"path":573,"description":230,"icon":151},"\u002Fdocs\u002Fnuxt\u002Fworkflow\u002Fvercel",{"title":232,"path":575,"description":234,"icon":223},"\u002Fdocs\u002Fnuxt\u002Fworkflow\u002Fopenworkflow",{"title":153,"path":577,"description":237,"icon":156},"\u002Fdocs\u002Fnuxt\u002Fworkflow\u002Fnetlify",{"title":239,"path":579,"description":241,"icon":242,"children":580},"\u002Fdocs\u002Fnuxt\u002Fcron",[581,583,585],{"title":245,"path":582,"description":247,"icon":248},"\u002Fdocs\u002Fnuxt\u002Fcron\u002Fnode",{"title":85,"path":584,"description":251,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fcron\u002Fcloudflare",{"title":148,"path":586,"description":254,"icon":151},"\u002Fdocs\u002Fnuxt\u002Fcron\u002Fvercel",{"title":256,"path":588,"description":258,"icon":259,"children":589},"\u002Fdocs\u002Fnuxt\u002Fbrowser",[590,592,594],{"title":85,"path":591,"description":263,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fbrowser\u002Fcloudflare",{"title":265,"path":593,"description":267,"icon":268},"\u002Fdocs\u002Fnuxt\u002Fbrowser\u002Fbrowserbase",{"title":270,"path":595,"description":272,"icon":259},"\u002Fdocs\u002Fnuxt\u002Fbrowser\u002Fplaywright",{"title":274,"path":597,"description":276,"icon":277,"children":598},"\u002Fdocs\u002Fnuxt\u002Fsandbox",[599,601,603,605,607,609],{"title":85,"path":600,"description":281,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fcloudflare",{"title":283,"path":602,"description":285,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fcloudflare-dynamic",{"title":148,"path":604,"description":288,"icon":151},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fvercel",{"title":290,"path":606,"description":292,"icon":293},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fdeno",{"title":295,"path":608,"description":297,"icon":298},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Fdocker",{"title":300,"path":610,"description":302,"icon":303},"\u002Fdocs\u002Fnuxt\u002Fsandbox\u002Flocal",{"title":305,"path":612,"description":307,"icon":308,"children":613},"\u002Fdocs\u002Fnuxt\u002Fanalytics",[614,616],{"title":148,"path":615,"description":312,"icon":151},"\u002Fdocs\u002Fnuxt\u002Fanalytics\u002Fvercel",{"title":85,"path":617,"description":315,"icon":88},"\u002Fdocs\u002Fnuxt\u002Fanalytics\u002Fcloudflare",{"id":619,"title":620,"body":621,"description":207,"extension":1543,"meta":1544,"navigation":1545,"path":562,"seo":1546,"stem":1547,"__hash__":1548},"docs\u002Fdocs\u002Fnuxt\u002Femail\u002Fresend.md","Resend Email",{"type":622,"value":623,"toc":1537},"minimark",[624,633,638,667,682,686,846,850,857,977,984,1255,1259,1361,1371,1527,1533],[625,626,627,628,632],"p",{},"Use Resend when you want a simple transactional API, template variables, and native batch sending. ViteHub maps the shared ",[629,630,631],"code",{},"email"," surface to Resend so your email definitions stay portable.",[634,635,637],"h2",{"id":636},"install-the-sdk","Install the SDK",[639,640,646],"pre",{"className":641,"code":642,"filename":643,"language":644,"meta":645,"style":645},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Femail@main resend\n","Terminal","bash","",[629,647,648],{"__ignoreMap":645},[649,650,653,657,661,664],"span",{"class":651,"line":652},"line",1,[649,654,656],{"class":655},"sBMFI","pnpm",[649,658,660],{"class":659},"sfazB"," add",[649,662,663],{"class":659}," https:\u002F\u002Fpkg.pr.new\u002Fvite-hub\u002Fvitehub\u002F@vitehub\u002Femail@main",[649,665,666],{"class":659}," resend\n",[625,668,669,670,673,674,677,678,681],{},"Set ",[629,671,672],{},"RESEND_API_KEY"," or ",[629,675,676],{},"RESEND_API_TOKEN"," in the runtime environment, or pass ",[629,679,680],{},"email.apiKey"," directly in config.",[634,683,685],{"id":684},"configure-resend","Configure Resend",[687,688,690],"fw",{"id":689},"nuxt",[639,691,696],{"className":692,"code":693,"filename":694,"language":695,"meta":645,"style":645},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@vitehub\u002Femail\u002Fnuxt'],\n  email: {\n    provider: 'resend',\n    apiKey: process.env.RESEND_API_KEY,\n    defaults: {\n      from: 'Acme \u003Chello@example.com>',\n    },\n  },\n})\n","nuxt.config.ts","ts",[629,697,698,719,746,757,775,798,808,825,831,837],{"__ignoreMap":645},[649,699,700,704,707,711,715],{"class":651,"line":652},[649,701,703],{"class":702},"s7zQu","export",[649,705,706],{"class":702}," default",[649,708,710],{"class":709},"s2Zo4"," defineNuxtConfig",[649,712,714],{"class":713},"sTEyZ","(",[649,716,718],{"class":717},"sMK4o","{\n",[649,720,722,726,729,732,735,738,740,743],{"class":651,"line":721},2,[649,723,725],{"class":724},"swJcz","  modules",[649,727,728],{"class":717},":",[649,730,731],{"class":713}," [",[649,733,734],{"class":717},"'",[649,736,737],{"class":659},"@vitehub\u002Femail\u002Fnuxt",[649,739,734],{"class":717},[649,741,742],{"class":713},"]",[649,744,745],{"class":717},",\n",[649,747,749,752,754],{"class":651,"line":748},3,[649,750,751],{"class":724},"  email",[649,753,728],{"class":717},[649,755,756],{"class":717}," {\n",[649,758,760,763,765,768,771,773],{"class":651,"line":759},4,[649,761,762],{"class":724},"    provider",[649,764,728],{"class":717},[649,766,767],{"class":717}," '",[649,769,770],{"class":659},"resend",[649,772,734],{"class":717},[649,774,745],{"class":717},[649,776,778,781,783,786,789,792,794,796],{"class":651,"line":777},5,[649,779,780],{"class":724},"    apiKey",[649,782,728],{"class":717},[649,784,785],{"class":713}," process",[649,787,788],{"class":717},".",[649,790,791],{"class":713},"env",[649,793,788],{"class":717},[649,795,672],{"class":713},[649,797,745],{"class":717},[649,799,801,804,806],{"class":651,"line":800},6,[649,802,803],{"class":724},"    defaults",[649,805,728],{"class":717},[649,807,756],{"class":717},[649,809,811,814,816,818,821,823],{"class":651,"line":810},7,[649,812,813],{"class":724},"      from",[649,815,728],{"class":717},[649,817,767],{"class":717},[649,819,820],{"class":659},"Acme \u003Chello@example.com>",[649,822,734],{"class":717},[649,824,745],{"class":717},[649,826,828],{"class":651,"line":827},8,[649,829,830],{"class":717},"    },\n",[649,832,834],{"class":651,"line":833},9,[649,835,836],{"class":717},"  },\n",[649,838,840,843],{"class":651,"line":839},10,[649,841,842],{"class":717},"}",[649,844,845],{"class":713},")\n",[634,847,849],{"id":848},"send-with-resend","Send with Resend",[625,851,852,853,856],{},"Start with ",[629,854,855],{},"sendEmail(...)"," when you are sending an email file you defined in your app. Pass template input as the second argument and send-time recipients in the third.",[639,858,860],{"className":692,"code":859,"language":695,"meta":645,"style":645},"await sendEmail('welcome', {\n  name: 'Max',\n}, {\n  to: 'max@example.com',\n  delivery: {\n    labels: ['welcome'],\n    idempotencyKey: 'welcome:max',\n  },\n})\n",[629,861,862,884,900,907,923,932,951,967,971],{"__ignoreMap":645},[649,863,864,867,870,872,874,877,879,882],{"class":651,"line":652},[649,865,866],{"class":702},"await",[649,868,869],{"class":709}," sendEmail",[649,871,714],{"class":713},[649,873,734],{"class":717},[649,875,876],{"class":659},"welcome",[649,878,734],{"class":717},[649,880,881],{"class":717},",",[649,883,756],{"class":717},[649,885,886,889,891,893,896,898],{"class":651,"line":721},[649,887,888],{"class":724},"  name",[649,890,728],{"class":717},[649,892,767],{"class":717},[649,894,895],{"class":659},"Max",[649,897,734],{"class":717},[649,899,745],{"class":717},[649,901,902,905],{"class":651,"line":748},[649,903,904],{"class":717},"},",[649,906,756],{"class":717},[649,908,909,912,914,916,919,921],{"class":651,"line":759},[649,910,911],{"class":724},"  to",[649,913,728],{"class":717},[649,915,767],{"class":717},[649,917,918],{"class":659},"max@example.com",[649,920,734],{"class":717},[649,922,745],{"class":717},[649,924,925,928,930],{"class":651,"line":777},[649,926,927],{"class":724},"  delivery",[649,929,728],{"class":717},[649,931,756],{"class":717},[649,933,934,937,939,941,943,945,947,949],{"class":651,"line":800},[649,935,936],{"class":724},"    labels",[649,938,728],{"class":717},[649,940,731],{"class":713},[649,942,734],{"class":717},[649,944,876],{"class":659},[649,946,734],{"class":717},[649,948,742],{"class":713},[649,950,745],{"class":717},[649,952,953,956,958,960,963,965],{"class":651,"line":810},[649,954,955],{"class":724},"    idempotencyKey",[649,957,728],{"class":717},[649,959,767],{"class":717},[649,961,962],{"class":659},"welcome:max",[649,964,734],{"class":717},[649,966,745],{"class":717},[649,968,969],{"class":651,"line":827},[649,970,836],{"class":717},[649,972,973,975],{"class":651,"line":833},[649,974,842],{"class":717},[649,976,845],{"class":713},[625,978,979,980,983],{},"Drop to ",[629,981,982],{},"createEmailClient()"," when you need already-rendered payloads or manual batch sends.",[639,985,987],{"className":692,"code":986,"language":695,"meta":645,"style":645},"const email = await createEmailClient()\n\nawait email.send({\n  from: 'Acme \u003Chello@example.com>',\n  to: 'max@example.com',\n  subject: 'Welcome',\n  html: '\u003Cp>Welcome\u003C\u002Fp>',\n  text: 'Welcome',\n  delivery: {\n    labels: ['welcome'],\n    scheduleAt: new Date(Date.now() + 60_000),\n    idempotencyKey: 'welcome:max',\n    template: {\n      key: 'welcome-template',\n      data: { name: 'Max' },\n    },\n  },\n})\n",[629,988,989,1010,1016,1032,1047,1061,1077,1093,1108,1116,1134,1171,1186,1196,1213,1238,1243,1248],{"__ignoreMap":645},[649,990,991,995,998,1001,1004,1007],{"class":651,"line":652},[649,992,994],{"class":993},"spNyl","const",[649,996,997],{"class":713}," email ",[649,999,1000],{"class":717},"=",[649,1002,1003],{"class":702}," await",[649,1005,1006],{"class":709}," createEmailClient",[649,1008,1009],{"class":713},"()\n",[649,1011,1012],{"class":651,"line":721},[649,1013,1015],{"emptyLinePlaceholder":1014},true,"\n",[649,1017,1018,1020,1023,1025,1028,1030],{"class":651,"line":748},[649,1019,866],{"class":702},[649,1021,1022],{"class":713}," email",[649,1024,788],{"class":717},[649,1026,1027],{"class":709},"send",[649,1029,714],{"class":713},[649,1031,718],{"class":717},[649,1033,1034,1037,1039,1041,1043,1045],{"class":651,"line":759},[649,1035,1036],{"class":724},"  from",[649,1038,728],{"class":717},[649,1040,767],{"class":717},[649,1042,820],{"class":659},[649,1044,734],{"class":717},[649,1046,745],{"class":717},[649,1048,1049,1051,1053,1055,1057,1059],{"class":651,"line":777},[649,1050,911],{"class":724},[649,1052,728],{"class":717},[649,1054,767],{"class":717},[649,1056,918],{"class":659},[649,1058,734],{"class":717},[649,1060,745],{"class":717},[649,1062,1063,1066,1068,1070,1073,1075],{"class":651,"line":800},[649,1064,1065],{"class":724},"  subject",[649,1067,728],{"class":717},[649,1069,767],{"class":717},[649,1071,1072],{"class":659},"Welcome",[649,1074,734],{"class":717},[649,1076,745],{"class":717},[649,1078,1079,1082,1084,1086,1089,1091],{"class":651,"line":810},[649,1080,1081],{"class":724},"  html",[649,1083,728],{"class":717},[649,1085,767],{"class":717},[649,1087,1088],{"class":659},"\u003Cp>Welcome\u003C\u002Fp>",[649,1090,734],{"class":717},[649,1092,745],{"class":717},[649,1094,1095,1098,1100,1102,1104,1106],{"class":651,"line":827},[649,1096,1097],{"class":724},"  text",[649,1099,728],{"class":717},[649,1101,767],{"class":717},[649,1103,1072],{"class":659},[649,1105,734],{"class":717},[649,1107,745],{"class":717},[649,1109,1110,1112,1114],{"class":651,"line":833},[649,1111,927],{"class":724},[649,1113,728],{"class":717},[649,1115,756],{"class":717},[649,1117,1118,1120,1122,1124,1126,1128,1130,1132],{"class":651,"line":839},[649,1119,936],{"class":724},[649,1121,728],{"class":717},[649,1123,731],{"class":713},[649,1125,734],{"class":717},[649,1127,876],{"class":659},[649,1129,734],{"class":717},[649,1131,742],{"class":713},[649,1133,745],{"class":717},[649,1135,1137,1140,1142,1145,1148,1151,1153,1156,1159,1162,1166,1169],{"class":651,"line":1136},11,[649,1138,1139],{"class":724},"    scheduleAt",[649,1141,728],{"class":717},[649,1143,1144],{"class":717}," new",[649,1146,1147],{"class":709}," Date",[649,1149,1150],{"class":713},"(Date",[649,1152,788],{"class":717},[649,1154,1155],{"class":709},"now",[649,1157,1158],{"class":713},"() ",[649,1160,1161],{"class":717},"+",[649,1163,1165],{"class":1164},"sbssI"," 60_000",[649,1167,1168],{"class":713},")",[649,1170,745],{"class":717},[649,1172,1174,1176,1178,1180,1182,1184],{"class":651,"line":1173},12,[649,1175,955],{"class":724},[649,1177,728],{"class":717},[649,1179,767],{"class":717},[649,1181,962],{"class":659},[649,1183,734],{"class":717},[649,1185,745],{"class":717},[649,1187,1189,1192,1194],{"class":651,"line":1188},13,[649,1190,1191],{"class":724},"    template",[649,1193,728],{"class":717},[649,1195,756],{"class":717},[649,1197,1199,1202,1204,1206,1209,1211],{"class":651,"line":1198},14,[649,1200,1201],{"class":724},"      key",[649,1203,728],{"class":717},[649,1205,767],{"class":717},[649,1207,1208],{"class":659},"welcome-template",[649,1210,734],{"class":717},[649,1212,745],{"class":717},[649,1214,1216,1219,1221,1224,1227,1229,1231,1233,1235],{"class":651,"line":1215},15,[649,1217,1218],{"class":724},"      data",[649,1220,728],{"class":717},[649,1222,1223],{"class":717}," {",[649,1225,1226],{"class":724}," name",[649,1228,728],{"class":717},[649,1230,767],{"class":717},[649,1232,895],{"class":659},[649,1234,734],{"class":717},[649,1236,1237],{"class":717}," },\n",[649,1239,1241],{"class":651,"line":1240},16,[649,1242,830],{"class":717},[649,1244,1246],{"class":651,"line":1245},17,[649,1247,836],{"class":717},[649,1249,1251,1253],{"class":651,"line":1250},18,[649,1252,842],{"class":717},[649,1254,845],{"class":713},[634,1256,1258],{"id":1257},"what-changes-on-resend","What changes on Resend",[1260,1261,1262,1275],"table",{},[1263,1264,1265],"thead",{},[1266,1267,1268,1272],"tr",{},[1269,1270,1271],"th",{},"Concern",[1269,1273,1274],{},"Behavior",[1276,1277,1278,1292,1309,1322,1336,1349],"tbody",{},[1266,1279,1280,1286],{},[1281,1282,1283],"td",{},[629,1284,1285],{},"delivery.labels",[1281,1287,1288,1289,788],{},"ViteHub maps labels to Resend ",[629,1290,1291],{},"tags",[1266,1293,1294,1299],{},[1281,1295,1296],{},[629,1297,1298],{},"delivery.template.key",[1281,1300,1301,1302,1305,1306,788],{},"A numeric key becomes ",[629,1303,1304],{},"template.id",". A string key becomes ",[629,1307,1308],{},"template.alias",[1266,1310,1311,1316],{},[1281,1312,1313],{},[629,1314,1315],{},"delivery.template.data",[1281,1317,1318,1319,788],{},"ViteHub maps template data to ",[629,1320,1321],{},"template.variables",[1266,1323,1324,1329],{},[1281,1325,1326],{},[629,1327,1328],{},"delivery.scheduleAt",[1281,1330,1331,1332,1335],{},"ViteHub passes the schedule through Resend's ",[629,1333,1334],{},"scheduledAt"," send option.",[1266,1337,1338,1343],{},[1281,1339,1340],{},[629,1341,1342],{},"delivery.idempotencyKey",[1281,1344,1345,1346,1335],{},"ViteHub passes the value through Resend's ",[629,1347,1348],{},"idempotencyKey",[1266,1350,1351,1354],{},[1281,1352,1353],{},"Batch sending",[1281,1355,1356,1357,1360],{},"ViteHub uses Resend's native batch path when the SDK exposes ",[629,1358,1359],{},"batch.send()",". Otherwise it falls back to fanout sends.",[625,1362,1363,1364,1367,1368,788],{},"Use ",[629,1365,1366],{},"delivery.transport"," for Resend-only payload fields such as batch-only options like ",[629,1369,1370],{},"validationMode",[639,1372,1374],{"className":692,"code":1373,"language":695,"meta":645,"style":645},"const email = await createEmailClient()\n\nawait email.sendBatch([\n  {\n    from: 'Acme \u003Chello@example.com>',\n    to: 'max@example.com',\n    subject: 'Hello',\n    html: '\u003Cp>Hello\u003C\u002Fp>',\n    delivery: {\n      transport: {\n        validationMode: 'strict',\n      },\n    },\n  },\n])\n",[629,1375,1376,1390,1394,1408,1413,1428,1443,1459,1475,1484,1493,1509,1514,1518,1522],{"__ignoreMap":645},[649,1377,1378,1380,1382,1384,1386,1388],{"class":651,"line":652},[649,1379,994],{"class":993},[649,1381,997],{"class":713},[649,1383,1000],{"class":717},[649,1385,1003],{"class":702},[649,1387,1006],{"class":709},[649,1389,1009],{"class":713},[649,1391,1392],{"class":651,"line":721},[649,1393,1015],{"emptyLinePlaceholder":1014},[649,1395,1396,1398,1400,1402,1405],{"class":651,"line":748},[649,1397,866],{"class":702},[649,1399,1022],{"class":713},[649,1401,788],{"class":717},[649,1403,1404],{"class":709},"sendBatch",[649,1406,1407],{"class":713},"([\n",[649,1409,1410],{"class":651,"line":759},[649,1411,1412],{"class":717},"  {\n",[649,1414,1415,1418,1420,1422,1424,1426],{"class":651,"line":777},[649,1416,1417],{"class":724},"    from",[649,1419,728],{"class":717},[649,1421,767],{"class":717},[649,1423,820],{"class":659},[649,1425,734],{"class":717},[649,1427,745],{"class":717},[649,1429,1430,1433,1435,1437,1439,1441],{"class":651,"line":800},[649,1431,1432],{"class":724},"    to",[649,1434,728],{"class":717},[649,1436,767],{"class":717},[649,1438,918],{"class":659},[649,1440,734],{"class":717},[649,1442,745],{"class":717},[649,1444,1445,1448,1450,1452,1455,1457],{"class":651,"line":810},[649,1446,1447],{"class":724},"    subject",[649,1449,728],{"class":717},[649,1451,767],{"class":717},[649,1453,1454],{"class":659},"Hello",[649,1456,734],{"class":717},[649,1458,745],{"class":717},[649,1460,1461,1464,1466,1468,1471,1473],{"class":651,"line":827},[649,1462,1463],{"class":724},"    html",[649,1465,728],{"class":717},[649,1467,767],{"class":717},[649,1469,1470],{"class":659},"\u003Cp>Hello\u003C\u002Fp>",[649,1472,734],{"class":717},[649,1474,745],{"class":717},[649,1476,1477,1480,1482],{"class":651,"line":833},[649,1478,1479],{"class":724},"    delivery",[649,1481,728],{"class":717},[649,1483,756],{"class":717},[649,1485,1486,1489,1491],{"class":651,"line":839},[649,1487,1488],{"class":724},"      transport",[649,1490,728],{"class":717},[649,1492,756],{"class":717},[649,1494,1495,1498,1500,1502,1505,1507],{"class":651,"line":1136},[649,1496,1497],{"class":724},"        validationMode",[649,1499,728],{"class":717},[649,1501,767],{"class":717},[649,1503,1504],{"class":659},"strict",[649,1506,734],{"class":717},[649,1508,745],{"class":717},[649,1510,1511],{"class":651,"line":1173},[649,1512,1513],{"class":717},"      },\n",[649,1515,1516],{"class":651,"line":1188},[649,1517,830],{"class":717},[649,1519,1520],{"class":651,"line":1198},[649,1521,836],{"class":717},[649,1523,1524],{"class":651,"line":1215},[649,1525,1526],{"class":713},"])\n",[1528,1529,1530],"tip",{},[625,1531,1532],{},"Choose Resend when you want the shortest path from a Markdown definition to a hosted transactional email API with good batch support.",[1534,1535,1536],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":645,"searchDepth":721,"depth":721,"links":1538},[1539,1540,1541,1542],{"id":636,"depth":721,"text":637},{"id":684,"depth":721,"text":685},{"id":848,"depth":721,"text":849},{"id":1257,"depth":721,"text":1258},"md",{"icon":208},{"title":205,"group":89},{"title":620,"description":207},"docs\u002Fnuxt\u002Femail\u002Fresend","BuI_zX-U3n0-5y_cziKAwJuhT_5dHAAmD2LA_DfMWuU",[1550,1551],{"title":200,"path":560,"description":202},{"title":210,"path":564,"description":212},1775568181553]