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