[{"data":1,"prerenderedAt":2301},["ShallowReactive",2],{"navigation":3,"examples-nav":224,"-examples-vite-ssr-react":353,"-examples-vite-ssr-react-surround":2294},[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":2287,"icon":2288,"meta":2289,"navigation":2290,"path":328,"seo":2291,"stem":2292,"__hash__":2293},"examples/examples/vite-ssr-react/README.md",{"type":356,"value":357,"toc":2279},"minimark",[358,1509,1513,1518,1535,1539,1546,1640,1655,1659,1662,1792,1796,1803,2157,2180,2184,2187,2249,2258,2262,2275],[359,360,363,572,631,758,933,1011,1452],"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  environments: {\n    client: {\n      build: { rollupOptions: { input: \"./src/entry-client.tsx\" } },\n    },\n  },\n});\n","vite.config.mjs","js",[371,638,639,657,671,685,691,706,723,728,733,744,749,753],{"__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},"  environments: {\n",[374,729,730],{"class":376,"line":453},[374,731,732],{"class":380},"    client: {\n",[374,734,735,738,741],{"class":376,"line":461},[374,736,737],{"class":380},"      build: { rollupOptions: { input: ",[374,739,740],{"class":394},"\"./src/entry-client.tsx\"",[374,742,743],{"class":380}," } },\n",[374,745,746],{"class":376,"line":474},[374,747,748],{"class":380},"    },\n",[374,750,751],{"class":376,"line":487},[374,752,450],{"class":380},[374,754,755],{"class":376,"line":500},[374,756,757],{"class":380},"});\n",[364,759,764],{"className":760,"code":761,"filename":762,"language":763,"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,765,766,780,784,797,832,840,845,870,919,924,929],{"__ignoreMap":5},[374,767,768,770,773,775,778],{"class":376,"line":377},[374,769,644],{"class":643},[374,771,772],{"class":380}," { useState } ",[374,774,650],{"class":643},[374,776,777],{"class":394}," \"react\"",[374,779,656],{"class":380},[374,781,782],{"class":376,"line":384},[374,783,690],{"emptyLinePlaceholder":689},[374,785,786,788,791,794],{"class":376,"line":401},[374,787,695],{"class":643},[374,789,790],{"class":643}," function",[374,792,793],{"class":701}," App",[374,795,796],{"class":380},"() {\n",[374,798,799,802,805,808,811,814,817,820,823,826,829],{"class":376,"line":410},[374,800,801],{"class":643},"  const",[374,803,804],{"class":380}," [",[374,806,807],{"class":387},"count",[374,809,810],{"class":380},", ",[374,812,813],{"class":387},"setCount",[374,815,816],{"class":380},"] ",[374,818,819],{"class":643},"=",[374,821,822],{"class":701}," useState",[374,824,825],{"class":380},"(",[374,827,828],{"class":387},"0",[374,830,831],{"class":380},");\n",[374,833,834,837],{"class":376,"line":423},[374,835,836],{"class":643},"  return",[374,838,839],{"class":380}," (\n",[374,841,842],{"class":376,"line":436},[374,843,844],{"class":380},"    \u003C>\n",[374,846,847,850,854,857,859,862,865,867],{"class":376,"line":447},[374,848,849],{"class":380},"      \u003C",[374,851,853],{"class":852},"sByVh","h1",[374,855,856],{"class":701}," className",[374,858,819],{"class":643},[374,860,861],{"class":394},"\"hero\"",[374,863,864],{"class":380},">Nitro + Vite + React\u003C/",[374,866,853],{"class":852},[374,868,869],{"class":380},">\n",[374,871,872,874,877,880,882,885,888,891,894,898,901,903,906,909,912,915,917],{"class":376,"line":453},[374,873,849],{"class":380},[374,875,876],{"class":852},"button",[374,878,879],{"class":701}," onClick",[374,881,819],{"class":643},[374,883,884],{"class":380},"{() ",[374,886,887],{"class":643},"=>",[374,889,890],{"class":701}," setCount",[374,892,893],{"class":380},"((",[374,895,897],{"class":896},"sQHwn","c",[374,899,900],{"class":380},") ",[374,902,887],{"class":643},[374,904,905],{"class":380}," c ",[374,907,908],{"class":643},"+",[374,910,911],{"class":387}," 1",[374,913,914],{"class":380},")}>Count is {count}\u003C/",[374,916,876],{"class":852},[374,918,869],{"class":380},[374,920,921],{"class":376,"line":461},[374,922,923],{"class":380},"    \u003C/>\n",[374,925,926],{"class":376,"line":474},[374,927,928],{"class":380},"  );\n",[374,930,931],{"class":376,"line":487},[374,932,571],{"class":380},[364,934,937],{"className":760,"code":935,"filename":936,"language":763,"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,938,939,948,962,976,980],{"__ignoreMap":5},[374,940,941,943,946],{"class":376,"line":377},[374,942,644],{"class":643},[374,944,945],{"class":394}," \"@vitejs/plugin-react/preamble\"",[374,947,656],{"class":380},[374,949,950,952,955,957,960],{"class":376,"line":384},[374,951,644],{"class":643},[374,953,954],{"class":380}," { hydrateRoot } ",[374,956,650],{"class":643},[374,958,959],{"class":394}," \"react-dom/client\"",[374,961,656],{"class":380},[374,963,964,966,969,971,974],{"class":376,"line":401},[374,965,644],{"class":643},[374,967,968],{"class":380}," { App } ",[374,970,650],{"class":643},[374,972,973],{"class":394}," \"./app.tsx\"",[374,975,656],{"class":380},[374,977,978],{"class":376,"line":410},[374,979,690],{"emptyLinePlaceholder":689},[374,981,982,985,988,991,993,996,999,1002,1005,1008],{"class":376,"line":423},[374,983,984],{"class":701},"hydrateRoot",[374,986,987],{"class":380},"(document.",[374,989,990],{"class":701},"querySelector",[374,992,825],{"class":380},[374,994,995],{"class":394},"\"#app\"",[374,997,998],{"class":380},")",[374,1000,1001],{"class":643},"!",[374,1003,1004],{"class":380},", \u003C",[374,1006,1007],{"class":387},"App",[374,1009,1010],{"class":380}," />);\n",[364,1012,1014],{"className":760,"code":1013,"filename":362,"language":763,"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,1015,1016,1025,1039,1051,1055,1069,1083,1087,1096,1118,1138,1152,1162,1180,1190,1217,1241,1274,1279,1301,1328,1333,1356,1366,1384,1393,1402,1412,1418,1435,1441,1446],{"__ignoreMap":5},[374,1017,1018,1020,1023],{"class":376,"line":377},[374,1019,644],{"class":643},[374,1021,1022],{"class":394}," \"./styles.css\"",[374,1024,656],{"class":380},[374,1026,1027,1029,1032,1034,1037],{"class":376,"line":384},[374,1028,644],{"class":643},[374,1030,1031],{"class":380}," { renderToReadableStream } ",[374,1033,650],{"class":643},[374,1035,1036],{"class":394}," \"react-dom/server.edge\"",[374,1038,656],{"class":380},[374,1040,1041,1043,1045,1047,1049],{"class":376,"line":401},[374,1042,644],{"class":643},[374,1044,968],{"class":380},[374,1046,650],{"class":643},[374,1048,973],{"class":394},[374,1050,656],{"class":380},[374,1052,1053],{"class":376,"line":410},[374,1054,690],{"emptyLinePlaceholder":689},[374,1056,1057,1059,1062,1064,1067],{"class":376,"line":423},[374,1058,644],{"class":643},[374,1060,1061],{"class":380}," clientAssets ",[374,1063,650],{"class":643},[374,1065,1066],{"class":394}," \"./entry-client?assets=client\"",[374,1068,656],{"class":380},[374,1070,1071,1073,1076,1078,1081],{"class":376,"line":436},[374,1072,644],{"class":643},[374,1074,1075],{"class":380}," serverAssets ",[374,1077,650],{"class":643},[374,1079,1080],{"class":394}," \"./entry-server?assets=ssr\"",[374,1082,656],{"class":380},[374,1084,1085],{"class":376,"line":447},[374,1086,690],{"emptyLinePlaceholder":689},[374,1088,1089,1091,1093],{"class":376,"line":453},[374,1090,695],{"class":643},[374,1092,698],{"class":643},[374,1094,1095],{"class":380}," {\n",[374,1097,1098,1101,1104,1106,1109,1112,1115],{"class":376,"line":461},[374,1099,1100],{"class":643},"  async",[374,1102,1103],{"class":701}," fetch",[374,1105,825],{"class":380},[374,1107,1108],{"class":896},"_req",[374,1110,1111],{"class":643},":",[374,1113,1114],{"class":701}," Request",[374,1116,1117],{"class":380},") {\n",[374,1119,1120,1123,1126,1129,1132,1135],{"class":376,"line":474},[374,1121,1122],{"class":643},"    const",[374,1124,1125],{"class":387}," assets",[374,1127,1128],{"class":643}," =",[374,1130,1131],{"class":380}," clientAssets.",[374,1133,1134],{"class":701},"merge",[374,1136,1137],{"class":380},"(serverAssets);\n",[374,1139,1140,1143,1146,1149],{"class":376,"line":487},[374,1141,1142],{"class":643},"    return",[374,1144,1145],{"class":643}," new",[374,1147,1148],{"class":701}," Response",[374,1150,1151],{"class":380},"(\n",[374,1153,1154,1157,1160],{"class":376,"line":500},[374,1155,1156],{"class":643},"      await",[374,1158,1159],{"class":701}," renderToReadableStream",[374,1161,1151],{"class":380},[374,1163,1164,1167,1170,1173,1175,1178],{"class":376,"line":513},[374,1165,1166],{"class":380},"        \u003C",[374,1168,1169],{"class":852},"html",[374,1171,1172],{"class":701}," lang",[374,1174,819],{"class":643},[374,1176,1177],{"class":394},"\"en\"",[374,1179,869],{"class":380},[374,1181,1182,1185,1188],{"class":376,"line":526},[374,1183,1184],{"class":380},"          \u003C",[374,1186,1187],{"class":852},"head",[374,1189,869],{"class":380},[374,1191,1192,1195,1198,1201,1203,1206,1209,1211,1214],{"class":376,"line":538},[374,1193,1194],{"class":380},"            \u003C",[374,1196,1197],{"class":852},"meta",[374,1199,1200],{"class":701}," name",[374,1202,819],{"class":643},[374,1204,1205],{"class":394},"\"viewport\"",[374,1207,1208],{"class":701}," content",[374,1210,819],{"class":643},[374,1212,1213],{"class":394},"\"width=device-width, initial-scale=1.0\"",[374,1215,1216],{"class":380}," />\n",[374,1218,1219,1222,1225,1227,1230,1232,1235,1237,1239],{"class":376,"line":551},[374,1220,1221],{"class":380},"            {assets.css.",[374,1223,1224],{"class":701},"map",[374,1226,893],{"class":380},[374,1228,1229],{"class":896},"attr",[374,1231,1111],{"class":643},[374,1233,1234],{"class":387}," any",[374,1236,900],{"class":380},[374,1238,887],{"class":643},[374,1240,839],{"class":380},[374,1242,1243,1246,1249,1252,1254,1257,1260,1262,1265,1268,1271],{"class":376,"line":562},[374,1244,1245],{"class":380},"              \u003C",[374,1247,1248],{"class":852},"link",[374,1250,1251],{"class":701}," key",[374,1253,819],{"class":643},[374,1255,1256],{"class":380},"{attr.href} ",[374,1258,1259],{"class":701},"rel",[374,1261,819],{"class":643},[374,1263,1264],{"class":394},"\"stylesheet\"",[374,1266,1267],{"class":380}," {",[374,1269,1270],{"class":643},"...",[374,1272,1273],{"class":380},"attr} />\n",[374,1275,1276],{"class":376,"line":568},[374,1277,1278],{"class":380},"            ))}\n",[374,1280,1282,1285,1287,1289,1291,1293,1295,1297,1299],{"class":376,"line":1281},19,[374,1283,1284],{"class":380},"            {assets.js.",[374,1286,1224],{"class":701},[374,1288,893],{"class":380},[374,1290,1229],{"class":896},[374,1292,1111],{"class":643},[374,1294,1234],{"class":387},[374,1296,900],{"class":380},[374,1298,887],{"class":643},[374,1300,839],{"class":380},[374,1302,1304,1306,1308,1310,1312,1314,1317,1319,1322,1324,1326],{"class":376,"line":1303},20,[374,1305,1245],{"class":380},[374,1307,1248],{"class":852},[374,1309,1251],{"class":701},[374,1311,819],{"class":643},[374,1313,1256],{"class":380},[374,1315,1316],{"class":701},"type",[374,1318,819],{"class":643},[374,1320,1321],{"class":394},"\"modulepreload\"",[374,1323,1267],{"class":380},[374,1325,1270],{"class":643},[374,1327,1273],{"class":380},[374,1329,1331],{"class":376,"line":1330},21,[374,1332,1278],{"class":380},[374,1334,1336,1338,1341,1344,1346,1348,1351,1353],{"class":376,"line":1335},22,[374,1337,1194],{"class":380},[374,1339,1340],{"class":852},"script",[374,1342,1343],{"class":701}," type",[374,1345,819],{"class":643},[374,1347,395],{"class":394},[374,1349,1350],{"class":701}," src",[374,1352,819],{"class":643},[374,1354,1355],{"class":380},"{assets.entry} />\n",[374,1357,1359,1362,1364],{"class":376,"line":1358},23,[374,1360,1361],{"class":380},"          \u003C/",[374,1363,1187],{"class":852},[374,1365,869],{"class":380},[374,1367,1369,1371,1374,1377,1379,1382],{"class":376,"line":1368},24,[374,1370,1184],{"class":380},[374,1372,1373],{"class":852},"body",[374,1375,1376],{"class":701}," id",[374,1378,819],{"class":643},[374,1380,1381],{"class":394},"\"app\"",[374,1383,869],{"class":380},[374,1385,1387,1389,1391],{"class":376,"line":1386},25,[374,1388,1194],{"class":380},[374,1390,1007],{"class":387},[374,1392,1216],{"class":380},[374,1394,1396,1398,1400],{"class":376,"line":1395},26,[374,1397,1361],{"class":380},[374,1399,1373],{"class":852},[374,1401,869],{"class":380},[374,1403,1405,1408,1410],{"class":376,"line":1404},27,[374,1406,1407],{"class":380},"        \u003C/",[374,1409,1169],{"class":852},[374,1411,869],{"class":380},[374,1413,1415],{"class":376,"line":1414},28,[374,1416,1417],{"class":380},"      ),\n",[374,1419,1421,1424,1427,1429,1432],{"class":376,"line":1420},29,[374,1422,1423],{"class":380},"      { headers: { ",[374,1425,1426],{"class":394},"\"Content-Type\"",[374,1428,391],{"class":380},[374,1430,1431],{"class":394},"\"text/html;charset=utf-8\"",[374,1433,1434],{"class":380}," } }\n",[374,1436,1438],{"class":376,"line":1437},30,[374,1439,1440],{"class":380},"    );\n",[374,1442,1444],{"class":376,"line":1443},31,[374,1445,450],{"class":380},[374,1447,1449],{"class":376,"line":1448},32,[374,1450,1451],{"class":380},"};\n",[364,1453,1458],{"className":1454,"code":1455,"filename":1456,"language":1457,"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,1459,1460,1467,1479,1483,1487,1493,1505],{"__ignoreMap":5},[374,1461,1462,1465],{"class":376,"line":377},[374,1463,1464],{"class":701},".hero",[374,1466,1095],{"class":380},[374,1468,1469,1472,1474,1477],{"class":376,"line":384},[374,1470,1471],{"class":387},"  color",[374,1473,391],{"class":380},[374,1475,1476],{"class":387},"orange",[374,1478,656],{"class":380},[374,1480,1481],{"class":376,"line":401},[374,1482,571],{"class":380},[374,1484,1485],{"class":376,"line":410},[374,1486,690],{"emptyLinePlaceholder":689},[374,1488,1489,1491],{"class":376,"line":423},[374,1490,876],{"class":852},[374,1492,1095],{"class":380},[374,1494,1495,1498,1500,1503],{"class":376,"line":436},[374,1496,1497],{"class":387},"  background-color",[374,1499,391],{"class":380},[374,1501,1502],{"class":387},"lightskyblue",[374,1504,656],{"class":380},[374,1506,1507],{"class":376,"line":447},[374,1508,571],{"class":380},[1510,1511,1512],"p",{},"Set up server-side rendering (SSR) with React, Vite, and Nitro. This setup enables streaming HTML responses, automatic asset management, and client hydration.",[1514,1515,1517],"h2",{"id":1516},"overview","Overview",[1519,1520,1522,1526,1529,1532],"steps",{"level":1521},"4",[1523,1524,1525],"h4",{},"Add the Nitro Vite plugin to your Vite config",[1523,1527,1528],{},"Configure client and server entry points",[1523,1530,1531],{},"Create a server entry that renders your app to HTML",[1523,1533,1534],{},"Create a client entry that hydrates the server-rendered HTML",[1514,1536,1538],{"id":1537},"_1-configure-vite","1. Configure Vite",[1510,1540,1541,1542,1545],{},"Add the Nitro and React plugins to your Vite config. Define the ",[371,1543,1544],{},"client"," environment with your client entry point:",[364,1547,1548],{"className":633,"code":634,"filename":635,"language":636,"meta":5,"style":5},[371,1549,1550,1562,1574,1586,1590,1600,1612,1616,1620,1628,1632,1636],{"__ignoreMap":5},[374,1551,1552,1554,1556,1558,1560],{"class":376,"line":377},[374,1553,644],{"class":643},[374,1555,647],{"class":380},[374,1557,650],{"class":643},[374,1559,653],{"class":394},[374,1561,656],{"class":380},[374,1563,1564,1566,1568,1570,1572],{"class":376,"line":384},[374,1565,644],{"class":643},[374,1567,663],{"class":380},[374,1569,650],{"class":643},[374,1571,668],{"class":394},[374,1573,656],{"class":380},[374,1575,1576,1578,1580,1582,1584],{"class":376,"line":401},[374,1577,644],{"class":643},[374,1579,677],{"class":380},[374,1581,650],{"class":643},[374,1583,682],{"class":394},[374,1585,656],{"class":380},[374,1587,1588],{"class":376,"line":410},[374,1589,690],{"emptyLinePlaceholder":689},[374,1591,1592,1594,1596,1598],{"class":376,"line":423},[374,1593,695],{"class":643},[374,1595,698],{"class":643},[374,1597,702],{"class":701},[374,1599,705],{"class":380},[374,1601,1602,1604,1606,1608,1610],{"class":376,"line":436},[374,1603,710],{"class":380},[374,1605,713],{"class":701},[374,1607,716],{"class":380},[374,1609,719],{"class":701},[374,1611,722],{"class":380},[374,1613,1614],{"class":376,"line":447},[374,1615,727],{"class":380},[374,1617,1618],{"class":376,"line":453},[374,1619,732],{"class":380},[374,1621,1622,1624,1626],{"class":376,"line":461},[374,1623,737],{"class":380},[374,1625,740],{"class":394},[374,1627,743],{"class":380},[374,1629,1630],{"class":376,"line":474},[374,1631,748],{"class":380},[374,1633,1634],{"class":376,"line":487},[374,1635,450],{"class":380},[374,1637,1638],{"class":376,"line":500},[374,1639,757],{"class":380},[1510,1641,1642,1643,1646,1647,1650,1651,1654],{},"The ",[371,1644,1645],{},"environments.client"," configuration tells Vite which file to use as the browser entry point. Nitro automatically detects the server entry from files named ",[371,1648,1649],{},"entry-server"," or ",[371,1652,1653],{},"server"," in common directories.",[1514,1656,1658],{"id":1657},"_2-create-the-app-component","2. Create the App Component",[1510,1660,1661],{},"Create a shared React component that runs on both server and client:",[364,1663,1664],{"className":760,"code":761,"filename":762,"language":763,"meta":5,"style":5},[371,1665,1666,1678,1682,1692,1716,1722,1726,1744,1780,1784,1788],{"__ignoreMap":5},[374,1667,1668,1670,1672,1674,1676],{"class":376,"line":377},[374,1669,644],{"class":643},[374,1671,772],{"class":380},[374,1673,650],{"class":643},[374,1675,777],{"class":394},[374,1677,656],{"class":380},[374,1679,1680],{"class":376,"line":384},[374,1681,690],{"emptyLinePlaceholder":689},[374,1683,1684,1686,1688,1690],{"class":376,"line":401},[374,1685,695],{"class":643},[374,1687,790],{"class":643},[374,1689,793],{"class":701},[374,1691,796],{"class":380},[374,1693,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714],{"class":376,"line":410},[374,1695,801],{"class":643},[374,1697,804],{"class":380},[374,1699,807],{"class":387},[374,1701,810],{"class":380},[374,1703,813],{"class":387},[374,1705,816],{"class":380},[374,1707,819],{"class":643},[374,1709,822],{"class":701},[374,1711,825],{"class":380},[374,1713,828],{"class":387},[374,1715,831],{"class":380},[374,1717,1718,1720],{"class":376,"line":423},[374,1719,836],{"class":643},[374,1721,839],{"class":380},[374,1723,1724],{"class":376,"line":436},[374,1725,844],{"class":380},[374,1727,1728,1730,1732,1734,1736,1738,1740,1742],{"class":376,"line":447},[374,1729,849],{"class":380},[374,1731,853],{"class":852},[374,1733,856],{"class":701},[374,1735,819],{"class":643},[374,1737,861],{"class":394},[374,1739,864],{"class":380},[374,1741,853],{"class":852},[374,1743,869],{"class":380},[374,1745,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778],{"class":376,"line":453},[374,1747,849],{"class":380},[374,1749,876],{"class":852},[374,1751,879],{"class":701},[374,1753,819],{"class":643},[374,1755,884],{"class":380},[374,1757,887],{"class":643},[374,1759,890],{"class":701},[374,1761,893],{"class":380},[374,1763,897],{"class":896},[374,1765,900],{"class":380},[374,1767,887],{"class":643},[374,1769,905],{"class":380},[374,1771,908],{"class":643},[374,1773,911],{"class":387},[374,1775,914],{"class":380},[374,1777,876],{"class":852},[374,1779,869],{"class":380},[374,1781,1782],{"class":376,"line":461},[374,1783,923],{"class":380},[374,1785,1786],{"class":376,"line":474},[374,1787,928],{"class":380},[374,1789,1790],{"class":376,"line":487},[374,1791,571],{"class":380},[1514,1793,1795],{"id":1794},"_3-create-the-server-entry","3. Create the Server Entry",[1510,1797,1798,1799,1802],{},"The server entry renders your React app to a streaming HTML response. It uses ",[371,1800,1801],{},"react-dom/server.edge"," for edge-compatible streaming:",[364,1804,1805],{"className":760,"code":1013,"filename":362,"language":763,"meta":5,"style":5},[371,1806,1807,1815,1827,1839,1843,1855,1867,1871,1879,1895,1909,1919,1927,1941,1949,1969,1989,2013,2017,2037,2061,2065,2083,2091,2105,2113,2121,2129,2133,2145,2149,2153],{"__ignoreMap":5},[374,1808,1809,1811,1813],{"class":376,"line":377},[374,1810,644],{"class":643},[374,1812,1022],{"class":394},[374,1814,656],{"class":380},[374,1816,1817,1819,1821,1823,1825],{"class":376,"line":384},[374,1818,644],{"class":643},[374,1820,1031],{"class":380},[374,1822,650],{"class":643},[374,1824,1036],{"class":394},[374,1826,656],{"class":380},[374,1828,1829,1831,1833,1835,1837],{"class":376,"line":401},[374,1830,644],{"class":643},[374,1832,968],{"class":380},[374,1834,650],{"class":643},[374,1836,973],{"class":394},[374,1838,656],{"class":380},[374,1840,1841],{"class":376,"line":410},[374,1842,690],{"emptyLinePlaceholder":689},[374,1844,1845,1847,1849,1851,1853],{"class":376,"line":423},[374,1846,644],{"class":643},[374,1848,1061],{"class":380},[374,1850,650],{"class":643},[374,1852,1066],{"class":394},[374,1854,656],{"class":380},[374,1856,1857,1859,1861,1863,1865],{"class":376,"line":436},[374,1858,644],{"class":643},[374,1860,1075],{"class":380},[374,1862,650],{"class":643},[374,1864,1080],{"class":394},[374,1866,656],{"class":380},[374,1868,1869],{"class":376,"line":447},[374,1870,690],{"emptyLinePlaceholder":689},[374,1872,1873,1875,1877],{"class":376,"line":453},[374,1874,695],{"class":643},[374,1876,698],{"class":643},[374,1878,1095],{"class":380},[374,1880,1881,1883,1885,1887,1889,1891,1893],{"class":376,"line":461},[374,1882,1100],{"class":643},[374,1884,1103],{"class":701},[374,1886,825],{"class":380},[374,1888,1108],{"class":896},[374,1890,1111],{"class":643},[374,1892,1114],{"class":701},[374,1894,1117],{"class":380},[374,1896,1897,1899,1901,1903,1905,1907],{"class":376,"line":474},[374,1898,1122],{"class":643},[374,1900,1125],{"class":387},[374,1902,1128],{"class":643},[374,1904,1131],{"class":380},[374,1906,1134],{"class":701},[374,1908,1137],{"class":380},[374,1910,1911,1913,1915,1917],{"class":376,"line":487},[374,1912,1142],{"class":643},[374,1914,1145],{"class":643},[374,1916,1148],{"class":701},[374,1918,1151],{"class":380},[374,1920,1921,1923,1925],{"class":376,"line":500},[374,1922,1156],{"class":643},[374,1924,1159],{"class":701},[374,1926,1151],{"class":380},[374,1928,1929,1931,1933,1935,1937,1939],{"class":376,"line":513},[374,1930,1166],{"class":380},[374,1932,1169],{"class":852},[374,1934,1172],{"class":701},[374,1936,819],{"class":643},[374,1938,1177],{"class":394},[374,1940,869],{"class":380},[374,1942,1943,1945,1947],{"class":376,"line":526},[374,1944,1184],{"class":380},[374,1946,1187],{"class":852},[374,1948,869],{"class":380},[374,1950,1951,1953,1955,1957,1959,1961,1963,1965,1967],{"class":376,"line":538},[374,1952,1194],{"class":380},[374,1954,1197],{"class":852},[374,1956,1200],{"class":701},[374,1958,819],{"class":643},[374,1960,1205],{"class":394},[374,1962,1208],{"class":701},[374,1964,819],{"class":643},[374,1966,1213],{"class":394},[374,1968,1216],{"class":380},[374,1970,1971,1973,1975,1977,1979,1981,1983,1985,1987],{"class":376,"line":551},[374,1972,1221],{"class":380},[374,1974,1224],{"class":701},[374,1976,893],{"class":380},[374,1978,1229],{"class":896},[374,1980,1111],{"class":643},[374,1982,1234],{"class":387},[374,1984,900],{"class":380},[374,1986,887],{"class":643},[374,1988,839],{"class":380},[374,1990,1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011],{"class":376,"line":562},[374,1992,1245],{"class":380},[374,1994,1248],{"class":852},[374,1996,1251],{"class":701},[374,1998,819],{"class":643},[374,2000,1256],{"class":380},[374,2002,1259],{"class":701},[374,2004,819],{"class":643},[374,2006,1264],{"class":394},[374,2008,1267],{"class":380},[374,2010,1270],{"class":643},[374,2012,1273],{"class":380},[374,2014,2015],{"class":376,"line":568},[374,2016,1278],{"class":380},[374,2018,2019,2021,2023,2025,2027,2029,2031,2033,2035],{"class":376,"line":1281},[374,2020,1284],{"class":380},[374,2022,1224],{"class":701},[374,2024,893],{"class":380},[374,2026,1229],{"class":896},[374,2028,1111],{"class":643},[374,2030,1234],{"class":387},[374,2032,900],{"class":380},[374,2034,887],{"class":643},[374,2036,839],{"class":380},[374,2038,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059],{"class":376,"line":1303},[374,2040,1245],{"class":380},[374,2042,1248],{"class":852},[374,2044,1251],{"class":701},[374,2046,819],{"class":643},[374,2048,1256],{"class":380},[374,2050,1316],{"class":701},[374,2052,819],{"class":643},[374,2054,1321],{"class":394},[374,2056,1267],{"class":380},[374,2058,1270],{"class":643},[374,2060,1273],{"class":380},[374,2062,2063],{"class":376,"line":1330},[374,2064,1278],{"class":380},[374,2066,2067,2069,2071,2073,2075,2077,2079,2081],{"class":376,"line":1335},[374,2068,1194],{"class":380},[374,2070,1340],{"class":852},[374,2072,1343],{"class":701},[374,2074,819],{"class":643},[374,2076,395],{"class":394},[374,2078,1350],{"class":701},[374,2080,819],{"class":643},[374,2082,1355],{"class":380},[374,2084,2085,2087,2089],{"class":376,"line":1358},[374,2086,1361],{"class":380},[374,2088,1187],{"class":852},[374,2090,869],{"class":380},[374,2092,2093,2095,2097,2099,2101,2103],{"class":376,"line":1368},[374,2094,1184],{"class":380},[374,2096,1373],{"class":852},[374,2098,1376],{"class":701},[374,2100,819],{"class":643},[374,2102,1381],{"class":394},[374,2104,869],{"class":380},[374,2106,2107,2109,2111],{"class":376,"line":1386},[374,2108,1194],{"class":380},[374,2110,1007],{"class":387},[374,2112,1216],{"class":380},[374,2114,2115,2117,2119],{"class":376,"line":1395},[374,2116,1361],{"class":380},[374,2118,1373],{"class":852},[374,2120,869],{"class":380},[374,2122,2123,2125,2127],{"class":376,"line":1404},[374,2124,1407],{"class":380},[374,2126,1169],{"class":852},[374,2128,869],{"class":380},[374,2130,2131],{"class":376,"line":1414},[374,2132,1417],{"class":380},[374,2134,2135,2137,2139,2141,2143],{"class":376,"line":1420},[374,2136,1423],{"class":380},[374,2138,1426],{"class":394},[374,2140,391],{"class":380},[374,2142,1431],{"class":394},[374,2144,1434],{"class":380},[374,2146,2147],{"class":376,"line":1437},[374,2148,1440],{"class":380},[374,2150,2151],{"class":376,"line":1443},[374,2152,450],{"class":380},[374,2154,2155],{"class":376,"line":1448},[374,2156,1451],{"class":380},[1510,2158,2159,2160,2163,2164,2167,2168,2171,2172,2175,2176,2179],{},"Import assets using the ",[371,2161,2162],{},"?assets=client"," and ",[371,2165,2166],{},"?assets=ssr"," query parameters. Nitro collects CSS and JS assets from each entry point, and ",[371,2169,2170],{},"merge()"," combines them into a single manifest. The ",[371,2173,2174],{},"assets"," object provides arrays of stylesheet and script attributes, plus the client entry URL. Use ",[371,2177,2178],{},"renderToReadableStream"," to stream HTML as React renders, improving time-to-first-byte.",[1514,2181,2183],{"id":2182},"_4-create-the-client-entry","4. Create the Client Entry",[1510,2185,2186],{},"The client entry hydrates the server-rendered HTML, attaching React's event handlers:",[364,2188,2189],{"className":760,"code":935,"filename":936,"language":763,"meta":5,"style":5},[371,2190,2191,2199,2211,2223,2227],{"__ignoreMap":5},[374,2192,2193,2195,2197],{"class":376,"line":377},[374,2194,644],{"class":643},[374,2196,945],{"class":394},[374,2198,656],{"class":380},[374,2200,2201,2203,2205,2207,2209],{"class":376,"line":384},[374,2202,644],{"class":643},[374,2204,954],{"class":380},[374,2206,650],{"class":643},[374,2208,959],{"class":394},[374,2210,656],{"class":380},[374,2212,2213,2215,2217,2219,2221],{"class":376,"line":401},[374,2214,644],{"class":643},[374,2216,968],{"class":380},[374,2218,650],{"class":643},[374,2220,973],{"class":394},[374,2222,656],{"class":380},[374,2224,2225],{"class":376,"line":410},[374,2226,690],{"emptyLinePlaceholder":689},[374,2228,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247],{"class":376,"line":423},[374,2230,984],{"class":701},[374,2232,987],{"class":380},[374,2234,990],{"class":701},[374,2236,825],{"class":380},[374,2238,995],{"class":394},[374,2240,998],{"class":380},[374,2242,1001],{"class":643},[374,2244,1004],{"class":380},[374,2246,1007],{"class":387},[374,2248,1010],{"class":380},[1510,2250,1642,2251,2254,2255,2257],{},[371,2252,2253],{},"@vitejs/plugin-react/preamble"," import is required for React Fast Refresh during development. The ",[371,2256,984],{}," function attaches React to the existing server-rendered DOM without re-rendering it.",[1514,2259,2261],{"id":2260},"learn-more","Learn More",[2263,2264,2265,2271],"ul",{},[2266,2267,2268],"li",{},[2269,2270,18],"a",{"href":19},[2266,2272,2273],{},[2269,2274,58],{"href":59},[2276,2277,2278],"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":2280},[2281,2282,2283,2284,2285,2286],{"id":1516,"depth":384,"text":1517},{"id":1537,"depth":384,"text":1538},{"id":1657,"depth":384,"text":1658},{"id":1794,"depth":384,"text":1795},{"id":2182,"depth":384,"text":2183},{"id":2260,"depth":384,"text":2261},"md","i-logos-react",{"automd":689},{},{"title":326,"description":327},"examples/vite-ssr-react/README","YRhBVx9WYCzJC7DoeWuLhzIqbojsk5BDL4Q8-IoVnVw",[2295,2298],{"title":322,"path":2296,"stem":2297,"description":323,"children":-1},"/examples/vite-ssr-preact","examples/vite-ssr-preact/README",{"title":330,"path":2299,"stem":2300,"description":331,"children":-1},"/examples/vite-ssr-solid","examples/vite-ssr-solid/README",1771523835651]