cloudflare/vinext

Parallel routes: nested slot resolution falls back to `default.tsx` instead of matched page

Closed

#1,339 opened on May 20, 2026

 (1 comment) (0 reactions) (0 assignees)TypeScript (371 forks)github user discovery
adapter-api-e2ehelp wanted

Repository metrics

Stars
 (8,563 stars)
PR merge metrics
 (Avg merge 1d 1h) (462 merged PRs in 30d)

Description

This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext main vs Next.js v16.2.6, 2026-05-20).

Problem

Parallel route slots render default.tsx content ("default page") instead of the matched page content. In some cases, routes with parallel slots render the not-found page entirely, suggesting the slot resolution fails to find any matching page.

The catch-all slot matching logic does not account for slot-specific route segments, especially within route groups.

Expected: "Hello from Nested"
Received: "default page"

TIMED OUT: /Catcher/
  This page could not be found

Estimated Impact

~10 test failures across the deploy suite.

Affected Test Suites

  • test/e2e/app-dir/parallel-routes-layouts/parallel-routes-layouts.test.ts
  • test/e2e/app-dir/parallel-routes-catchall-groups/parallel-routes-catchall-groups.test.ts
  • test/e2e/app-dir/parallel-routes-catchall-default/parallel-routes-catchall-default.test.ts
  • test/e2e/app-dir/parallel-routes-catchall-specificity/parallel-routes-catchall-specificity.test.ts
  • test/e2e/app-dir/parallel-routes-catchall-dynamic-segment/parallel-routes-catchall-dynamic-segment.test.ts
  • test/e2e/app-dir/parallel-routes-generate-static-params/parallel-routes-generate-static-params.test.ts
  • test/e2e/app-dir/parallel-routes-group-depth/parallel-routes-group-depth.test.ts
  • test/e2e/app-dir/parallel-routes-root-param-dynamic-child/parallel-routes-root-param-dynamic-child.test.ts

Recommendation

  1. Reproduce first in vinext's own test suite. Add a test with nested parallel routes (e.g., a @slot with pages at different depths) and verify the correct page renders instead of default.tsx. Confirm it fails.

  2. Study Next.js parallel route resolution. Search .nextjs-ref/packages/next/src/server/ and .nextjs-ref/packages/next/src/client/ for how parallel route slots are resolved during navigation and SSR. Pay attention to catch-all matching within slots and route group handling.

  3. Fix routing/app-router.ts. The route scanner needs to properly resolve nested parallel route slots. When navigating to a path that matches a specific page within a slot, it should prefer that page over default.tsx. Catch-all routes within slots need proper specificity ordering.

Contributor guide