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