mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
### What? Introduces a null-rendering default component for interception routes to prevent 404 responses when children slots are missing. ### Why? When rendering interception routes like `(.)[id]`, there's a segment mismatch where the interception route lacks a children slot that the base `[id]` route has. **The Bug:** Previously, the framework injected a 404 page into the missing default slot for the children route. On platforms like Vercel, this caused full 404 RSC responses because the HTTP status code has semantic meaning for route behavior when using cache components. This resulted in the "unknown segment value fallback page" issue. **Impact:** - RSC requests for interception routes would return 404 status codes - Platform routing behavior was incorrectly triggered by these 404 responses - Only affects pages rendering with cache components ### How? - Created new `default-null.tsx` builtin component that renders `null` - Updated Rust code (`app_structure.rs`) to detect interception routes and use the null default - Updated webpack loader (`next-app-loader/index.ts`) to check `isInterceptionRouteAppPath()` and inject the null default - Removed test-specific default component that was working around this bug - The old `page.tsx` is still used during client navigation, so there's no visible change to users This ensures minimal RSC payload changes and prevents 404 status codes while maintaining existing client-side behavior. NAR-483
19 lines
689 B
TypeScript
19 lines
689 B
TypeScript
/**
|
|
* TEST CASE 5: Regular route (NO interception) WITH parallel routes but NO page.tsx
|
|
*
|
|
* Expected: REQUIRES default.tsx at regular-route level OR will 404
|
|
* Reason: This is NOT an interception route, so missing children should 404
|
|
* Currently uses PARALLEL_ROUTE_DEFAULT_PATH (calls notFound())
|
|
* This is the CORRECT behavior for non-interception routes
|
|
*/
|
|
export default function Page() {
|
|
return (
|
|
<div>
|
|
<h3>❌ TEST CASE 5: Regular route without default.tsx</h3>
|
|
<p>This is deeper/page.tsx</p>
|
|
<p>Parent has @sidebar but no page.tsx or default.tsx</p>
|
|
<p>Should 404 when navigating directly to /regular-route!</p>
|
|
</div>
|
|
)
|
|
}
|