Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: infinite dev reloads when parallel route is treated a page entry (…
…#52061) ### What? When there's a parallel route adjacent to a tree that has no page component, it's treated as an invalid entry in `handleAppPing` during dev HMR, which causes an infinite refresh cycle ### Why? In #51413, an update was made to `next-app-loader` to support layout files in parallel routes. Part of this change updated the parallel segment matching logic to mark the parallel page entry as `[ '@parallel', [ 'page$' ] ]` rather than `[ '@parallel', 'page$' ]`. This resulted in `handleAppPing` looking for the corresponding page entry at `client@app@/@parallel/page$/page` (note the `PAGE_SEGMENT` marker) rather than `client@app@/@parallel/page`, causing the path to be marked invalid on HMR pings, and triggering an endless fastRefresh. ### How? A simple patch to fix this would fix this is to update `getEntryKey` to replace any `PAGE_SEGMENT`'s that leak into the entry which I did in 59a972f. The other option that's currently implemented here is to only insert PAGE_SEGMENT as an array in the scenario where there isn't a page adjacent to the parallel segment. This is to ensure that the `parallelKey` is `children` rather than the `@parallel` slot when in [`createSubtreePropsFromSegmentPath`](https://github.com/vercel/next.js/blob/59a972f53339cf6e444e3bf5be45bf115a24c31a/packages/next/src/build/webpack/loaders/next-app-loader.ts#L298). This seems to not cause any regressions with the issue being fixed in 51413, and also solves this case, but I'm just not 100% sure if this might break another scenario that I'm not thinking of. Closes NEXT-1337 Fixes #51951
- Loading branch information