Files
80e849e152 fix(turbopack): --debug-build-paths fails with route groups (#89336)
Confirmed the fix locally on the original app I faced the issue with.

### Why?

When using `--debug-build-paths`, a pattern with a route group on
Turbopack, it fails with an error:

```
Error [PageNotFoundError]: Cannot find module for page: /nested
    at ignore-listed frames {
  code: 'ENOENT'
}
```

Current Behavior:
https://github.com/vercel/next.js/actions/runs/21544427008/job/62083680496?pr=89336#step:35:459

The bug lives in `crates/next-api/src/project.rs`, specifically in
`from_debug_build_paths()`. This function is responsible for deriving
route paths from debug build inputs, but it currently preserves route
groups when it shouldn’t.

With the current behavior, an input like `app/(group)/nested/page.tsx`
produces the output `/(group)/nested`. In other words, the route group
segment is kept in the generated path.

However, Turbopack route keys explicitly strip route groups. In
`next-core/src/next_app/mod.rs`, the conversion from `AppPage` to
`AppPath` removes route group segments. For the same input, Turbopack
expects the route key to be `/nested`, not `/(group)/nested`.

This mismatch causes a downstream failure. `from_debug_build_paths()`
produces `/(group)/nested`, while the Turbopack route key is `/nested`.
Since `should_include_app_route()` relies on an exact string match, the
comparison fails. As a result, the route is excluded, the module is
never compiled, and the error ultimately surfaces as a
`PageNotFoundError`.

### How?

Strip route group `(xxx)` and parallel route `@xxx` segments in
`from_debug_build_paths()` to match how Turbopack normalizes route keys.

---------

Co-authored-by: Niklas Mischkulnig <[email protected]>
2026-02-16 10:23:00 +01:00
..
…