Skip to content

Commit

Permalink
Prevent unnecessary rsc reloads on navigation (#68049)
Browse files Browse the repository at this point in the history
In larger apps, when compilation can take time and endpoints are often
build concurrently, `endpoint_server_changed_subscribe`’s subscription
to turbotasks can result in unnecessary calls of the JS callback even
when turbotasks input has not changed.

This wraps subscribing to issues and diagnostics in
`endpoint_server_changed_subscribe` within a turbotasks function that
ensures that inputs are properly consistent (e.g. diagnostics have been
sorted and are value-equal) so this callback is not called unnecessary.

Test Plan: Navigate within a large app and verify
`serverComponentChanges` messages are not sent through the web socket
connection and the browser does not perform unnecessary fetch requests
to rsc endpoints.

### Turbopack Changes

* vercel/turborepo#8777 <!-- Tobias Koppers - merge
InProgressDirty into InProgress -->
* vercel/turborepo#8785 <!-- Tobias Koppers - fix
watcher bug with file creation -->
* vercel/turborepo#8793 <!-- Tobias Koppers - get
rid of notify-debouncer in favor of our own debouncing -->
* vercel/turborepo#8805 <!-- Tobias Koppers - impl
Ord for Diagnostics and Issue so they are sorted correctly -->

---------

Co-authored-by: Tobias Koppers <[email protected]>
  • Loading branch information
2 people authored and ForsakenHarmony committed Aug 15, 2024
1 parent ce58f48 commit 0abc29e
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 94 deletions.
98 changes: 37 additions & 61 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ swc_core = { version = "0.96.9", features = [
testing = { version = "0.36.0" }

# Turbo crates
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240718.2" }
turbopack-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240722.3" }
# [TODO]: need to refactor embed_directory! macro usages, as well as resolving turbo_tasks::function, macros..
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240718.2" }
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240722.3" }
# [TODO]: need to refactor embed_directory! macro usage in next-core
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240718.2" }
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-240722.3" }

# General Deps

Expand Down
Loading

0 comments on commit 0abc29e

Please sign in to comment.