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