{"record":{"id":"1c01e8505bed1a17","repo":"remix-run/react-router","slug":"prerender-no-resolved-url-is-available-from-the-v","errorCode":null,"errorMessage":"Prerender: No resolved URL is available from the Vite preview server","messagePattern":"Prerender: No resolved URL is available from the Vite preview server","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/react-router-dev/vite/plugins/prerender.ts","lineNumber":571,"sourceCode":"      configFile: viteConfig.configFile,\n      logLevel: \"silent\",\n      preview: {\n        port: 0,\n        open: false,\n      },\n    });\n  } catch (error) {\n    throw new Error(\"Prerender: Failed to start Vite preview server\", {\n      cause: error,\n    });\n  }\n}\n\nfunction getResolvedUrl(previewServer: Vite.PreviewServer): URL {\n  const baseUrl = previewServer.resolvedUrls?.local[0];\n\n  if (!baseUrl) {\n    throw new Error(\n      \"Prerender: No resolved URL is available from the Vite preview server\",\n    );\n  }\n\n  return new URL(baseUrl);\n}\n","sourceCodeStart":553,"sourceCodeEnd":578,"githubUrl":"https://github.com/remix-run/react-router/blob/1fd704a7dabcbe3ae09d7387b460e6acaba30ec1/packages/react-router-dev/vite/plugins/prerender.ts#L553-L578","documentation":"Thrown by getResolvedUrl() when a Vite PreviewServer that started successfully nonetheless exposes no local resolved URL (previewServer.resolvedUrls?.local[0] is falsy). React Router needs that base URL to issue prerender requests, so it cannot proceed. It indicates the preview server came up in an unusual state rather than failing outright.","triggerScenarios":"vite.preview() resolved to a PreviewServer object whose resolvedUrls is undefined or whose local array is empty. This happens when Vite's preview server did not bind a local interface (e.g. host config forces a non-local binding that Vite classifies only as network, or a custom Vite version/plugin mutates resolvedUrls).","commonSituations":"A Vite version regression where resolvedUrls is populated asynchronously and read too early. Custom server.host config (e.g. host:'0.0.0.0' only) that omits a local entry. A preview plugin that overrides resolvedUrls. Mismatched @vitejs/* plugin versions against the installed Vite major.","solutions":["Check Vite version compatibility with your @react-router/dev version (peerDependencies) and align majors.","Remove or audit any custom `preview.host` / `server.host` overrides in vite.config that could suppress the local URL.","Reproduce with a bare `vite preview` and log `server.resolvedUrls` to confirm Vite itself populates local[0].","Disable third-party Vite plugins one by one to find one that mutates resolvedUrls.","Update @react-router/dev to a patch release that may read resolvedUrls more defensively."],"exampleFix":"// vite.config.ts — avoid forcing a host that drops the local URL\n// before\nexport default defineConfig({ server: { host: '0.0.0.0' }, preview: { host: '0.0.0.0' } });\n// after (let Vite bind local + network)\nexport default defineConfig({ server: { host: true }, preview: { host: true } });","handlingStrategy":"validation","validationCode":"import { createServer } from 'vite';\nconst preview = await (await import('vite')).preview({ /* same opts */ });\nconst hasLocalUrl = !!preview.resolvedUrls?.local?.[0];\nif (!hasLocalUrl) console.warn('Vite preview produced no local URL — check server.host/preview.host config.');","typeGuard":"function hasResolvedLocalUrl(s: { resolvedUrls?: { local?: Array<string | undefined> } }): boolean {\n  return !!s.resolvedUrls?.local?.[0];\n}","tryCatchPattern":"try { await runPrerender(); }\ncatch (e) {\n  if (e instanceof Error && /No resolved URL is available/.test(e.message)) {\n    // inspect vite.config preview.host/server.host and retry without forced host\n  }\n  throw e;\n}","preventionTips":["Avoid hard-setting preview.host/server.host to non-local addresses when prerendering.","Keep Vite major in sync with @react-router/dev.","Reproduce resolvedUrls locally with a standalone vite preview before debugging React Router."],"tags":["prerender","vite","preview-server","config"],"backgroundTag":null,"analyzedSha":"1fd704a7dabcbe3ae09d7387b460e6acaba30ec1","analyzedAt":"2026-08-12T13:54:57.804Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}