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