rsnext/packages
Jimmy Lai 00b1c49c2b
app router: fix scrolling behaviour for parallel routes (#48346)
This PR fixes issues where rendering a new parallel route would reset
the scroll state of the page. This would be very apparent if you
scrolled down the page and opened a modal in a parallel route.

After a bit of investigating, I found out that the scroll behaviour
worked like this:
- after a navigation, we say to the router that we should auto-scroll if
possible
- but we don't specify which node of the tree should scroll
- so what happened is that the first router node to run the auto-scroll
effect would steal the auto-scroll, even though it might have been
destined for another node

The fix consists of
- when we received the flight patch, we compute all new segment paths
that will be rendered and add them to the scroll ref
- when the router says that we should autoscroll, the autoscroll
components will now read those paths and compare them with their segment
path and if yes, they will autoscroll


<!-- Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible we request that
you follow the checklist sections below.
Choose the right checklist for the change(s) that you're making:

## For Contributors

### Improving Documentation or adding/fixing Examples

- The "examples guidelines" are followed from our contributing doc
https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md
- Make sure the linting passes by running `pnpm build && pnpm lint`. See
https://github.com/vercel/next.js/blob/canary/contributing/repository/linting.md

### Fixing a bug

- Related issues linked using `fixes #number`
- Tests added. See:
https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md

### Adding a feature

- Implements an existing feature request or RFC. Make sure the feature
request has been accepted for implementation before opening a PR. (A
discussion must be opened, see
https://github.com/vercel/next.js/discussions/new?category=ideas)
- Related issues/discussions are linked using `fixes #number`
- e2e tests added
(https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs
- Documentation added
- Telemetry added. In case of a feature if it's used or not.
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md



## For Maintainers

- Minimal description (aim for explaining to someone not on the team to
understand the PR)
- When linking to a Slack thread, you might want to share details of the
conclusion
- Link both the Linear (Fixes NEXT-xxx) and the GitHub issues
- Add review comments if necessary to explain to the reviewer the logic
behind a change

### What?

### Why?

### How?

Closes NEXT-
Fixes #

-->

link NEXT-974
2023-04-13 22:03:02 +02:00
..
create-next-app v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
eslint-config-next v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
eslint-plugin-next v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
font v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
next app router: fix scrolling behaviour for parallel routes (#48346) 2023-04-13 22:03:02 +02:00
next-bundle-analyzer v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
next-codemod v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
next-env v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
next-mdx v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
next-plugin-storybook v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
next-polyfill-module v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
next-polyfill-nomodule v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
next-swc refactor shared logic for turbopack-cli (#48307) 2023-04-13 14:54:34 +02:00
react-dev-overlay v13.3.1-canary.6 2023-04-13 01:22:55 +00:00
react-refresh-utils v13.3.1-canary.6 2023-04-13 01:22:55 +00:00