{"record":{"id":"cea191f4b96c895c","repo":"vercel/next.js","slug":"invalid-url","errorCode":null,"errorMessage":"Invalid URL","messagePattern":"Invalid URL","errorType":"exception","errorClass":"Error","httpStatus":500,"severity":"error","filePath":"packages/next/src/server/app-render/app-render.tsx","lineNumber":3309,"sourceCode":"  serverComponentsHmrCache: ServerComponentsHmrCache | undefined,\n  sharedContext: AppSharedContext\n) => Promise<RenderResult<AppPageRenderResultMetadata>>\n\ntype AppPagePreparation = {\n  url: ReturnType<typeof parseRelativeUrl>\n  parsedRequestHeaders: ParsedRequestHeaders\n  interpolatedParams: Params\n  postponedState: PostponedState | null\n}\n\nfunction prepareAppPage(\n  req: BaseNextRequest,\n  pagePath: string,\n  fallbackRouteParams: OpaqueFallbackRouteParams | null,\n  renderOpts: RenderOpts\n): AppPagePreparation {\n  if (!req.url) {\n    throw new Error('Invalid URL')\n  }\n\n  const url = parseRelativeUrl(req.url, undefined, false)\n\n  // We read these values from the request object as, in certain cases,\n  // base-server will strip them to opt into different rendering behavior.\n  const parsedRequestHeaders = parseRequestHeaders(req.headers, {\n    isRoutePPREnabled: renderOpts.experimental.isRoutePPREnabled === true,\n    previewModeId: renderOpts.previewProps?.previewModeId,\n  })\n\n  const interpolatedParams = interpolateParallelRouteParams(\n    renderOpts.ComponentMod.routeModule.userland.loaderTree,\n    renderOpts.params ?? {},\n    pagePath,\n    fallbackRouteParams\n  )\n","sourceCodeStart":3291,"sourceCodeEnd":3327,"githubUrl":"https://github.com/vercel/next.js/blob/258b1c1bc05f7099816b88f70b7b3422b24a4b8d/packages/next/src/server/app-render/app-render.tsx#L3291-L3327","documentation":"Minimal input guard in prepareAppPage (app-render.tsx): before parsing, the incoming request is checked for a URL and req.url is falsy. App Router rendering needs a relative URL to parse into route params and search params; with none present this sentinel error fires — the fault is the malformed/incomplete request object handed to the renderer, not user code.","triggerScenarios":"Thrown at packages/next/src/server/app-render/app-render.tsx:3276 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the URL being parsed in your page/middleware; ensure it is an absolute, well-formed URL string.","Wrap `new URL(...)` input with a base URL (e.g. `new URL(path, 'http://localhost')`) when the input may be relative."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"258b1c1bc05f7099816b88f70b7b3422b24a4b8d","analyzedAt":"2026-08-19T02:10:13.922Z","contentChangedAt":"2026-08-19T02:10:13.922Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}