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