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