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