[{"data":1,"prerenderedAt":504},["ShallowReactive",2],{"content-page:docs:7wqbwP1Vv1XdWTIavw2uKckaAsuK1g6-7oG2cf2RS0g":3,"docs-navigation:en":381,"content-page-surround:docs:7wqbwP1Vv1XdWTIavw2uKckaAsuK1g6-7oG2cf2RS0g":501},{"title":4,"description":5,"body":6,"type":357,"id":358,"canonicalKey":359,"draft":360,"partial":360,"locale":361,"collection":362,"navigationFile":360,"file":363,"resolvedRefs":368,"route":375,"resolution":378},"Introduction","What Nuxt Email is, why its output is trustworthy, and how it is verified against a pinned React Email oracle.",{"type":7,"children":8,"toc":348},"root",[9,25,50,57,69,81,87,99,222,256,262,274,280,329],{"type":10,"tag":11,"props":12,"children":13},"element","p",{},[14,17,23],{"type":15,"value":16},"text","Nuxt Email is typed transactional email for Nuxt, with email-safe Tailwind v4. You write ordinary Vue SFCs in ",{"type":10,"tag":18,"props":19,"children":20},"code",{},[21],{"type":15,"value":22},"app\u002Femails\u002F",{"type":15,"value":24},"; the module discovers them, generates typed Nitro render calls, and compiles Tailwind utilities into email output.",{"type":10,"tag":11,"props":26,"children":27},{},[28,30,35,37,41,43,48],{"type":15,"value":29},"It does one job and stops there. Nuxt Email does not send mail, choose providers, or manage recipients. You hand the rendered ",{"type":10,"tag":18,"props":31,"children":32},{},[33],{"type":15,"value":34},"html",{"type":15,"value":36},", ",{"type":10,"tag":18,"props":38,"children":39},{},[40],{"type":15,"value":15},{"type":15,"value":42},", and optional computed ",{"type":10,"tag":18,"props":44,"children":45},{},[46],{"type":15,"value":47},"subject",{"type":15,"value":49}," to your provider SDK.",{"type":10,"tag":51,"props":52,"children":54},"h2",{"id":53},"where-it-fits",[55],{"type":15,"value":56},"Where it fits",{"type":10,"tag":11,"props":58,"children":59},{},[60,62,67],{"type":15,"value":61},"Choose Nuxt Email when transactional messages belong to a Nuxt application and should share its Vue authoring model, TypeScript contracts, and Nitro deployment. The generated ",{"type":10,"tag":18,"props":63,"children":64},{},[65],{"type":15,"value":66},"renderEmail('welcome', props)",{"type":15,"value":68}," call is the product: no sidecar renderer, separate registry, or module configuration.",{"type":10,"tag":11,"props":70,"children":71},{},[72,79],{"type":10,"tag":73,"props":74,"children":76},"a",{"href":75},"https:\u002F\u002Fmaizzle.com\u002F",[77],{"type":15,"value":78},"Maizzle",{"type":15,"value":80}," is a better fit for standalone email projects, static or marketing builds, non-Nuxt stacks, and teams that want a broad configurable transformation pipeline. Nuxt Email stays intentionally narrower instead of becoming a second general-purpose email framework.",{"type":10,"tag":51,"props":82,"children":84},{"id":83},"why-the-output-is-trustworthy",[85],{"type":15,"value":86},"Why the output is trustworthy",{"type":10,"tag":11,"props":88,"children":89},{},[90,92,97],{"type":15,"value":91},"Email HTML is unforgiving: clients strip ",{"type":10,"tag":18,"props":93,"children":94},{},[95],{"type":15,"value":96},"\u003Cstyle>",{"type":15,"value":98},", break flexbox, and mangle padding. Nuxt Email combines conservative primitives with reproducible checks while keeping live-client claims separate.",{"type":10,"tag":100,"props":101,"children":102},"ul",{},[103,151,167,177,198],{"type":10,"tag":104,"props":105,"children":106},"li",{},[107,113,115,121,123,128,129,134,136,141,143,149],{"type":10,"tag":108,"props":109,"children":110},"strong",{},[111],{"type":15,"value":112},"Checked against React Email.",{"type":15,"value":114}," Covered behaviors are compared, case by case, to a pinned ",{"type":10,"tag":73,"props":116,"children":118},{"href":117},"https:\u002F\u002Freact.email",[119],{"type":15,"value":120},"React Email",{"type":15,"value":122}," oracle (version ",{"type":10,"tag":18,"props":124,"children":125},{},[126],{"type":15,"value":127},"6.9.0",{"type":15,"value":36},{"type":10,"tag":18,"props":130,"children":131},{},[132],{"type":15,"value":133},"@react-email\u002Frender",{"type":15,"value":135}," ",{"type":10,"tag":18,"props":137,"children":138},{},[139],{"type":15,"value":140},"2.1.0",{"type":15,"value":142},"). The ",{"type":10,"tag":73,"props":144,"children":146},{"href":145},"$docs\u002Freference\u002Fconformance",[147],{"type":15,"value":148},"conformance report",{"type":15,"value":150}," is the source of truth for the tested scope and intentional divergences. It is regression evidence, not a universal inbox-rendering guarantee.",{"type":10,"tag":104,"props":152,"children":153},{},[154,159,160,165],{"type":10,"tag":108,"props":155,"children":156},{},[157],{"type":15,"value":158},"Tailwind v4 for email.",{"type":15,"value":135},{"type":10,"tag":18,"props":161,"children":162},{},[163],{"type":15,"value":164},"ETailwind",{"type":15,"value":166}," inlines compatible utilities, preserves author-style precedence, and moves media-query and pseudo-class rules into the head.",{"type":10,"tag":104,"props":168,"children":169},{},[170,175],{"type":10,"tag":108,"props":171,"children":172},{},[173],{"type":15,"value":174},"Deterministic.",{"type":15,"value":176}," Two renders of the same template and props return byte-identical HTML and a matching plain-text fallback. No IDs, timestamps, hydration payload, or mutable renderer state.",{"type":10,"tag":104,"props":178,"children":179},{},[180,185,186,190,192,196],{"type":10,"tag":108,"props":181,"children":182},{},[183],{"type":15,"value":184},"Server-only and typed.",{"type":15,"value":135},{"type":10,"tag":18,"props":187,"children":188},{},[189],{"type":15,"value":66},{"type":15,"value":191}," is generated from your ",{"type":10,"tag":18,"props":193,"children":194},{},[195],{"type":15,"value":22},{"type":15,"value":197}," folder. Unknown template names, missing props, and wrong types fail at compile time.",{"type":10,"tag":104,"props":199,"children":200},{},[201,206,208,212,214,220],{"type":10,"tag":108,"props":202,"children":203},{},[204],{"type":15,"value":205},"Honest about limits.",{"type":15,"value":207}," No global \"React Email compatible\" claim is made. Divergences are documented per behavior. See the ",{"type":10,"tag":73,"props":209,"children":210},{"href":145},[211],{"type":15,"value":148},{"type":15,"value":213}," and the ",{"type":10,"tag":73,"props":215,"children":217},{"href":216},"$docs\u002Freference\u002Fmigration",[218],{"type":15,"value":219},"migration guide",{"type":15,"value":221},".",{"type":10,"tag":223,"props":224,"children":226},"cards",{"cols":225},"2",[227,235,242,249],{"type":10,"tag":228,"props":229,"children":234},"card",{"title":230,"description":231,"icon":232,"to":233},"Install the module","Add the scoped package to a supported Nuxt app and register it.","lucide:download","$docs\u002Fgetting-started\u002Finstallation",[],{"type":10,"tag":228,"props":236,"children":241},{"title":237,"description":238,"icon":239,"to":240},"Author your first email","Write a Vue SFC and add a preview fixture.","lucide:file-code","$docs\u002Fgetting-started\u002Ffirst-email",[],{"type":10,"tag":228,"props":243,"children":248},{"title":244,"description":245,"icon":246,"to":247},"Render from Nitro","Call renderEmail from a server handler and read the result.","lucide:server","$docs\u002Fgetting-started\u002Frender-from-nitro",[],{"type":10,"tag":228,"props":250,"children":255},{"title":251,"description":252,"icon":253,"to":254},"Component reference","The built-in E* primitives and optional syntax-highlighted code blocks.","lucide:blocks","$docs\u002Fcomponents",[],{"type":10,"tag":51,"props":257,"children":259},{"id":258},"release-status",[260],{"type":15,"value":261},"Release status",{"type":10,"tag":11,"props":263,"children":264},{},[265,267,272],{"type":15,"value":266},"The package identity is ",{"type":10,"tag":18,"props":268,"children":269},{},[270],{"type":15,"value":271},"@lupinum\u002Fnuxt-email",{"type":15,"value":273},"; the unscoped npm package is unrelated. The project remains pre-1.0 while real-client QA and an external transactional beta are completed.",{"type":10,"tag":51,"props":275,"children":277},{"id":276},"supported-environment",[278],{"type":15,"value":279},"Supported environment",{"type":10,"tag":100,"props":281,"children":282},{},[283,299,314],{"type":10,"tag":104,"props":284,"children":285},{},[286,291,292,297],{"type":10,"tag":108,"props":287,"children":288},{},[289],{"type":15,"value":290},"Node.js",{"type":15,"value":135},{"type":10,"tag":18,"props":293,"children":294},{},[295],{"type":15,"value":296},"^22.18.0 || ^24.11.0 || ^26.0.0",{"type":15,"value":298}," — the supported even-numbered Node 22, 24, and 26 lines.",{"type":10,"tag":104,"props":300,"children":301},{},[302,307,308,313],{"type":10,"tag":108,"props":303,"children":304},{},[305],{"type":15,"value":306},"Nuxt",{"type":15,"value":135},{"type":10,"tag":18,"props":309,"children":310},{},[311],{"type":15,"value":312},">=4.5.1 \u003C5",{"type":15,"value":221},{"type":10,"tag":104,"props":315,"children":316},{},[317,322,323,328],{"type":10,"tag":108,"props":318,"children":319},{},[320],{"type":15,"value":321},"Vue",{"type":15,"value":135},{"type":10,"tag":18,"props":324,"children":325},{},[326],{"type":15,"value":327},"^3.5.35",{"type":15,"value":221},{"type":10,"tag":11,"props":330,"children":331},{},[332,334,339,341,346],{"type":15,"value":333},"Nuxt ",{"type":10,"tag":18,"props":335,"children":336},{},[337],{"type":15,"value":338},"4.5.1",{"type":15,"value":340}," is the compatibility baseline. The release consumer installs Nuxt ",{"type":10,"tag":18,"props":342,"children":343},{},[344],{"type":15,"value":345},"4.5.2",{"type":15,"value":347}," without a dependency shim. CI covers Node 22, 24, and 26. Other Node majors, Nuxt 3, Nuxt 5, edge runtimes, and client-side email rendering are outside the support contract.",{"title":349,"searchDepth":350,"depth":350,"links":351},"",4,[352,354,355,356],{"id":53,"depth":353,"text":56},2,{"id":83,"depth":353,"text":86},{"id":258,"depth":353,"text":261},{"id":276,"depth":353,"text":279},"markdown","content:docs:1.getting-started:1.index.md","1",false,"en","docs",{"source":364,"path":365,"stem":366,"dir":362,"extension":367},"content","docs\u002F1.getting-started\u002F1.index.md","docs\u002F1.getting-started\u002F1.index","md",{"$docs\u002Freference\u002Fconformance":369,"$docs\u002Freference\u002Fmigration":370,"$docs\u002Fgetting-started\u002Finstallation":371,"$docs\u002Fgetting-started\u002Ffirst-email":372,"$docs\u002Fgetting-started\u002Frender-from-nitro":373,"$docs\u002Fcomponents":374},"\u002Fdocs\u002Freference\u002Fconformance","\u002Fdocs\u002Freference\u002Fmigration","\u002Fdocs\u002Fgetting-started\u002Finstallation","\u002Fdocs\u002Fgetting-started\u002Ffirst-email","\u002Fdocs\u002Fgetting-started\u002Frender-from-nitro","\u002Fdocs\u002Fcomponents",{"requestedPath":376,"resolvedPath":376,"alternates":377},"\u002Fdocs\u002Fgetting-started",[],{"requested":379,"resolved":380,"usedFallback":360},{},{"locale":361},[382,399,434,471],{"title":383,"id":384,"canonicalKey":359,"locale":361,"draft":360,"icon":385,"sidebar":386,"path":376,"children":387},"Getting Started","content:docs:1.getting-started:.navigation.yml","i-lucide-rocket","section",[388,392,396],{"title":389,"id":390,"canonicalKey":391,"locale":361,"draft":360,"path":371},"Installation","content:docs:1.getting-started:2.installation.md","1\u002F2",{"title":393,"id":394,"canonicalKey":395,"locale":361,"draft":360,"path":372},"Your first email","content:docs:1.getting-started:3.first-email.md","1\u002F3",{"title":244,"id":397,"canonicalKey":398,"locale":361,"draft":360,"path":373},"content:docs:1.getting-started:4.render-from-nitro.md","1\u002F4",{"title":400,"id":401,"canonicalKey":225,"locale":361,"draft":360,"icon":402,"sidebar":386,"path":374,"children":403},"Components","content:docs:2.components:.navigation.yml","i-lucide-blocks",[404,409,414,419,424,429],{"title":405,"id":406,"canonicalKey":407,"locale":361,"draft":360,"path":408},"Structure","content:docs:2.components:2.structure.md","2\u002F2","\u002Fdocs\u002Fcomponents\u002Fstructure",{"title":410,"id":411,"canonicalKey":412,"locale":361,"draft":360,"path":413},"Layout","content:docs:2.components:3.layout.md","2\u002F3","\u002Fdocs\u002Fcomponents\u002Flayout",{"title":415,"id":416,"canonicalKey":417,"locale":361,"draft":360,"path":418},"Content","content:docs:2.components:4.content.md","2\u002F4","\u002Fdocs\u002Fcomponents\u002Fcontent",{"title":420,"id":421,"canonicalKey":422,"locale":361,"draft":360,"path":423},"Code","content:docs:2.components:5.code.md","2\u002F5","\u002Fdocs\u002Fcomponents\u002Fcode",{"title":425,"id":426,"canonicalKey":427,"locale":361,"draft":360,"path":428},"Markdown","content:docs:2.components:6.markdown.md","2\u002F6","\u002Fdocs\u002Fcomponents\u002Fmarkdown",{"title":430,"id":431,"canonicalKey":432,"locale":361,"draft":360,"path":433},"Tailwind","content:docs:2.components:7.tailwind.md","2\u002F7","\u002Fdocs\u002Fcomponents\u002Ftailwind",{"title":435,"id":436,"canonicalKey":437,"locale":361,"draft":360,"icon":438,"sidebar":386,"path":439,"children":440},"Guides","content:docs:3.guides:.navigation.yml","3","i-lucide-compass","\u002Fdocs\u002Fguides",[441,446,451,456,461,466],{"title":442,"id":443,"canonicalKey":444,"locale":361,"draft":360,"path":445},"Using Tailwind","content:docs:3.guides:2.tailwind.md","3\u002F2","\u002Fdocs\u002Fguides\u002Ftailwind",{"title":447,"id":448,"canonicalKey":449,"locale":361,"draft":360,"path":450},"Subject lines","content:docs:3.guides:3.subject-lines.md","3\u002F3","\u002Fdocs\u002Fguides\u002Fsubject-lines",{"title":452,"id":453,"canonicalKey":454,"locale":361,"draft":360,"path":455},"Plain text","content:docs:3.guides:4.plain-text.md","3\u002F4","\u002Fdocs\u002Fguides\u002Fplain-text",{"title":457,"id":458,"canonicalKey":459,"locale":361,"draft":360,"path":460},"Testing your emails","content:docs:3.guides:5.testing-your-emails.md","3\u002F5","\u002Fdocs\u002Fguides\u002Ftesting-your-emails",{"title":462,"id":463,"canonicalKey":464,"locale":361,"draft":360,"path":465},"Preview workflow","content:docs:3.guides:6.preview-workflow.md","3\u002F6","\u002Fdocs\u002Fguides\u002Fpreview-workflow",{"title":467,"id":468,"canonicalKey":469,"locale":361,"draft":360,"path":470},"Client compatibility and proofs","content:docs:3.guides:7.client-compatibility.md","3\u002F7","\u002Fdocs\u002Fguides\u002Fclient-compatibility",{"title":472,"id":473,"canonicalKey":474,"locale":361,"draft":360,"icon":475,"sidebar":386,"path":476,"children":477},"Reference","content:docs:4.reference:.navigation.yml","4","i-lucide-file-text","\u002Fdocs\u002Freference",[478,483,488,493,497],{"title":479,"id":480,"canonicalKey":481,"locale":361,"draft":360,"path":482},"renderEmail","content:docs:4.reference:2.render-email.md","4\u002F2","\u002Fdocs\u002Freference\u002Frender-email",{"title":484,"id":485,"canonicalKey":486,"locale":361,"draft":360,"path":487},"Module behavior","content:docs:4.reference:3.module.md","4\u002F3","\u002Fdocs\u002Freference\u002Fmodule",{"title":489,"id":490,"canonicalKey":491,"locale":361,"draft":360,"path":492},"Error types","content:docs:4.reference:4.errors.md","4\u002F4","\u002Fdocs\u002Freference\u002Ferrors",{"title":494,"id":495,"canonicalKey":496,"locale":361,"draft":360,"path":369},"Conformance & divergences","content:docs:4.reference:5.conformance.md","4\u002F5",{"title":498,"id":499,"canonicalKey":500,"locale":361,"draft":360,"path":370},"Migration from React Email","content:docs:4.reference:6.migration.md","4\u002F6",{"previous":502,"next":503},null,{"title":389,"id":390,"canonicalKey":391,"locale":361,"draft":360,"path":371},1786647275732]