[{"data":1,"prerenderedAt":733},["ShallowReactive",2],{"docs-navigation:en":3,"content-page:docs:jJS5BCCqs1I55ZOW9Jz5UAZpiWHymlPR8ZsRx31qqDs":135,"content-page-surround:docs:jJS5BCCqs1I55ZOW9Jz5UAZpiWHymlPR8ZsRx31qqDs":730},[4,29,66,103],{"title":5,"id":6,"canonicalKey":7,"locale":8,"draft":9,"icon":10,"sidebar":11,"path":12,"children":13},"Getting Started","content:docs:1.getting-started:.navigation.yml","1","en",false,"i-lucide-rocket","section","\u002Fdocs\u002Fgetting-started",[14,19,24],{"title":15,"id":16,"canonicalKey":17,"locale":8,"draft":9,"path":18},"Installation","content:docs:1.getting-started:2.installation.md","1\u002F2","\u002Fdocs\u002Fgetting-started\u002Finstallation",{"title":20,"id":21,"canonicalKey":22,"locale":8,"draft":9,"path":23},"Your first email","content:docs:1.getting-started:3.first-email.md","1\u002F3","\u002Fdocs\u002Fgetting-started\u002Ffirst-email",{"title":25,"id":26,"canonicalKey":27,"locale":8,"draft":9,"path":28},"Render from Nitro","content:docs:1.getting-started:4.render-from-nitro.md","1\u002F4","\u002Fdocs\u002Fgetting-started\u002Frender-from-nitro",{"title":30,"id":31,"canonicalKey":32,"locale":8,"draft":9,"icon":33,"sidebar":11,"path":34,"children":35},"Components","content:docs:2.components:.navigation.yml","2","i-lucide-blocks","\u002Fdocs\u002Fcomponents",[36,41,46,51,56,61],{"title":37,"id":38,"canonicalKey":39,"locale":8,"draft":9,"path":40},"Structure","content:docs:2.components:2.structure.md","2\u002F2","\u002Fdocs\u002Fcomponents\u002Fstructure",{"title":42,"id":43,"canonicalKey":44,"locale":8,"draft":9,"path":45},"Layout","content:docs:2.components:3.layout.md","2\u002F3","\u002Fdocs\u002Fcomponents\u002Flayout",{"title":47,"id":48,"canonicalKey":49,"locale":8,"draft":9,"path":50},"Content","content:docs:2.components:4.content.md","2\u002F4","\u002Fdocs\u002Fcomponents\u002Fcontent",{"title":52,"id":53,"canonicalKey":54,"locale":8,"draft":9,"path":55},"Code","content:docs:2.components:5.code.md","2\u002F5","\u002Fdocs\u002Fcomponents\u002Fcode",{"title":57,"id":58,"canonicalKey":59,"locale":8,"draft":9,"path":60},"Markdown","content:docs:2.components:6.markdown.md","2\u002F6","\u002Fdocs\u002Fcomponents\u002Fmarkdown",{"title":62,"id":63,"canonicalKey":64,"locale":8,"draft":9,"path":65},"Tailwind","content:docs:2.components:7.tailwind.md","2\u002F7","\u002Fdocs\u002Fcomponents\u002Ftailwind",{"title":67,"id":68,"canonicalKey":69,"locale":8,"draft":9,"icon":70,"sidebar":11,"path":71,"children":72},"Guides","content:docs:3.guides:.navigation.yml","3","i-lucide-compass","\u002Fdocs\u002Fguides",[73,78,83,88,93,98],{"title":74,"id":75,"canonicalKey":76,"locale":8,"draft":9,"path":77},"Using Tailwind","content:docs:3.guides:2.tailwind.md","3\u002F2","\u002Fdocs\u002Fguides\u002Ftailwind",{"title":79,"id":80,"canonicalKey":81,"locale":8,"draft":9,"path":82},"Subject lines","content:docs:3.guides:3.subject-lines.md","3\u002F3","\u002Fdocs\u002Fguides\u002Fsubject-lines",{"title":84,"id":85,"canonicalKey":86,"locale":8,"draft":9,"path":87},"Plain text","content:docs:3.guides:4.plain-text.md","3\u002F4","\u002Fdocs\u002Fguides\u002Fplain-text",{"title":89,"id":90,"canonicalKey":91,"locale":8,"draft":9,"path":92},"Testing your emails","content:docs:3.guides:5.testing-your-emails.md","3\u002F5","\u002Fdocs\u002Fguides\u002Ftesting-your-emails",{"title":94,"id":95,"canonicalKey":96,"locale":8,"draft":9,"path":97},"Preview workflow","content:docs:3.guides:6.preview-workflow.md","3\u002F6","\u002Fdocs\u002Fguides\u002Fpreview-workflow",{"title":99,"id":100,"canonicalKey":101,"locale":8,"draft":9,"path":102},"Client compatibility and proofs","content:docs:3.guides:7.client-compatibility.md","3\u002F7","\u002Fdocs\u002Fguides\u002Fclient-compatibility",{"title":104,"id":105,"canonicalKey":106,"locale":8,"draft":9,"icon":107,"sidebar":11,"path":108,"children":109},"Reference","content:docs:4.reference:.navigation.yml","4","i-lucide-file-text","\u002Fdocs\u002Freference",[110,115,120,125,130],{"title":111,"id":112,"canonicalKey":113,"locale":8,"draft":9,"path":114},"renderEmail","content:docs:4.reference:2.render-email.md","4\u002F2","\u002Fdocs\u002Freference\u002Frender-email",{"title":116,"id":117,"canonicalKey":118,"locale":8,"draft":9,"path":119},"Module behavior","content:docs:4.reference:3.module.md","4\u002F3","\u002Fdocs\u002Freference\u002Fmodule",{"title":121,"id":122,"canonicalKey":123,"locale":8,"draft":9,"path":124},"Error types","content:docs:4.reference:4.errors.md","4\u002F4","\u002Fdocs\u002Freference\u002Ferrors",{"title":126,"id":127,"canonicalKey":128,"locale":8,"draft":9,"path":129},"Conformance & divergences","content:docs:4.reference:5.conformance.md","4\u002F5","\u002Fdocs\u002Freference\u002Fconformance",{"title":131,"id":132,"canonicalKey":133,"locale":8,"draft":9,"path":134},"Migration from React Email","content:docs:4.reference:6.migration.md","4\u002F6","\u002Fdocs\u002Freference\u002Fmigration",{"title":126,"description":136,"body":137,"type":716,"id":127,"canonicalKey":128,"draft":9,"partial":9,"locale":8,"collection":717,"navigationFile":9,"file":718,"resolvedRefs":724,"route":725,"resolution":727},"How compatibility is measured against React Email, the current pass numbers, and every intentional divergence.",{"type":138,"children":139,"toc":706},"root",[140,156,163,198,260,266,288,294,474,480,688,694],{"type":141,"tag":142,"props":143,"children":144},"element","p",{},[145,148,154],{"type":146,"value":147},"text","Compatibility is reported ",{"type":141,"tag":149,"props":150,"children":151},"strong",{},[152],{"type":146,"value":153},"per behavior",{"type":146,"value":155},". No global \"React Email compatible\" percentage is claimed. The generated conformance report in the repository is the authoritative source; this page summarizes it honestly.",{"type":141,"tag":157,"props":158,"children":160},"h2",{"id":159},"how-it-is-measured",[161],{"type":146,"value":162},"How it is measured",{"type":141,"tag":142,"props":164,"children":165},{},[166,168,179,181,196],{"type":146,"value":167},"The current Nuxt Email candidate is compared against ",{"type":141,"tag":149,"props":169,"children":170},{},[171,173],{"type":146,"value":172},"React Email ",{"type":141,"tag":174,"props":175,"children":176},"code",{},[177],{"type":146,"value":178},"6.9.0",{"type":146,"value":180}," and ",{"type":141,"tag":149,"props":182,"children":183},{},[184,189,191],{"type":141,"tag":174,"props":185,"children":186},{},[187],{"type":146,"value":188},"@react-email\u002Frender",{"type":146,"value":190}," ",{"type":141,"tag":174,"props":192,"children":193},{},[194],{"type":146,"value":195},"2.1.0",{"type":146,"value":197},". Each behavior is a case that renders the same input through both renderers and asserts one of these classifications:",{"type":141,"tag":199,"props":200,"children":201},"ul",{},[202,213,230,240,250],{"type":141,"tag":203,"props":204,"children":205},"li",{},[206,211],{"type":141,"tag":149,"props":207,"children":208},{},[209],{"type":146,"value":210},"exact",{"type":146,"value":212}," — byte-identical output.",{"type":141,"tag":203,"props":214,"children":215},{},[216,221,223,228],{"type":141,"tag":149,"props":217,"children":218},{},[219],{"type":146,"value":220},"normalized",{"type":146,"value":222}," — identical after the internal conformance helper canonicalizes insignificant serialization differences such as attribute order, trailing ",{"type":141,"tag":174,"props":224,"children":225},{},[226],{"type":146,"value":227},"style",{"type":146,"value":229}," semicolons, class whitespace, and self-closing form.",{"type":141,"tag":203,"props":231,"children":232},{},[233,238],{"type":141,"tag":149,"props":234,"children":235},{},[236],{"type":146,"value":237},"semantic",{"type":146,"value":239}," — specific asserted properties match.",{"type":141,"tag":203,"props":241,"children":242},{},[243,248],{"type":141,"tag":149,"props":244,"children":245},{},[246],{"type":146,"value":247},"intentional-divergence",{"type":146,"value":249}," — output differs on purpose, for a documented email-safety or Vue-authoring reason.",{"type":141,"tag":203,"props":251,"children":252},{},[253,258],{"type":141,"tag":149,"props":254,"children":255},{},[256],{"type":146,"value":257},"unsupported",{"type":146,"value":259}," — a React Email component that is not ported.",{"type":141,"tag":157,"props":261,"children":263},{"id":262},"current-results",[264],{"type":146,"value":265},"Current results",{"type":141,"tag":142,"props":267,"children":268},{},[269,271,278,280,286],{"type":146,"value":270},"The generated repository report is the only source for current counts, classifications, pinned commits, and hashes. This page explains the method without copying values that can drift. See the ",{"type":141,"tag":272,"props":273,"children":275},"a",{"href":274},"https:\u002F\u002Fgithub.com\u002Flupinum-dev\u002Fnuxt-email\u002Fblob\u002Fmain\u002Fdocs\u002Fconformance\u002Freport.md",[276],{"type":146,"value":277},"generated conformance report",{"type":146,"value":279}," and its ",{"type":141,"tag":272,"props":281,"children":283},{"href":282},"https:\u002F\u002Fgithub.com\u002Flupinum-dev\u002Fnuxt-email\u002Fblob\u002Fmain\u002Fdocs\u002Fconformance\u002Fprovenance.md",[284],{"type":146,"value":285},"provenance record",{"type":146,"value":287},".",{"type":141,"tag":157,"props":289,"children":291},{"id":290},"intentional-divergences",[292],{"type":146,"value":293},"Intentional divergences",{"type":141,"tag":295,"props":296,"children":297},"table",{},[298,317],{"type":141,"tag":299,"props":300,"children":301},"thead",{},[302],{"type":141,"tag":303,"props":304,"children":305},"tr",{},[306,312],{"type":141,"tag":307,"props":308,"children":309},"th",{},[310],{"type":146,"value":311},"Case",{"type":141,"tag":307,"props":313,"children":314},{},[315],{"type":146,"value":316},"Reason",{"type":141,"tag":318,"props":319,"children":320},"tbody",{},[321,345,366,402,424,446],{"type":141,"tag":303,"props":322,"children":323},{},[324,333],{"type":141,"tag":325,"props":326,"children":327},"td",{},[328],{"type":141,"tag":174,"props":329,"children":330},{},[331],{"type":146,"value":332},"html-defaults",{"type":141,"tag":325,"props":334,"children":335},{},[336,338,343],{"type":146,"value":337},"Vue SSR does not inject React 19's implicit empty head into a standalone ",{"type":141,"tag":174,"props":339,"children":340},{},[341],{"type":146,"value":342},"html",{"type":146,"value":344}," element.",{"type":141,"tag":303,"props":346,"children":347},{},[348,356],{"type":141,"tag":325,"props":349,"children":350},{},[351],{"type":141,"tag":174,"props":352,"children":353},{},[354],{"type":146,"value":355},"preview-max-length",{"type":141,"tag":325,"props":357,"children":358},{},[359,364],{"type":141,"tag":174,"props":360,"children":361},{},[362],{"type":146,"value":363},"EPreview",{"type":146,"value":365}," omits React 19 title output and keeps its hiding and plain-text exclusion invariant, because Vue SSR cannot safely hoist title into head.",{"type":141,"tag":303,"props":367,"children":368},{},[369,377],{"type":141,"tag":325,"props":370,"children":371},{},[372],{"type":141,"tag":174,"props":373,"children":374},{},[375],{"type":146,"value":376},"preview-short",{"type":141,"tag":325,"props":378,"children":379},{},[380,382,387,389,393,395,400],{"type":146,"value":381},"React 19 hoists Preview title into head; Vue authors place title explicitly in ",{"type":141,"tag":174,"props":383,"children":384},{},[385],{"type":146,"value":386},"EHead",{"type":146,"value":388},". ",{"type":141,"tag":174,"props":390,"children":391},{},[392],{"type":146,"value":363},{"type":146,"value":394}," keeps hiding styles and ",{"type":141,"tag":174,"props":396,"children":397},{},[398],{"type":146,"value":399},"data-skip-in-text",{"type":146,"value":401}," fixed so user attributes cannot expose filler.",{"type":141,"tag":303,"props":403,"children":404},{},[405,413],{"type":141,"tag":325,"props":406,"children":407},{},[408],{"type":141,"tag":174,"props":409,"children":410},{},[411],{"type":146,"value":412},"preview-style-override",{"type":141,"tag":325,"props":414,"children":415},{},[416,418,422],{"type":146,"value":417},"React replaces all hiding styles when a user style is provided; ",{"type":141,"tag":174,"props":419,"children":420},{},[421],{"type":146,"value":363},{"type":146,"value":423}," retains the hiding defaults as an email-safety invariant.",{"type":141,"tag":303,"props":425,"children":426},{},[427,435],{"type":141,"tag":325,"props":428,"children":429},{},[430],{"type":141,"tag":174,"props":431,"children":432},{},[433],{"type":146,"value":434},"preview-unicode-boundary",{"type":141,"tag":325,"props":436,"children":437},{},[438,440,444],{"type":146,"value":439},"React truncates at 200 UTF-16 code units and can split a surrogate pair; ",{"type":141,"tag":174,"props":441,"children":442},{},[443],{"type":146,"value":363},{"type":146,"value":445}," drops the whole boundary code point and fills the remaining position.",{"type":141,"tag":303,"props":447,"children":448},{},[449,457],{"type":141,"tag":325,"props":450,"children":451},{},[452],{"type":141,"tag":174,"props":453,"children":454},{},[455],{"type":146,"value":456},"row-columns",{"type":141,"tag":325,"props":458,"children":459},{},[460,465,467,472],{"type":141,"tag":174,"props":461,"children":462},{},[463],{"type":146,"value":464},"EColumn",{"type":146,"value":466}," omits React Email's internal ",{"type":141,"tag":174,"props":468,"children":469},{},[470],{"type":146,"value":471},"data-id",{"type":146,"value":473}," marker because no Vue behavior consumes it.",{"type":141,"tag":157,"props":475,"children":477},{"id":476},"additional-documented-differences",[478],{"type":146,"value":479},"Additional documented differences",{"type":141,"tag":199,"props":481,"children":482},{},[483,522,585,607,661],{"type":141,"tag":203,"props":484,"children":485},{},[486,501,503,508,510,514,516,520],{"type":141,"tag":149,"props":487,"children":488},{},[489,494,496,500],{"type":141,"tag":174,"props":490,"children":491},{},[492],{"type":146,"value":493},"EMarkdown",{"type":146,"value":495}," drops ",{"type":141,"tag":174,"props":497,"children":498},{},[499],{"type":146,"value":471},{"type":146,"value":287},{"type":146,"value":502}," React Email wraps Markdown in ",{"type":141,"tag":174,"props":504,"children":505},{},[506],{"type":146,"value":507},"\u003Cdiv data-id=\"react-email-markdown\">",{"type":146,"value":509},"; ",{"type":141,"tag":174,"props":511,"children":512},{},[513],{"type":146,"value":493},{"type":146,"value":515}," omits the marker (the same no-data-id divergence as ",{"type":141,"tag":174,"props":517,"children":518},{},[519],{"type":146,"value":464},{"type":146,"value":521},").",{"type":141,"tag":203,"props":523,"children":524},{},[525,530,531,536,538,543,545,550,552,557,559,564,565,570,571,576,578,583],{"type":141,"tag":149,"props":526,"children":527},{},[528],{"type":146,"value":529},"Presentation tables reject fixed attributes.",{"type":146,"value":190},{"type":141,"tag":174,"props":532,"children":533},{},[534],{"type":146,"value":535},"ESection",{"type":146,"value":537},", ",{"type":141,"tag":174,"props":539,"children":540},{},[541],{"type":146,"value":542},"EContainer",{"type":146,"value":544},", and ",{"type":141,"tag":174,"props":546,"children":547},{},[548],{"type":146,"value":549},"ERow",{"type":146,"value":551}," throw a ",{"type":141,"tag":174,"props":553,"children":554},{},[555],{"type":146,"value":556},"TypeError",{"type":146,"value":558}," when passed ",{"type":141,"tag":174,"props":560,"children":561},{},[562],{"type":146,"value":563},"border",{"type":146,"value":537},{"type":141,"tag":174,"props":566,"children":567},{},[568],{"type":146,"value":569},"cellpadding",{"type":146,"value":537},{"type":141,"tag":174,"props":572,"children":573},{},[574],{"type":146,"value":575},"cellspacing",{"type":146,"value":577},", or ",{"type":141,"tag":174,"props":579,"children":580},{},[581],{"type":146,"value":582},"role",{"type":146,"value":584},". React Email silently discards these overrides; Nuxt Email fails loudly to keep the email-safe table layout an invariant.",{"type":141,"tag":203,"props":586,"children":587},{},[588,598,600,605],{"type":141,"tag":149,"props":589,"children":590},{},[591,596],{"type":141,"tag":174,"props":592,"children":593},{},[594],{"type":146,"value":595},"ECodeInline",{"type":146,"value":597}," excludes its compatibility copy from plain text.",{"type":146,"value":599}," HTML retains the hidden ",{"type":141,"tag":174,"props":601,"children":602},{},[603],{"type":146,"value":604},"Orange.fr",{"type":146,"value":606}," fallback span, but plain-text conversion skips it so recipients receive the code once. React Email emits it twice.",{"type":141,"tag":203,"props":608,"children":609},{},[610,626,628,633,635,639,641,645,647,652,654,659],{"type":141,"tag":149,"props":611,"children":612},{},[613,618,620,625],{"type":141,"tag":174,"props":614,"children":615},{},[616],{"type":146,"value":617},"ETailwind",{"type":146,"value":619}," moves non-inlinable rules to ",{"type":141,"tag":174,"props":621,"children":622},{},[623],{"type":146,"value":624},"\u003Chead>",{"type":146,"value":287},{"type":146,"value":627}," Media-query and pseudo-class rules are collected into a ",{"type":141,"tag":174,"props":629,"children":630},{},[631],{"type":146,"value":632},"\u003Cstyle>",{"type":146,"value":634}," in the ",{"type":141,"tag":174,"props":636,"children":637},{},[638],{"type":146,"value":624},{"type":146,"value":640}," (a ",{"type":141,"tag":174,"props":642,"children":643},{},[644],{"type":146,"value":624},{"type":146,"value":646}," inside ",{"type":141,"tag":174,"props":648,"children":649},{},[650],{"type":146,"value":651},"\u003CETailwind>",{"type":146,"value":653}," is required, otherwise rendering throws), residual class names are sanitized, and ",{"type":141,"tag":174,"props":655,"children":656},{},[657],{"type":146,"value":658},"mso-*",{"type":146,"value":660}," properties survive inlining.",{"type":141,"tag":203,"props":662,"children":663},{},[664,673,675,679,681,687],{"type":141,"tag":149,"props":665,"children":666},{},[667,671],{"type":141,"tag":174,"props":668,"children":669},{},[670],{"type":146,"value":617},{"type":146,"value":672}," reaches classes inside nested components",{"type":146,"value":674}," via provide\u002Finject for style-bearing primitives and a marker-scoped post-render pass for plain and structural elements. Nested ",{"type":141,"tag":174,"props":676,"children":677},{},[678],{"type":146,"value":651},{"type":146,"value":680}," boundaries are not supported. See the ",{"type":141,"tag":272,"props":682,"children":684},{"href":683},"$docs\u002Fguides\u002Ftailwind",[685],{"type":146,"value":686},"Tailwind guide",{"type":146,"value":287},{"type":141,"tag":157,"props":689,"children":691},{"id":690},"scope-not-a-parity-guarantee",[692],{"type":146,"value":693},"Scope, not a parity guarantee",{"type":141,"tag":142,"props":695,"children":696},{},[697,699,704],{"type":146,"value":698},"The report records zero failing runnable cases and lists unsupported React components explicitly. Its runnable component scope is the eighteen built-ins; opt-in ",{"type":141,"tag":174,"props":700,"children":701},{},[702],{"type":146,"value":703},"ECodeBlock",{"type":146,"value":705}," is recorded as a deliberate divergence from React Email's CodeBlock. It is not a claim that every React Email component or option has a Nuxt Email equivalent. Treat the generated report in the repository, not this page, as the authoritative matrix of cases, classifications, divergences, and unsupported surface.",{"title":707,"searchDepth":708,"depth":708,"links":709},"",4,[710,712,713,714,715],{"id":159,"depth":711,"text":162},2,{"id":262,"depth":711,"text":265},{"id":290,"depth":711,"text":293},{"id":476,"depth":711,"text":479},{"id":690,"depth":711,"text":693},"markdown","docs",{"source":719,"path":720,"stem":721,"dir":722,"extension":723},"content","docs\u002F4.reference\u002F5.conformance.md","docs\u002F4.reference\u002F5.conformance","reference","md",{"$docs\u002Fguides\u002Ftailwind":77},{"requestedPath":129,"resolvedPath":129,"alternates":726},[],{"requested":728,"resolved":729,"usedFallback":9},{},{"locale":8},{"previous":731,"next":732},{"title":121,"id":122,"canonicalKey":123,"locale":8,"draft":9,"path":124},{"title":131,"id":132,"canonicalKey":133,"locale":8,"draft":9,"path":134},1786647280721]