[{"data":1,"prerenderedAt":2496},["ShallowReactive",2],{"navigation":3,"examples-nav":445,"-examples-vite-ssr-react":552,"-examples-vite-ssr-react-surround":2493},[4,123,260,266,430,442],{"title":5,"path":6,"stem":7,"children":8,"icon":122},"","\u002Fdocs","1.docs\u002F1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77,82,87,92,97,102,107,112,117],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","\u002Fdocs\u002Fquick-start","1.docs\u002F2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","\u002Fdocs\u002Frenderer","1.docs\u002F4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","\u002Fdocs\u002Frouting","1.docs\u002F5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","\u002Fdocs\u002Fassets","1.docs\u002F50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","\u002Fdocs\u002Fconfiguration","1.docs\u002F50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","\u002Fdocs\u002Fdatabase","1.docs\u002F50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","\u002Fdocs\u002Flifecycle","1.docs\u002F50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"OpenAPI","\u002Fdocs\u002Fopenapi","1.docs\u002F50.openapi","ri:contract-line",{"title":53,"path":54,"stem":55,"icon":56},"Plugins","\u002Fdocs\u002Fplugins","1.docs\u002F50.plugins","ri:plug-line",{"title":58,"path":59,"stem":60,"icon":61},"Prerendering","\u002Fdocs\u002Fprerendering","1.docs\u002F50.prerendering","ri:file-copy-2-line",{"title":63,"path":64,"stem":65,"icon":66},"Tasks","\u002Fdocs\u002Ftasks","1.docs\u002F50.tasks","codicon:run-all",{"title":68,"path":69,"stem":70,"icon":71},"WebSocket","\u002Fdocs\u002Fwebsocket","1.docs\u002F50.websocket","ri:broadcast-fill",{"title":73,"path":74,"stem":75,"icon":76},"Modules","\u002Fdocs\u002Fmodules","1.docs\u002F55.modules","i-lucide-puzzle",{"title":78,"path":79,"stem":80,"icon":81},"Server Entry","\u002Fdocs\u002Fserver-entry","1.docs\u002F6.server-entry","ri:server-line",{"title":83,"path":84,"stem":85,"icon":86},"CLI","\u002Fdocs\u002Fcli","1.docs\u002F60.cli","i-lucide-terminal",{"title":88,"path":89,"stem":90,"icon":91},"Vite","\u002Fdocs\u002Fvite","1.docs\u002F61.vite","i-logos-vitejs",{"title":93,"path":94,"stem":95,"icon":96},"Utils","\u002Fdocs\u002Futils","1.docs\u002F62.utils","i-lucide-braces",{"title":98,"path":99,"stem":100,"icon":101},"TypeScript","\u002Fdocs\u002Ftypescript","1.docs\u002F63.typescript","i-logos-typescript-icon",{"title":103,"path":104,"stem":105,"icon":106},"Cache","\u002Fdocs\u002Fcache","1.docs\u002F7.cache","ri:speed-line",{"title":108,"path":109,"stem":110,"icon":111},"KV Storage","\u002Fdocs\u002Fstorage","1.docs\u002F8.storage","carbon:datastore",{"title":113,"path":114,"stem":115,"icon":116},"Migration Guide","\u002Fdocs\u002Fmigration","1.docs\u002F99.migration","ri:arrow-right-up-line",{"title":118,"path":119,"stem":120,"icon":121},"Nightly Channel","\u002Fdocs\u002Fnightly","1.docs\u002F99.nightly","ri:moon-fill","i-lucide-book-open",{"title":124,"path":125,"stem":126,"children":127,"icon":129},"Deploy","\u002Fdeploy","2.deploy\u002F0.index",[128,130,155],{"title":124,"path":125,"stem":126,"icon":129},"ri:upload-cloud-2-line",{"title":131,"path":132,"stem":133,"children":134,"page":154},"Runtimes","\u002Fdeploy\u002Fruntimes","2.deploy\u002F10.runtimes",[135,140,145,150],{"title":136,"path":137,"stem":138,"icon":139},"Node.js","\u002Fdeploy\u002Fruntimes\u002Fnode","2.deploy\u002F10.runtimes\u002F1.node","akar-icons:node-fill",{"title":141,"path":142,"stem":143,"icon":144},"Bun","\u002Fdeploy\u002Fruntimes\u002Fbun","2.deploy\u002F10.runtimes\u002Fbun","simple-icons:bun",{"title":146,"path":147,"stem":148,"icon":149},"Deno","\u002Fdeploy\u002Fruntimes\u002Fdeno","2.deploy\u002F10.runtimes\u002Fdeno","simple-icons:deno",{"title":151,"path":152,"stem":153},"Standard","\u002Fdeploy\u002Fruntimes\u002Fstandard","2.deploy\u002F10.runtimes\u002Fstandard",false,{"title":156,"path":157,"stem":158,"children":159,"page":154},"Providers","\u002Fdeploy\u002Fproviders","2.deploy\u002F20.providers",[160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256],{"title":161,"path":162,"stem":163},"Alwaysdata","\u002Fdeploy\u002Fproviders\u002Falwaysdata","2.deploy\u002F20.providers\u002Falwaysdata",{"title":165,"path":166,"stem":167},"AWS Lambda","\u002Fdeploy\u002Fproviders\u002Faws","2.deploy\u002F20.providers\u002Faws",{"title":169,"path":170,"stem":171},"AWS Amplify","\u002Fdeploy\u002Fproviders\u002Faws-amplify","2.deploy\u002F20.providers\u002Faws-amplify",{"title":173,"path":174,"stem":175},"Azure","\u002Fdeploy\u002Fproviders\u002Fazure","2.deploy\u002F20.providers\u002Fazure",{"title":177,"path":178,"stem":179},"Cleavr","\u002Fdeploy\u002Fproviders\u002Fcleavr","2.deploy\u002F20.providers\u002Fcleavr",{"title":181,"path":182,"stem":183},"Cloudflare","\u002Fdeploy\u002Fproviders\u002Fcloudflare","2.deploy\u002F20.providers\u002Fcloudflare",{"title":185,"path":186,"stem":187},"Deno Deploy","\u002Fdeploy\u002Fproviders\u002Fdeno-deploy","2.deploy\u002F20.providers\u002Fdeno-deploy",{"title":189,"path":190,"stem":191},"DigitalOcean","\u002Fdeploy\u002Fproviders\u002Fdigitalocean","2.deploy\u002F20.providers\u002Fdigitalocean",{"title":193,"path":194,"stem":195},"EdgeOne Pages","\u002Fdeploy\u002Fproviders\u002Fedgeone","2.deploy\u002F20.providers\u002Fedgeone",{"title":197,"path":198,"stem":199},"Firebase","\u002Fdeploy\u002Fproviders\u002Ffirebase","2.deploy\u002F20.providers\u002Ffirebase",{"title":201,"path":202,"stem":203},"Flightcontrol","\u002Fdeploy\u002Fproviders\u002Fflightcontrol","2.deploy\u002F20.providers\u002Fflightcontrol",{"title":205,"path":206,"stem":207},"Genezio","\u002Fdeploy\u002Fproviders\u002Fgenezio","2.deploy\u002F20.providers\u002Fgenezio",{"title":209,"path":210,"stem":211},"GitHub Pages","\u002Fdeploy\u002Fproviders\u002Fgithub-pages","2.deploy\u002F20.providers\u002Fgithub-pages",{"title":213,"path":214,"stem":215},"GitLab Pages","\u002Fdeploy\u002Fproviders\u002Fgitlab-pages","2.deploy\u002F20.providers\u002Fgitlab-pages",{"title":217,"path":218,"stem":219},"Heroku","\u002Fdeploy\u002Fproviders\u002Fheroku","2.deploy\u002F20.providers\u002Fheroku",{"title":221,"path":222,"stem":223},"IIS","\u002Fdeploy\u002Fproviders\u002Fiis","2.deploy\u002F20.providers\u002Fiis",{"title":225,"path":226,"stem":227},"Koyeb","\u002Fdeploy\u002Fproviders\u002Fkoyeb","2.deploy\u002F20.providers\u002Fkoyeb",{"title":229,"path":230,"stem":231},"Netlify","\u002Fdeploy\u002Fproviders\u002Fnetlify","2.deploy\u002F20.providers\u002Fnetlify",{"title":233,"path":234,"stem":235},"Platform.sh","\u002Fdeploy\u002Fproviders\u002Fplatform-sh","2.deploy\u002F20.providers\u002Fplatform-sh",{"title":237,"path":238,"stem":239},"Render.com","\u002Fdeploy\u002Fproviders\u002Frender","2.deploy\u002F20.providers\u002Frender",{"title":241,"path":242,"stem":243},"Stormkit","\u002Fdeploy\u002Fproviders\u002Fstormkit","2.deploy\u002F20.providers\u002Fstormkit",{"title":245,"path":246,"stem":247},"Vercel","\u002Fdeploy\u002Fproviders\u002Fvercel","2.deploy\u002F20.providers\u002Fvercel",{"title":249,"path":250,"stem":251},"Zeabur","\u002Fdeploy\u002Fproviders\u002Fzeabur","2.deploy\u002F20.providers\u002Fzeabur",{"title":253,"path":254,"stem":255},"Zephyr Cloud","\u002Fdeploy\u002Fproviders\u002Fzephyr","2.deploy\u002F20.providers\u002Fzephyr",{"title":257,"path":258,"stem":259},"Zerops","\u002Fdeploy\u002Fproviders\u002Fzerops","2.deploy\u002F20.providers\u002Fzerops",{"title":261,"path":262,"stem":263,"children":264,"icon":36},"Config","\u002Fconfig","3.config\u002F0.index",[265],{"title":261,"path":262,"stem":263,"icon":36},{"title":267,"path":268,"stem":269,"children":270,"icon":272},"Examples","\u002Fexamples","4.examples\u002F0.index",[271,273,278,283,288,293,297,302,307,312,317,322,327,331,336,340,344,349,354,359,364,369,374,379,383,388,393,398,402,407,412,416,421,426],{"title":267,"path":268,"stem":269,"icon":272},"i-lucide-folder-code",{"title":274,"path":275,"stem":276,"icon":277},"API Routes","\u002Fexamples\u002Fapi-routes","4.examples\u002Fapi-routes","i-lucide-route",{"title":279,"path":280,"stem":281,"icon":282},"Auto Imports","\u002Fexamples\u002Fauto-imports","4.examples\u002Fauto-imports","i-lucide-import",{"title":284,"path":285,"stem":286,"icon":287},"Cached Handler","\u002Fexamples\u002Fcached-handler","4.examples\u002Fcached-handler","i-lucide-clock",{"title":289,"path":290,"stem":291,"icon":292},"Custom Error Handler","\u002Fexamples\u002Fcustom-error-handler","4.examples\u002Fcustom-error-handler","i-lucide-alert-circle",{"title":38,"path":294,"stem":295,"icon":296},"\u002Fexamples\u002Fdatabase","4.examples\u002Fdatabase","i-lucide-database",{"title":298,"path":299,"stem":300,"icon":301},"Elysia","\u002Fexamples\u002Felysia","4.examples\u002Felysia","i-skill-icons-elysia-dark",{"title":303,"path":304,"stem":305,"icon":306},"Express","\u002Fexamples\u002Fexpress","4.examples\u002Fexpress","i-simple-icons-express",{"title":308,"path":309,"stem":310,"icon":311},"Fastify","\u002Fexamples\u002Ffastify","4.examples\u002Ffastify","i-simple-icons-fastify",{"title":313,"path":314,"stem":315,"icon":316},"Hello World","\u002Fexamples\u002Fhello-world","4.examples\u002Fhello-world","i-lucide-sparkles",{"title":318,"path":319,"stem":320,"icon":321},"Hono","\u002Fexamples\u002Fhono","4.examples\u002Fhono","i-logos-hono",{"title":323,"path":324,"stem":325,"icon":326},"Import Alias","\u002Fexamples\u002Fimport-alias","4.examples\u002Fimport-alias","i-lucide-at-sign",{"title":328,"path":329,"stem":330,"icon":46},"Middleware","\u002Fexamples\u002Fmiddleware","4.examples\u002Fmiddleware",{"title":332,"path":333,"stem":334,"icon":335},"Mono JSX","\u002Fexamples\u002Fmono-jsx","4.examples\u002Fmono-jsx","i-lucide-brackets",{"title":337,"path":338,"stem":339,"icon":335},"Nano JSX","\u002Fexamples\u002Fnano-jsx","4.examples\u002Fnano-jsx",{"title":53,"path":341,"stem":342,"icon":343},"\u002Fexamples\u002Fplugins","4.examples\u002Fplugins","i-lucide-plug",{"title":345,"path":346,"stem":347,"icon":348},"Custom Renderer","\u002Fexamples\u002Frenderer","4.examples\u002Frenderer","i-lucide-code",{"title":350,"path":351,"stem":352,"icon":353},"Runtime Config","\u002Fexamples\u002Fruntime-config","4.examples\u002Fruntime-config","i-lucide-settings",{"title":355,"path":356,"stem":357,"icon":358},"Server Fetch","\u002Fexamples\u002Fserver-fetch","4.examples\u002Fserver-fetch","i-lucide-arrow-right-left",{"title":360,"path":361,"stem":362,"icon":363},"Shiki","\u002Fexamples\u002Fshiki","4.examples\u002Fshiki","i-lucide-highlighter",{"title":365,"path":366,"stem":367,"icon":368},"Takumi","\u002Fexamples\u002Ftakumi","4.examples\u002Ftakumi","i-lucide-image",{"title":370,"path":371,"stem":372,"icon":373},"Tracing","\u002Fexamples\u002Ftracing","4.examples\u002Ftracing","i-lucide-activity",{"title":375,"path":376,"stem":377,"icon":378},"Virtual Routes","\u002Fexamples\u002Fvirtual-routes","4.examples\u002Fvirtual-routes","i-lucide-box",{"title":380,"path":381,"stem":382,"icon":91},"Vite Nitro Plugin","\u002Fexamples\u002Fvite-nitro-plugin","4.examples\u002Fvite-nitro-plugin",{"title":384,"path":385,"stem":386,"icon":387},"Vite RSC","\u002Fexamples\u002Fvite-rsc","4.examples\u002Fvite-rsc","i-logos-react",{"title":389,"path":390,"stem":391,"icon":392},"Vite SSR HTML","\u002Fexamples\u002Fvite-ssr-html","4.examples\u002Fvite-ssr-html","i-logos-html-5",{"title":394,"path":395,"stem":396,"icon":397},"SSR with Preact","\u002Fexamples\u002Fvite-ssr-preact","4.examples\u002Fvite-ssr-preact","i-logos-preact",{"title":399,"path":400,"stem":401,"icon":387},"SSR with React","\u002Fexamples\u002Fvite-ssr-react","4.examples\u002Fvite-ssr-react",{"title":403,"path":404,"stem":405,"icon":406},"SSR with SolidJS","\u002Fexamples\u002Fvite-ssr-solid","4.examples\u002Fvite-ssr-solid","i-logos-solidjs-icon",{"title":408,"path":409,"stem":410,"icon":411},"SSR with TanStack Router","\u002Fexamples\u002Fvite-ssr-tsr-react","4.examples\u002Fvite-ssr-tsr-react","i-simple-icons-tanstack",{"title":413,"path":414,"stem":415,"icon":411},"SSR with TanStack Start","\u002Fexamples\u002Fvite-ssr-tss-react","4.examples\u002Fvite-ssr-tss-react",{"title":417,"path":418,"stem":419,"icon":420},"SSR with Vue Router","\u002Fexamples\u002Fvite-ssr-vue-router","4.examples\u002Fvite-ssr-vue-router","i-logos-vue",{"title":422,"path":423,"stem":424,"icon":425},"Vite + tRPC","\u002Fexamples\u002Fvite-trpc","4.examples\u002Fvite-trpc","i-simple-icons-trpc",{"title":68,"path":427,"stem":428,"icon":429},"\u002Fexamples\u002Fwebsocket","4.examples\u002Fwebsocket","i-lucide-radio",{"title":431,"path":432,"stem":433,"children":434},"Blog","\u002Fblog","9.blog",[435,438],{"title":431,"path":432,"stem":436,"icon":437},"9.blog\u002Findex","i-lucide-file-text",{"title":439,"path":440,"stem":441,"icon":437},"Nitro v3 Beta is here!","\u002Fblog\u002Fv3-beta","9.blog\u002F1.v3-beta",{"title":5,"path":443,"stem":444},"\u002F","index",[446,451,455,458,461,464,468,471,474,477,480,483,486,490,493,496,499,502,505,509,512,515,518,522,525,528,531,534,537,540,543,546,549],{"title":274,"description":447,"meta":448,"path":275},"File-based API routing with HTTP method support and dynamic parameters.",{"automd":449,"category":450,"icon":277},true,"features",{"title":279,"description":452,"meta":453,"path":280},"Automatic imports for utilities and composables.",{"automd":449,"category":454,"icon":282},"config",{"title":284,"description":456,"meta":457,"path":285},"Cache route responses with configurable bypass logic.",{"automd":449,"category":450,"icon":287},{"title":289,"description":459,"meta":460,"path":290},"Customize error responses with a global error handler.",{"automd":449,"category":450,"icon":292},{"title":38,"description":462,"meta":463,"path":294},"Built-in database support with SQL template literals.",{"automd":449,"category":450,"icon":296},{"title":298,"description":465,"meta":466,"path":299},"Integrate Elysia with Nitro using the server entry.",{"automd":449,"category":467,"icon":301},"backend frameworks",{"title":303,"description":469,"meta":470,"path":304},"Integrate Express with Nitro using the server entry.",{"automd":449,"category":467,"icon":306},{"title":308,"description":472,"meta":473,"path":309},"Integrate Fastify with Nitro using the server entry.",{"automd":449,"category":467,"icon":311},{"title":313,"description":475,"meta":476,"path":314},"Minimal Nitro server using the web standard fetch handler.",{"automd":449,"category":450,"icon":316},{"title":318,"description":478,"meta":479,"path":319},"Integrate Hono with Nitro using the server entry.",{"automd":449,"category":467,"icon":321},{"title":323,"description":481,"meta":482,"path":324},"Custom import aliases for cleaner module paths.",{"automd":449,"category":454,"icon":326},{"title":328,"description":484,"meta":485,"path":329},"Request middleware for authentication, logging, and request modification.",{"automd":449,"category":450,"icon":46},{"title":332,"description":487,"meta":488,"path":333},"Server-side JSX rendering in Nitro with mono-jsx.",{"automd":449,"category":489,"icon":335},"server side rendering",{"title":337,"description":491,"meta":492,"path":338},"Server-side JSX rendering in Nitro with nano-jsx.",{"automd":449,"category":489,"icon":335},{"title":53,"description":494,"meta":495,"path":341},"Extend Nitro with custom plugins for hooks and lifecycle events.",{"automd":449,"category":450,"icon":343},{"title":345,"description":497,"meta":498,"path":346},"Build a custom HTML renderer in Nitro with server-side data fetching.",{"automd":449,"category":489,"icon":348},{"title":350,"description":500,"meta":501,"path":351},"Environment-aware configuration with runtime access.",{"automd":449,"category":454,"icon":353},{"title":355,"description":503,"meta":504,"path":356},"Internal server-to-server requests without network overhead.",{"automd":449,"category":450,"icon":358},{"title":360,"description":506,"meta":507,"path":361},"Server-side syntax highlighting in Nitro with Shiki.",{"automd":449,"category":508,"icon":363},"integrations",{"title":365,"description":510,"meta":511,"path":366},"Generate dynamic Open Graph images from a Nitro route using Takumi.",{"automd":449,"category":508,"icon":368},{"title":370,"description":513,"meta":514,"path":371},"Instrument the request lifecycle with diagnostics channels and the built-in tracing logger.",{"automd":449,"category":450,"icon":373},{"title":375,"description":516,"meta":517,"path":376},"Define routes programmatically using Nitro's virtual module system.",{"automd":449,"category":450,"icon":378},{"title":380,"description":519,"meta":520,"path":381},"Use Nitro as a Vite plugin for programmatic configuration.",{"automd":449,"category":521,"icon":91},"vite",{"title":384,"description":523,"meta":524,"path":385},"React Server Components with Vite and Nitro.",{"automd":449,"category":521,"icon":387},{"title":389,"description":526,"meta":527,"path":390},"Server-side rendering with vanilla HTML, Vite, and Nitro.",{"automd":449,"category":489,"icon":392},{"title":394,"description":529,"meta":530,"path":395},"Server-side rendering with Preact in Nitro using Vite.",{"automd":449,"category":489,"icon":397},{"title":399,"description":532,"meta":533,"path":400},"Server-side rendering with React in Nitro using Vite.",{"automd":449,"category":489,"icon":387},{"title":403,"description":535,"meta":536,"path":404},"Server-side rendering with SolidJS in Nitro using Vite.",{"automd":449,"category":489,"icon":406},{"title":408,"description":538,"meta":539,"path":409},"Client-side routing with TanStack Router in Nitro using Vite.",{"automd":449,"category":489,"icon":411},{"title":413,"description":541,"meta":542,"path":414},"Full-stack React with TanStack Start in Nitro using Vite.",{"automd":449,"category":489,"icon":411},{"title":417,"description":544,"meta":545,"path":418},"Server-side rendering with Vue Router in Nitro using Vite.",{"automd":449,"category":489,"icon":420},{"title":422,"description":547,"meta":548,"path":423},"End-to-end typesafe APIs with tRPC in Nitro using Vite.",{"automd":449,"category":521,"icon":425},{"title":68,"description":550,"meta":551,"path":427},"Real-time bidirectional communication with WebSocket support.",{"automd":449,"category":450,"icon":429},{"id":553,"title":399,"body":554,"description":532,"extension":2488,"meta":2489,"navigation":2490,"path":400,"seo":2491,"stem":401,"__hash__":2492},"content\u002F4.examples\u002Fvite-ssr-react.md",{"type":555,"value":556,"toc":2480,"icon":387},"minimark",[557,1707,1711,1716,1733,1737,1744,1838,1856,1860,1863,1993,1997,2004,2358,2381,2385,2388,2450,2459,2463,2476],[558,559,562,771,830,956,1131,1209,1650],"code-tree",{":expand-all":560,"default-value":561},"true","src\u002Fentry-server.tsx",[563,564,569],"pre",{"className":565,"code":566,"filename":567,"language":568,"meta":5,"style":5},"language-json shiki shiki-themes github-light github-dark github-dark","{\n  \"type\": \"module\",\n  \"scripts\": {\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\",\n    \"dev\": \"vite dev\"\n  },\n  \"devDependencies\": {\n    \"@types\u002Freact\": \"^19.2.14\",\n    \"@types\u002Freact-dom\": \"^19.2.3\",\n    \"@vitejs\u002Fplugin-react\": \"^6.0.1\",\n    \"nitro\": \"latest\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"react-refresh\": \"^0.18.0\",\n    \"vite\": \"latest\"\n  }\n}\n","package.json","json",[570,571,572,581,598,607,620,633,644,650,658,671,684,697,710,723,735,748,759,765],"code",{"__ignoreMap":5},[573,574,577],"span",{"class":575,"line":576},"line",1,[573,578,580],{"class":579},"slsVL","{\n",[573,582,584,588,591,595],{"class":575,"line":583},2,[573,585,587],{"class":586},"suiK_","  \"type\"",[573,589,590],{"class":579},": ",[573,592,594],{"class":593},"sfrk1","\"module\"",[573,596,597],{"class":579},",\n",[573,599,601,604],{"class":575,"line":600},3,[573,602,603],{"class":586},"  \"scripts\"",[573,605,606],{"class":579},": {\n",[573,608,610,613,615,618],{"class":575,"line":609},4,[573,611,612],{"class":586},"    \"build\"",[573,614,590],{"class":579},[573,616,617],{"class":593},"\"vite build\"",[573,619,597],{"class":579},[573,621,623,626,628,631],{"class":575,"line":622},5,[573,624,625],{"class":586},"    \"preview\"",[573,627,590],{"class":579},[573,629,630],{"class":593},"\"vite preview\"",[573,632,597],{"class":579},[573,634,636,639,641],{"class":575,"line":635},6,[573,637,638],{"class":586},"    \"dev\"",[573,640,590],{"class":579},[573,642,643],{"class":593},"\"vite dev\"\n",[573,645,647],{"class":575,"line":646},7,[573,648,649],{"class":579},"  },\n",[573,651,653,656],{"class":575,"line":652},8,[573,654,655],{"class":586},"  \"devDependencies\"",[573,657,606],{"class":579},[573,659,661,664,666,669],{"class":575,"line":660},9,[573,662,663],{"class":586},"    \"@types\u002Freact\"",[573,665,590],{"class":579},[573,667,668],{"class":593},"\"^19.2.14\"",[573,670,597],{"class":579},[573,672,674,677,679,682],{"class":575,"line":673},10,[573,675,676],{"class":586},"    \"@types\u002Freact-dom\"",[573,678,590],{"class":579},[573,680,681],{"class":593},"\"^19.2.3\"",[573,683,597],{"class":579},[573,685,687,690,692,695],{"class":575,"line":686},11,[573,688,689],{"class":586},"    \"@vitejs\u002Fplugin-react\"",[573,691,590],{"class":579},[573,693,694],{"class":593},"\"^6.0.1\"",[573,696,597],{"class":579},[573,698,700,703,705,708],{"class":575,"line":699},12,[573,701,702],{"class":586},"    \"nitro\"",[573,704,590],{"class":579},[573,706,707],{"class":593},"\"latest\"",[573,709,597],{"class":579},[573,711,713,716,718,721],{"class":575,"line":712},13,[573,714,715],{"class":586},"    \"react\"",[573,717,590],{"class":579},[573,719,720],{"class":593},"\"^19.2.4\"",[573,722,597],{"class":579},[573,724,726,729,731,733],{"class":575,"line":725},14,[573,727,728],{"class":586},"    \"react-dom\"",[573,730,590],{"class":579},[573,732,720],{"class":593},[573,734,597],{"class":579},[573,736,738,741,743,746],{"class":575,"line":737},15,[573,739,740],{"class":586},"    \"react-refresh\"",[573,742,590],{"class":579},[573,744,745],{"class":593},"\"^0.18.0\"",[573,747,597],{"class":579},[573,749,751,754,756],{"class":575,"line":750},16,[573,752,753],{"class":586},"    \"vite\"",[573,755,590],{"class":579},[573,757,758],{"class":593},"\"latest\"\n",[573,760,762],{"class":575,"line":761},17,[573,763,764],{"class":579},"  }\n",[573,766,768],{"class":575,"line":767},18,[573,769,770],{"class":579},"}\n",[563,772,775],{"className":565,"code":773,"filename":774,"language":568,"meta":5,"style":5},"{\n  \"extends\": \"nitro\u002Ftsconfig\",\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"react\"\n  }\n}\n","tsconfig.json",[570,776,777,781,793,800,812,822,826],{"__ignoreMap":5},[573,778,779],{"class":575,"line":576},[573,780,580],{"class":579},[573,782,783,786,788,791],{"class":575,"line":583},[573,784,785],{"class":586},"  \"extends\"",[573,787,590],{"class":579},[573,789,790],{"class":593},"\"nitro\u002Ftsconfig\"",[573,792,597],{"class":579},[573,794,795,798],{"class":575,"line":600},[573,796,797],{"class":586},"  \"compilerOptions\"",[573,799,606],{"class":579},[573,801,802,805,807,810],{"class":575,"line":609},[573,803,804],{"class":586},"    \"jsx\"",[573,806,590],{"class":579},[573,808,809],{"class":593},"\"react-jsx\"",[573,811,597],{"class":579},[573,813,814,817,819],{"class":575,"line":622},[573,815,816],{"class":586},"    \"jsxImportSource\"",[573,818,590],{"class":579},[573,820,821],{"class":593},"\"react\"\n",[573,823,824],{"class":575,"line":635},[573,825,764],{"class":579},[573,827,828],{"class":575,"line":646},[573,829,770],{"class":579},[563,831,836],{"className":832,"code":833,"filename":834,"language":835,"meta":5,"style":5},"language-js shiki shiki-themes github-light github-dark github-dark","import { defineConfig } from \"vite\";\nimport { nitro } from \"nitro\u002Fvite\";\nimport react from \"@vitejs\u002Fplugin-react\";\n\nexport default defineConfig({\n  plugins: [nitro(), react()],\n  environments: {\n    client: {\n      build: { rollupOptions: { input: \".\u002Fsrc\u002Fentry-client.tsx\" } },\n    },\n  },\n});\n","vite.config.mjs","js",[570,837,838,856,870,884,889,904,921,926,931,942,947,951],{"__ignoreMap":5},[573,839,840,844,847,850,853],{"class":575,"line":576},[573,841,843],{"class":842},"so5gQ","import",[573,845,846],{"class":579}," { defineConfig } ",[573,848,849],{"class":842},"from",[573,851,852],{"class":593}," \"vite\"",[573,854,855],{"class":579},";\n",[573,857,858,860,863,865,868],{"class":575,"line":583},[573,859,843],{"class":842},[573,861,862],{"class":579}," { nitro } ",[573,864,849],{"class":842},[573,866,867],{"class":593}," \"nitro\u002Fvite\"",[573,869,855],{"class":579},[573,871,872,874,877,879,882],{"class":575,"line":600},[573,873,843],{"class":842},[573,875,876],{"class":579}," react ",[573,878,849],{"class":842},[573,880,881],{"class":593}," \"@vitejs\u002Fplugin-react\"",[573,883,855],{"class":579},[573,885,886],{"class":575,"line":609},[573,887,888],{"emptyLinePlaceholder":449},"\n",[573,890,891,894,897,901],{"class":575,"line":622},[573,892,893],{"class":842},"export",[573,895,896],{"class":842}," default",[573,898,900],{"class":899},"shcOC"," defineConfig",[573,902,903],{"class":579},"({\n",[573,905,906,909,912,915,918],{"class":575,"line":635},[573,907,908],{"class":579},"  plugins: [",[573,910,911],{"class":899},"nitro",[573,913,914],{"class":579},"(), ",[573,916,917],{"class":899},"react",[573,919,920],{"class":579},"()],\n",[573,922,923],{"class":575,"line":646},[573,924,925],{"class":579},"  environments: {\n",[573,927,928],{"class":575,"line":652},[573,929,930],{"class":579},"    client: {\n",[573,932,933,936,939],{"class":575,"line":660},[573,934,935],{"class":579},"      build: { rollupOptions: { input: ",[573,937,938],{"class":593},"\".\u002Fsrc\u002Fentry-client.tsx\"",[573,940,941],{"class":579}," } },\n",[573,943,944],{"class":575,"line":673},[573,945,946],{"class":579},"    },\n",[573,948,949],{"class":575,"line":686},[573,950,649],{"class":579},[573,952,953],{"class":575,"line":699},[573,954,955],{"class":579},"});\n",[563,957,962],{"className":958,"code":959,"filename":960,"language":961,"meta":5,"style":5},"language-tsx shiki shiki-themes github-light github-dark github-dark","import { useState } from \"react\";\n\nexport function App() {\n  const [count, setCount] = useState(0);\n  return (\n    \u003C>\n      \u003Ch1 className=\"hero\">Nitro + Vite + React\u003C\u002Fh1>\n      \u003Cbutton onClick={() => setCount((c) => c + 1)}>Count is {count}\u003C\u002Fbutton>\n    \u003C\u002F>\n  );\n}\n","src\u002Fapp.tsx","tsx",[570,963,964,978,982,995,1030,1038,1043,1068,1117,1122,1127],{"__ignoreMap":5},[573,965,966,968,971,973,976],{"class":575,"line":576},[573,967,843],{"class":842},[573,969,970],{"class":579}," { useState } ",[573,972,849],{"class":842},[573,974,975],{"class":593}," \"react\"",[573,977,855],{"class":579},[573,979,980],{"class":575,"line":583},[573,981,888],{"emptyLinePlaceholder":449},[573,983,984,986,989,992],{"class":575,"line":600},[573,985,893],{"class":842},[573,987,988],{"class":842}," function",[573,990,991],{"class":899}," App",[573,993,994],{"class":579},"() {\n",[573,996,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027],{"class":575,"line":609},[573,998,999],{"class":842},"  const",[573,1001,1002],{"class":579}," [",[573,1004,1005],{"class":586},"count",[573,1007,1008],{"class":579},", ",[573,1010,1011],{"class":586},"setCount",[573,1013,1014],{"class":579},"] ",[573,1016,1017],{"class":842},"=",[573,1019,1020],{"class":899}," useState",[573,1022,1023],{"class":579},"(",[573,1025,1026],{"class":586},"0",[573,1028,1029],{"class":579},");\n",[573,1031,1032,1035],{"class":575,"line":622},[573,1033,1034],{"class":842},"  return",[573,1036,1037],{"class":579}," (\n",[573,1039,1040],{"class":575,"line":635},[573,1041,1042],{"class":579},"    \u003C>\n",[573,1044,1045,1048,1052,1055,1057,1060,1063,1065],{"class":575,"line":646},[573,1046,1047],{"class":579},"      \u003C",[573,1049,1051],{"class":1050},"sByVh","h1",[573,1053,1054],{"class":899}," className",[573,1056,1017],{"class":842},[573,1058,1059],{"class":593},"\"hero\"",[573,1061,1062],{"class":579},">Nitro + Vite + React\u003C\u002F",[573,1064,1051],{"class":1050},[573,1066,1067],{"class":579},">\n",[573,1069,1070,1072,1075,1078,1080,1083,1086,1089,1092,1096,1099,1101,1104,1107,1110,1113,1115],{"class":575,"line":652},[573,1071,1047],{"class":579},[573,1073,1074],{"class":1050},"button",[573,1076,1077],{"class":899}," onClick",[573,1079,1017],{"class":842},[573,1081,1082],{"class":579},"{() ",[573,1084,1085],{"class":842},"=>",[573,1087,1088],{"class":899}," setCount",[573,1090,1091],{"class":579},"((",[573,1093,1095],{"class":1094},"sQHwn","c",[573,1097,1098],{"class":579},") ",[573,1100,1085],{"class":842},[573,1102,1103],{"class":579}," c ",[573,1105,1106],{"class":842},"+",[573,1108,1109],{"class":586}," 1",[573,1111,1112],{"class":579},")}>Count is {count}\u003C\u002F",[573,1114,1074],{"class":1050},[573,1116,1067],{"class":579},[573,1118,1119],{"class":575,"line":660},[573,1120,1121],{"class":579},"    \u003C\u002F>\n",[573,1123,1124],{"class":575,"line":673},[573,1125,1126],{"class":579},"  );\n",[573,1128,1129],{"class":575,"line":686},[573,1130,770],{"class":579},[563,1132,1135],{"className":958,"code":1133,"filename":1134,"language":961,"meta":5,"style":5},"import \"@vitejs\u002Fplugin-react\u002Fpreamble\";\nimport { hydrateRoot } from \"react-dom\u002Fclient\";\nimport { App } from \".\u002Fapp.tsx\";\n\nhydrateRoot(document.querySelector(\"#app\")!, \u003CApp \u002F>);\n","src\u002Fentry-client.tsx",[570,1136,1137,1146,1160,1174,1178],{"__ignoreMap":5},[573,1138,1139,1141,1144],{"class":575,"line":576},[573,1140,843],{"class":842},[573,1142,1143],{"class":593}," \"@vitejs\u002Fplugin-react\u002Fpreamble\"",[573,1145,855],{"class":579},[573,1147,1148,1150,1153,1155,1158],{"class":575,"line":583},[573,1149,843],{"class":842},[573,1151,1152],{"class":579}," { hydrateRoot } ",[573,1154,849],{"class":842},[573,1156,1157],{"class":593}," \"react-dom\u002Fclient\"",[573,1159,855],{"class":579},[573,1161,1162,1164,1167,1169,1172],{"class":575,"line":600},[573,1163,843],{"class":842},[573,1165,1166],{"class":579}," { App } ",[573,1168,849],{"class":842},[573,1170,1171],{"class":593}," \".\u002Fapp.tsx\"",[573,1173,855],{"class":579},[573,1175,1176],{"class":575,"line":609},[573,1177,888],{"emptyLinePlaceholder":449},[573,1179,1180,1183,1186,1189,1191,1194,1197,1200,1203,1206],{"class":575,"line":622},[573,1181,1182],{"class":899},"hydrateRoot",[573,1184,1185],{"class":579},"(document.",[573,1187,1188],{"class":899},"querySelector",[573,1190,1023],{"class":579},[573,1192,1193],{"class":593},"\"#app\"",[573,1195,1196],{"class":579},")",[573,1198,1199],{"class":842},"!",[573,1201,1202],{"class":579},", \u003C",[573,1204,1205],{"class":586},"App",[573,1207,1208],{"class":579}," \u002F>);\n",[563,1210,1212],{"className":958,"code":1211,"filename":561,"language":961,"meta":5,"style":5},"import \".\u002Fstyles.css\";\nimport { renderToReadableStream } from \"react-dom\u002Fserver.edge\";\nimport { App } from \".\u002Fapp.tsx\";\n\nimport clientAssets from \".\u002Fentry-client?assets=client\";\nimport serverAssets from \".\u002Fentry-server?assets=ssr\";\n\nexport default {\n  async fetch(_req: Request) {\n    const assets = clientAssets.merge(serverAssets);\n    return new Response(\n      await renderToReadableStream(\n        \u003Chtml lang=\"en\">\n          \u003Chead>\n            \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \u002F>\n            {assets.css.map((attr: any) => (\n              \u003Clink key={attr.href} rel=\"stylesheet\" {...attr} \u002F>\n            ))}\n            {assets.js.map((attr: any) => (\n              \u003Clink key={attr.href} type=\"modulepreload\" {...attr} \u002F>\n            ))}\n            \u003Cscript type=\"module\" src={assets.entry} \u002F>\n          \u003C\u002Fhead>\n          \u003Cbody id=\"app\">\n            \u003CApp \u002F>\n          \u003C\u002Fbody>\n        \u003C\u002Fhtml>\n      ),\n      { headers: { \"Content-Type\": \"text\u002Fhtml;charset=utf-8\" } }\n    );\n  },\n};\n",[570,1213,1214,1223,1237,1249,1253,1267,1281,1285,1294,1316,1336,1350,1360,1378,1388,1415,1439,1472,1477,1499,1526,1531,1554,1564,1582,1591,1600,1610,1616,1633,1639,1644],{"__ignoreMap":5},[573,1215,1216,1218,1221],{"class":575,"line":576},[573,1217,843],{"class":842},[573,1219,1220],{"class":593}," \".\u002Fstyles.css\"",[573,1222,855],{"class":579},[573,1224,1225,1227,1230,1232,1235],{"class":575,"line":583},[573,1226,843],{"class":842},[573,1228,1229],{"class":579}," { renderToReadableStream } ",[573,1231,849],{"class":842},[573,1233,1234],{"class":593}," \"react-dom\u002Fserver.edge\"",[573,1236,855],{"class":579},[573,1238,1239,1241,1243,1245,1247],{"class":575,"line":600},[573,1240,843],{"class":842},[573,1242,1166],{"class":579},[573,1244,849],{"class":842},[573,1246,1171],{"class":593},[573,1248,855],{"class":579},[573,1250,1251],{"class":575,"line":609},[573,1252,888],{"emptyLinePlaceholder":449},[573,1254,1255,1257,1260,1262,1265],{"class":575,"line":622},[573,1256,843],{"class":842},[573,1258,1259],{"class":579}," clientAssets ",[573,1261,849],{"class":842},[573,1263,1264],{"class":593}," \".\u002Fentry-client?assets=client\"",[573,1266,855],{"class":579},[573,1268,1269,1271,1274,1276,1279],{"class":575,"line":635},[573,1270,843],{"class":842},[573,1272,1273],{"class":579}," serverAssets ",[573,1275,849],{"class":842},[573,1277,1278],{"class":593}," \".\u002Fentry-server?assets=ssr\"",[573,1280,855],{"class":579},[573,1282,1283],{"class":575,"line":646},[573,1284,888],{"emptyLinePlaceholder":449},[573,1286,1287,1289,1291],{"class":575,"line":652},[573,1288,893],{"class":842},[573,1290,896],{"class":842},[573,1292,1293],{"class":579}," {\n",[573,1295,1296,1299,1302,1304,1307,1310,1313],{"class":575,"line":660},[573,1297,1298],{"class":842},"  async",[573,1300,1301],{"class":899}," fetch",[573,1303,1023],{"class":579},[573,1305,1306],{"class":1094},"_req",[573,1308,1309],{"class":842},":",[573,1311,1312],{"class":899}," Request",[573,1314,1315],{"class":579},") {\n",[573,1317,1318,1321,1324,1327,1330,1333],{"class":575,"line":673},[573,1319,1320],{"class":842},"    const",[573,1322,1323],{"class":586}," assets",[573,1325,1326],{"class":842}," =",[573,1328,1329],{"class":579}," clientAssets.",[573,1331,1332],{"class":899},"merge",[573,1334,1335],{"class":579},"(serverAssets);\n",[573,1337,1338,1341,1344,1347],{"class":575,"line":686},[573,1339,1340],{"class":842},"    return",[573,1342,1343],{"class":842}," new",[573,1345,1346],{"class":899}," Response",[573,1348,1349],{"class":579},"(\n",[573,1351,1352,1355,1358],{"class":575,"line":699},[573,1353,1354],{"class":842},"      await",[573,1356,1357],{"class":899}," renderToReadableStream",[573,1359,1349],{"class":579},[573,1361,1362,1365,1368,1371,1373,1376],{"class":575,"line":712},[573,1363,1364],{"class":579},"        \u003C",[573,1366,1367],{"class":1050},"html",[573,1369,1370],{"class":899}," lang",[573,1372,1017],{"class":842},[573,1374,1375],{"class":593},"\"en\"",[573,1377,1067],{"class":579},[573,1379,1380,1383,1386],{"class":575,"line":725},[573,1381,1382],{"class":579},"          \u003C",[573,1384,1385],{"class":1050},"head",[573,1387,1067],{"class":579},[573,1389,1390,1393,1396,1399,1401,1404,1407,1409,1412],{"class":575,"line":737},[573,1391,1392],{"class":579},"            \u003C",[573,1394,1395],{"class":1050},"meta",[573,1397,1398],{"class":899}," name",[573,1400,1017],{"class":842},[573,1402,1403],{"class":593},"\"viewport\"",[573,1405,1406],{"class":899}," content",[573,1408,1017],{"class":842},[573,1410,1411],{"class":593},"\"width=device-width, initial-scale=1.0\"",[573,1413,1414],{"class":579}," \u002F>\n",[573,1416,1417,1420,1423,1425,1428,1430,1433,1435,1437],{"class":575,"line":750},[573,1418,1419],{"class":579},"            {assets.css.",[573,1421,1422],{"class":899},"map",[573,1424,1091],{"class":579},[573,1426,1427],{"class":1094},"attr",[573,1429,1309],{"class":842},[573,1431,1432],{"class":586}," any",[573,1434,1098],{"class":579},[573,1436,1085],{"class":842},[573,1438,1037],{"class":579},[573,1440,1441,1444,1447,1450,1452,1455,1458,1460,1463,1466,1469],{"class":575,"line":761},[573,1442,1443],{"class":579},"              \u003C",[573,1445,1446],{"class":1050},"link",[573,1448,1449],{"class":899}," key",[573,1451,1017],{"class":842},[573,1453,1454],{"class":579},"{attr.href} ",[573,1456,1457],{"class":899},"rel",[573,1459,1017],{"class":842},[573,1461,1462],{"class":593},"\"stylesheet\"",[573,1464,1465],{"class":579}," {",[573,1467,1468],{"class":842},"...",[573,1470,1471],{"class":579},"attr} \u002F>\n",[573,1473,1474],{"class":575,"line":767},[573,1475,1476],{"class":579},"            ))}\n",[573,1478,1480,1483,1485,1487,1489,1491,1493,1495,1497],{"class":575,"line":1479},19,[573,1481,1482],{"class":579},"            {assets.js.",[573,1484,1422],{"class":899},[573,1486,1091],{"class":579},[573,1488,1427],{"class":1094},[573,1490,1309],{"class":842},[573,1492,1432],{"class":586},[573,1494,1098],{"class":579},[573,1496,1085],{"class":842},[573,1498,1037],{"class":579},[573,1500,1502,1504,1506,1508,1510,1512,1515,1517,1520,1522,1524],{"class":575,"line":1501},20,[573,1503,1443],{"class":579},[573,1505,1446],{"class":1050},[573,1507,1449],{"class":899},[573,1509,1017],{"class":842},[573,1511,1454],{"class":579},[573,1513,1514],{"class":899},"type",[573,1516,1017],{"class":842},[573,1518,1519],{"class":593},"\"modulepreload\"",[573,1521,1465],{"class":579},[573,1523,1468],{"class":842},[573,1525,1471],{"class":579},[573,1527,1529],{"class":575,"line":1528},21,[573,1530,1476],{"class":579},[573,1532,1534,1536,1539,1542,1544,1546,1549,1551],{"class":575,"line":1533},22,[573,1535,1392],{"class":579},[573,1537,1538],{"class":1050},"script",[573,1540,1541],{"class":899}," type",[573,1543,1017],{"class":842},[573,1545,594],{"class":593},[573,1547,1548],{"class":899}," src",[573,1550,1017],{"class":842},[573,1552,1553],{"class":579},"{assets.entry} \u002F>\n",[573,1555,1557,1560,1562],{"class":575,"line":1556},23,[573,1558,1559],{"class":579},"          \u003C\u002F",[573,1561,1385],{"class":1050},[573,1563,1067],{"class":579},[573,1565,1567,1569,1572,1575,1577,1580],{"class":575,"line":1566},24,[573,1568,1382],{"class":579},[573,1570,1571],{"class":1050},"body",[573,1573,1574],{"class":899}," id",[573,1576,1017],{"class":842},[573,1578,1579],{"class":593},"\"app\"",[573,1581,1067],{"class":579},[573,1583,1585,1587,1589],{"class":575,"line":1584},25,[573,1586,1392],{"class":579},[573,1588,1205],{"class":586},[573,1590,1414],{"class":579},[573,1592,1594,1596,1598],{"class":575,"line":1593},26,[573,1595,1559],{"class":579},[573,1597,1571],{"class":1050},[573,1599,1067],{"class":579},[573,1601,1603,1606,1608],{"class":575,"line":1602},27,[573,1604,1605],{"class":579},"        \u003C\u002F",[573,1607,1367],{"class":1050},[573,1609,1067],{"class":579},[573,1611,1613],{"class":575,"line":1612},28,[573,1614,1615],{"class":579},"      ),\n",[573,1617,1619,1622,1625,1627,1630],{"class":575,"line":1618},29,[573,1620,1621],{"class":579},"      { headers: { ",[573,1623,1624],{"class":593},"\"Content-Type\"",[573,1626,590],{"class":579},[573,1628,1629],{"class":593},"\"text\u002Fhtml;charset=utf-8\"",[573,1631,1632],{"class":579}," } }\n",[573,1634,1636],{"class":575,"line":1635},30,[573,1637,1638],{"class":579},"    );\n",[573,1640,1642],{"class":575,"line":1641},31,[573,1643,649],{"class":579},[573,1645,1647],{"class":575,"line":1646},32,[573,1648,1649],{"class":579},"};\n",[563,1651,1656],{"className":1652,"code":1653,"filename":1654,"language":1655,"meta":5,"style":5},"language-css shiki shiki-themes github-light github-dark github-dark",".hero {\n  color: orange;\n}\n\nbutton {\n  background-color: lightskyblue;\n}\n","src\u002Fstyles.css","css",[570,1657,1658,1665,1677,1681,1685,1691,1703],{"__ignoreMap":5},[573,1659,1660,1663],{"class":575,"line":576},[573,1661,1662],{"class":899},".hero",[573,1664,1293],{"class":579},[573,1666,1667,1670,1672,1675],{"class":575,"line":583},[573,1668,1669],{"class":586},"  color",[573,1671,590],{"class":579},[573,1673,1674],{"class":586},"orange",[573,1676,855],{"class":579},[573,1678,1679],{"class":575,"line":600},[573,1680,770],{"class":579},[573,1682,1683],{"class":575,"line":609},[573,1684,888],{"emptyLinePlaceholder":449},[573,1686,1687,1689],{"class":575,"line":622},[573,1688,1074],{"class":1050},[573,1690,1293],{"class":579},[573,1692,1693,1696,1698,1701],{"class":575,"line":635},[573,1694,1695],{"class":586},"  background-color",[573,1697,590],{"class":579},[573,1699,1700],{"class":586},"lightskyblue",[573,1702,855],{"class":579},[573,1704,1705],{"class":575,"line":646},[573,1706,770],{"class":579},[1708,1709,1710],"p",{},"Set up server-side rendering (SSR) with React, Vite, and Nitro. This setup enables streaming HTML responses, automatic asset management, and client hydration.",[1712,1713,1715],"h2",{"id":1714},"overview","Overview",[1717,1718,1720,1724,1727,1730],"steps",{"level":1719},"4",[1721,1722,1723],"h4",{},"Add the Nitro Vite plugin to your Vite config",[1721,1725,1726],{},"Configure client and server entry points",[1721,1728,1729],{},"Create a server entry that renders your app to HTML",[1721,1731,1732],{},"Create a client entry that hydrates the server-rendered HTML",[1712,1734,1736],{"id":1735},"_1-configure-vite","1. Configure Vite",[1708,1738,1739,1740,1743],{},"Add the Nitro and React plugins to your Vite config. Define the ",[570,1741,1742],{},"client"," environment with your client entry point:",[563,1745,1746],{"className":832,"code":833,"filename":834,"language":835,"meta":5,"style":5},[570,1747,1748,1760,1772,1784,1788,1798,1810,1814,1818,1826,1830,1834],{"__ignoreMap":5},[573,1749,1750,1752,1754,1756,1758],{"class":575,"line":576},[573,1751,843],{"class":842},[573,1753,846],{"class":579},[573,1755,849],{"class":842},[573,1757,852],{"class":593},[573,1759,855],{"class":579},[573,1761,1762,1764,1766,1768,1770],{"class":575,"line":583},[573,1763,843],{"class":842},[573,1765,862],{"class":579},[573,1767,849],{"class":842},[573,1769,867],{"class":593},[573,1771,855],{"class":579},[573,1773,1774,1776,1778,1780,1782],{"class":575,"line":600},[573,1775,843],{"class":842},[573,1777,876],{"class":579},[573,1779,849],{"class":842},[573,1781,881],{"class":593},[573,1783,855],{"class":579},[573,1785,1786],{"class":575,"line":609},[573,1787,888],{"emptyLinePlaceholder":449},[573,1789,1790,1792,1794,1796],{"class":575,"line":622},[573,1791,893],{"class":842},[573,1793,896],{"class":842},[573,1795,900],{"class":899},[573,1797,903],{"class":579},[573,1799,1800,1802,1804,1806,1808],{"class":575,"line":635},[573,1801,908],{"class":579},[573,1803,911],{"class":899},[573,1805,914],{"class":579},[573,1807,917],{"class":899},[573,1809,920],{"class":579},[573,1811,1812],{"class":575,"line":646},[573,1813,925],{"class":579},[573,1815,1816],{"class":575,"line":652},[573,1817,930],{"class":579},[573,1819,1820,1822,1824],{"class":575,"line":660},[573,1821,935],{"class":579},[573,1823,938],{"class":593},[573,1825,941],{"class":579},[573,1827,1828],{"class":575,"line":673},[573,1829,946],{"class":579},[573,1831,1832],{"class":575,"line":686},[573,1833,649],{"class":579},[573,1835,1836],{"class":575,"line":699},[573,1837,955],{"class":579},[1708,1839,1840,1841,1844,1845,1848,1849,1008,1852,1855],{},"The ",[570,1842,1843],{},"environments.client"," configuration tells Vite which file to use as the browser entry point. Nitro automatically detects the SSR entry from a file named ",[570,1846,1847],{},"entry-server"," in ",[570,1850,1851],{},"app\u002F",[570,1853,1854],{},"src\u002F",", or the project root.",[1712,1857,1859],{"id":1858},"_2-create-the-app-component","2. Create the App Component",[1708,1861,1862],{},"Create a shared React component that runs on both server and client:",[563,1864,1865],{"className":958,"code":959,"filename":960,"language":961,"meta":5,"style":5},[570,1866,1867,1879,1883,1893,1917,1923,1927,1945,1981,1985,1989],{"__ignoreMap":5},[573,1868,1869,1871,1873,1875,1877],{"class":575,"line":576},[573,1870,843],{"class":842},[573,1872,970],{"class":579},[573,1874,849],{"class":842},[573,1876,975],{"class":593},[573,1878,855],{"class":579},[573,1880,1881],{"class":575,"line":583},[573,1882,888],{"emptyLinePlaceholder":449},[573,1884,1885,1887,1889,1891],{"class":575,"line":600},[573,1886,893],{"class":842},[573,1888,988],{"class":842},[573,1890,991],{"class":899},[573,1892,994],{"class":579},[573,1894,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915],{"class":575,"line":609},[573,1896,999],{"class":842},[573,1898,1002],{"class":579},[573,1900,1005],{"class":586},[573,1902,1008],{"class":579},[573,1904,1011],{"class":586},[573,1906,1014],{"class":579},[573,1908,1017],{"class":842},[573,1910,1020],{"class":899},[573,1912,1023],{"class":579},[573,1914,1026],{"class":586},[573,1916,1029],{"class":579},[573,1918,1919,1921],{"class":575,"line":622},[573,1920,1034],{"class":842},[573,1922,1037],{"class":579},[573,1924,1925],{"class":575,"line":635},[573,1926,1042],{"class":579},[573,1928,1929,1931,1933,1935,1937,1939,1941,1943],{"class":575,"line":646},[573,1930,1047],{"class":579},[573,1932,1051],{"class":1050},[573,1934,1054],{"class":899},[573,1936,1017],{"class":842},[573,1938,1059],{"class":593},[573,1940,1062],{"class":579},[573,1942,1051],{"class":1050},[573,1944,1067],{"class":579},[573,1946,1947,1949,1951,1953,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1977,1979],{"class":575,"line":652},[573,1948,1047],{"class":579},[573,1950,1074],{"class":1050},[573,1952,1077],{"class":899},[573,1954,1017],{"class":842},[573,1956,1082],{"class":579},[573,1958,1085],{"class":842},[573,1960,1088],{"class":899},[573,1962,1091],{"class":579},[573,1964,1095],{"class":1094},[573,1966,1098],{"class":579},[573,1968,1085],{"class":842},[573,1970,1103],{"class":579},[573,1972,1106],{"class":842},[573,1974,1109],{"class":586},[573,1976,1112],{"class":579},[573,1978,1074],{"class":1050},[573,1980,1067],{"class":579},[573,1982,1983],{"class":575,"line":660},[573,1984,1121],{"class":579},[573,1986,1987],{"class":575,"line":673},[573,1988,1126],{"class":579},[573,1990,1991],{"class":575,"line":686},[573,1992,770],{"class":579},[1712,1994,1996],{"id":1995},"_3-create-the-server-entry","3. Create the Server Entry",[1708,1998,1999,2000,2003],{},"The server entry renders your React app to a streaming HTML response. It uses ",[570,2001,2002],{},"react-dom\u002Fserver.edge"," for edge-compatible streaming:",[563,2005,2006],{"className":958,"code":1211,"filename":561,"language":961,"meta":5,"style":5},[570,2007,2008,2016,2028,2040,2044,2056,2068,2072,2080,2096,2110,2120,2128,2142,2150,2170,2190,2214,2218,2238,2262,2266,2284,2292,2306,2314,2322,2330,2334,2346,2350,2354],{"__ignoreMap":5},[573,2009,2010,2012,2014],{"class":575,"line":576},[573,2011,843],{"class":842},[573,2013,1220],{"class":593},[573,2015,855],{"class":579},[573,2017,2018,2020,2022,2024,2026],{"class":575,"line":583},[573,2019,843],{"class":842},[573,2021,1229],{"class":579},[573,2023,849],{"class":842},[573,2025,1234],{"class":593},[573,2027,855],{"class":579},[573,2029,2030,2032,2034,2036,2038],{"class":575,"line":600},[573,2031,843],{"class":842},[573,2033,1166],{"class":579},[573,2035,849],{"class":842},[573,2037,1171],{"class":593},[573,2039,855],{"class":579},[573,2041,2042],{"class":575,"line":609},[573,2043,888],{"emptyLinePlaceholder":449},[573,2045,2046,2048,2050,2052,2054],{"class":575,"line":622},[573,2047,843],{"class":842},[573,2049,1259],{"class":579},[573,2051,849],{"class":842},[573,2053,1264],{"class":593},[573,2055,855],{"class":579},[573,2057,2058,2060,2062,2064,2066],{"class":575,"line":635},[573,2059,843],{"class":842},[573,2061,1273],{"class":579},[573,2063,849],{"class":842},[573,2065,1278],{"class":593},[573,2067,855],{"class":579},[573,2069,2070],{"class":575,"line":646},[573,2071,888],{"emptyLinePlaceholder":449},[573,2073,2074,2076,2078],{"class":575,"line":652},[573,2075,893],{"class":842},[573,2077,896],{"class":842},[573,2079,1293],{"class":579},[573,2081,2082,2084,2086,2088,2090,2092,2094],{"class":575,"line":660},[573,2083,1298],{"class":842},[573,2085,1301],{"class":899},[573,2087,1023],{"class":579},[573,2089,1306],{"class":1094},[573,2091,1309],{"class":842},[573,2093,1312],{"class":899},[573,2095,1315],{"class":579},[573,2097,2098,2100,2102,2104,2106,2108],{"class":575,"line":673},[573,2099,1320],{"class":842},[573,2101,1323],{"class":586},[573,2103,1326],{"class":842},[573,2105,1329],{"class":579},[573,2107,1332],{"class":899},[573,2109,1335],{"class":579},[573,2111,2112,2114,2116,2118],{"class":575,"line":686},[573,2113,1340],{"class":842},[573,2115,1343],{"class":842},[573,2117,1346],{"class":899},[573,2119,1349],{"class":579},[573,2121,2122,2124,2126],{"class":575,"line":699},[573,2123,1354],{"class":842},[573,2125,1357],{"class":899},[573,2127,1349],{"class":579},[573,2129,2130,2132,2134,2136,2138,2140],{"class":575,"line":712},[573,2131,1364],{"class":579},[573,2133,1367],{"class":1050},[573,2135,1370],{"class":899},[573,2137,1017],{"class":842},[573,2139,1375],{"class":593},[573,2141,1067],{"class":579},[573,2143,2144,2146,2148],{"class":575,"line":725},[573,2145,1382],{"class":579},[573,2147,1385],{"class":1050},[573,2149,1067],{"class":579},[573,2151,2152,2154,2156,2158,2160,2162,2164,2166,2168],{"class":575,"line":737},[573,2153,1392],{"class":579},[573,2155,1395],{"class":1050},[573,2157,1398],{"class":899},[573,2159,1017],{"class":842},[573,2161,1403],{"class":593},[573,2163,1406],{"class":899},[573,2165,1017],{"class":842},[573,2167,1411],{"class":593},[573,2169,1414],{"class":579},[573,2171,2172,2174,2176,2178,2180,2182,2184,2186,2188],{"class":575,"line":750},[573,2173,1419],{"class":579},[573,2175,1422],{"class":899},[573,2177,1091],{"class":579},[573,2179,1427],{"class":1094},[573,2181,1309],{"class":842},[573,2183,1432],{"class":586},[573,2185,1098],{"class":579},[573,2187,1085],{"class":842},[573,2189,1037],{"class":579},[573,2191,2192,2194,2196,2198,2200,2202,2204,2206,2208,2210,2212],{"class":575,"line":761},[573,2193,1443],{"class":579},[573,2195,1446],{"class":1050},[573,2197,1449],{"class":899},[573,2199,1017],{"class":842},[573,2201,1454],{"class":579},[573,2203,1457],{"class":899},[573,2205,1017],{"class":842},[573,2207,1462],{"class":593},[573,2209,1465],{"class":579},[573,2211,1468],{"class":842},[573,2213,1471],{"class":579},[573,2215,2216],{"class":575,"line":767},[573,2217,1476],{"class":579},[573,2219,2220,2222,2224,2226,2228,2230,2232,2234,2236],{"class":575,"line":1479},[573,2221,1482],{"class":579},[573,2223,1422],{"class":899},[573,2225,1091],{"class":579},[573,2227,1427],{"class":1094},[573,2229,1309],{"class":842},[573,2231,1432],{"class":586},[573,2233,1098],{"class":579},[573,2235,1085],{"class":842},[573,2237,1037],{"class":579},[573,2239,2240,2242,2244,2246,2248,2250,2252,2254,2256,2258,2260],{"class":575,"line":1501},[573,2241,1443],{"class":579},[573,2243,1446],{"class":1050},[573,2245,1449],{"class":899},[573,2247,1017],{"class":842},[573,2249,1454],{"class":579},[573,2251,1514],{"class":899},[573,2253,1017],{"class":842},[573,2255,1519],{"class":593},[573,2257,1465],{"class":579},[573,2259,1468],{"class":842},[573,2261,1471],{"class":579},[573,2263,2264],{"class":575,"line":1528},[573,2265,1476],{"class":579},[573,2267,2268,2270,2272,2274,2276,2278,2280,2282],{"class":575,"line":1533},[573,2269,1392],{"class":579},[573,2271,1538],{"class":1050},[573,2273,1541],{"class":899},[573,2275,1017],{"class":842},[573,2277,594],{"class":593},[573,2279,1548],{"class":899},[573,2281,1017],{"class":842},[573,2283,1553],{"class":579},[573,2285,2286,2288,2290],{"class":575,"line":1556},[573,2287,1559],{"class":579},[573,2289,1385],{"class":1050},[573,2291,1067],{"class":579},[573,2293,2294,2296,2298,2300,2302,2304],{"class":575,"line":1566},[573,2295,1382],{"class":579},[573,2297,1571],{"class":1050},[573,2299,1574],{"class":899},[573,2301,1017],{"class":842},[573,2303,1579],{"class":593},[573,2305,1067],{"class":579},[573,2307,2308,2310,2312],{"class":575,"line":1584},[573,2309,1392],{"class":579},[573,2311,1205],{"class":586},[573,2313,1414],{"class":579},[573,2315,2316,2318,2320],{"class":575,"line":1593},[573,2317,1559],{"class":579},[573,2319,1571],{"class":1050},[573,2321,1067],{"class":579},[573,2323,2324,2326,2328],{"class":575,"line":1602},[573,2325,1605],{"class":579},[573,2327,1367],{"class":1050},[573,2329,1067],{"class":579},[573,2331,2332],{"class":575,"line":1612},[573,2333,1615],{"class":579},[573,2335,2336,2338,2340,2342,2344],{"class":575,"line":1618},[573,2337,1621],{"class":579},[573,2339,1624],{"class":593},[573,2341,590],{"class":579},[573,2343,1629],{"class":593},[573,2345,1632],{"class":579},[573,2347,2348],{"class":575,"line":1635},[573,2349,1638],{"class":579},[573,2351,2352],{"class":575,"line":1641},[573,2353,649],{"class":579},[573,2355,2356],{"class":575,"line":1646},[573,2357,1649],{"class":579},[1708,2359,2360,2361,2364,2365,2368,2369,2372,2373,2376,2377,2380],{},"Import assets using the ",[570,2362,2363],{},"?assets=client"," and ",[570,2366,2367],{},"?assets=ssr"," query parameters. Nitro collects CSS and JS assets from each entry point, and ",[570,2370,2371],{},"merge()"," combines them into a single manifest. The ",[570,2374,2375],{},"assets"," object provides arrays of stylesheet and script attributes, plus the client entry URL. Use ",[570,2378,2379],{},"renderToReadableStream"," to stream HTML as React renders, improving time-to-first-byte.",[1712,2382,2384],{"id":2383},"_4-create-the-client-entry","4. Create the Client Entry",[1708,2386,2387],{},"The client entry hydrates the server-rendered HTML, attaching React's event handlers:",[563,2389,2390],{"className":958,"code":1133,"filename":1134,"language":961,"meta":5,"style":5},[570,2391,2392,2400,2412,2424,2428],{"__ignoreMap":5},[573,2393,2394,2396,2398],{"class":575,"line":576},[573,2395,843],{"class":842},[573,2397,1143],{"class":593},[573,2399,855],{"class":579},[573,2401,2402,2404,2406,2408,2410],{"class":575,"line":583},[573,2403,843],{"class":842},[573,2405,1152],{"class":579},[573,2407,849],{"class":842},[573,2409,1157],{"class":593},[573,2411,855],{"class":579},[573,2413,2414,2416,2418,2420,2422],{"class":575,"line":600},[573,2415,843],{"class":842},[573,2417,1166],{"class":579},[573,2419,849],{"class":842},[573,2421,1171],{"class":593},[573,2423,855],{"class":579},[573,2425,2426],{"class":575,"line":609},[573,2427,888],{"emptyLinePlaceholder":449},[573,2429,2430,2432,2434,2436,2438,2440,2442,2444,2446,2448],{"class":575,"line":622},[573,2431,1182],{"class":899},[573,2433,1185],{"class":579},[573,2435,1188],{"class":899},[573,2437,1023],{"class":579},[573,2439,1193],{"class":593},[573,2441,1196],{"class":579},[573,2443,1199],{"class":842},[573,2445,1202],{"class":579},[573,2447,1205],{"class":586},[573,2449,1208],{"class":579},[1708,2451,1840,2452,2455,2456,2458],{},[570,2453,2454],{},"@vitejs\u002Fplugin-react\u002Fpreamble"," import is required for React Fast Refresh during development. The ",[570,2457,1182],{}," function attaches React to the existing server-rendered DOM without re-rendering it.",[1712,2460,2462],{"id":2461},"learn-more","Learn More",[2464,2465,2466,2472],"ul",{},[2467,2468,2469],"li",{},[2470,2471,18],"a",{"href":19},[2467,2473,2474],{},[2470,2475,78],{"href":79},[2477,2478,2479],"style",{},"html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}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 .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sByVh, html code.shiki .sByVh{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#85E89D}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}",{"title":5,"searchDepth":583,"depth":583,"links":2481},[2482,2483,2484,2485,2486,2487],{"id":1714,"depth":583,"text":1715},{"id":1735,"depth":583,"text":1736},{"id":1858,"depth":583,"text":1859},{"id":1995,"depth":583,"text":1996},{"id":2383,"depth":583,"text":2384},{"id":2461,"depth":583,"text":2462},"md",{"automd":449,"category":489,"icon":387},{"icon":387},{"title":399,"description":532},"gUToarF1-hhZo33wJ7Nl5EuMtYICSM_otFIuTjgrisU",[2494,2495],{"title":394,"path":395,"stem":396,"description":529,"icon":397,"children":-1},{"title":403,"path":404,"stem":405,"description":535,"icon":406,"children":-1},1784019077842]