Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

router.prefetch should not trigger a React update #75238

Merged
merged 1 commit into from
Jan 23, 2025

Conversation

acdlite
Copy link
Contributor

@acdlite acdlite commented Jan 23, 2025

The prefetch reducer doesn't actually modify any React state. It just writes to a mutable cache. So we shouldn't bother calling setState/dispatch; we can just re-run the reducer directly using the current state.

The prefetch reducer doesn't actually modify any React state. It just
writes to a mutable cache. So we shouldn't bother calling
setState/dispatch; we can just re-run the reducer directly using the
current state.
@acdlite acdlite requested a review from lubieowoce January 23, 2025 18:21
@ijjk ijjk added created-by: Next.js team PRs by the Next.js team. type: next labels Jan 23, 2025
@ijjk
Copy link
Member

ijjk commented Jan 23, 2025

Tests Passed

@ijjk
Copy link
Member

ijjk commented Jan 23, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
buildDuration 18.6s 15.1s N/A
buildDurationCached 14.2s 11.9s N/A
nodeModulesSize 419 MB 419 MB ⚠️ +148 kB
nextStartRea..uration (ms) 419ms 418ms N/A
Client Bundles (main, webpack)
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
5306-HASH.js gzip 54.1 kB 54.1 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.46 kB 5.46 kB N/A
bccd1874-HASH.js gzip 52.9 kB 52.9 kB N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 239 B 241 B N/A
main-HASH.js gzip 34.6 kB 34.6 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 0 B 0 B
Legacy Client Bundles (polyfills)
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.59 kB 4.58 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.35 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
_buildManifest.js gzip 748 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
index.html gzip 523 B 522 B N/A
link.html gzip 538 B 536 B N/A
withRouter.html gzip 519 B 519 B
Overall change 519 B 519 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
edge-ssr.js gzip 129 kB 129 kB N/A
page.js gzip 209 kB 210 kB ⚠️ +684 B
Overall change 209 kB 210 kB ⚠️ +684 B
Middleware size
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
middleware-b..fest.js gzip 669 B 667 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.3 kB 31.3 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes Overall increase ⚠️
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
274-experime...dev.js gzip 322 B 322 B
274.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 376 kB 378 kB ⚠️ +1.45 kB
app-page-exp..prod.js gzip 131 kB 132 kB ⚠️ +1.03 kB
app-page-tur..prod.js gzip 144 kB 145 kB ⚠️ +1.03 kB
app-page-tur..prod.js gzip 140 kB 141 kB ⚠️ +1.03 kB
app-page.run...dev.js gzip 364 kB 365 kB ⚠️ +1.48 kB
app-page.run..prod.js gzip 127 kB 128 kB ⚠️ +1.03 kB
app-route-ex...dev.js gzip 37.6 kB 37.6 kB
app-route-ex..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.4 kB 25.4 kB
app-route.ru...dev.js gzip 39.2 kB 39.2 kB
app-route.ru..prod.js gzip 25.4 kB 25.4 kB
pages-api-tu..prod.js gzip 9.69 kB 9.69 kB
pages-api.ru...dev.js gzip 11.6 kB 11.6 kB
pages-api.ru..prod.js gzip 9.68 kB 9.68 kB
pages-turbo...prod.js gzip 21.9 kB 21.9 kB
pages.runtim...dev.js gzip 27.7 kB 27.7 kB
pages.runtim..prod.js gzip 21.9 kB 21.9 kB
server.runti..prod.js gzip 916 kB 916 kB
Overall change 2.48 MB 2.49 MB ⚠️ +7.05 kB
build cache
vercel/next.js canary acdlite/next.js remove-prefetch-dispatch Change
0.pack gzip 2.11 MB 2.1 MB N/A
index.pack gzip 75.3 kB 74.9 kB N/A
Overall change 0 B 0 B
Diff details
Diff for 5306-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

Diff for app-page-exp..ntime.dev.js

Diff too large to display

Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page.runtime.dev.js

Diff too large to display

Diff for app-page.runtime.prod.js

Diff too large to display

Commit: 399c1de

@acdlite acdlite requested a review from huozhi January 23, 2025 18:39
@acdlite acdlite enabled auto-merge (squash) January 23, 2025 18:41
@acdlite acdlite merged commit f641c39 into vercel:canary Jan 23, 2025
108 checks passed
@github-actions github-actions bot added the locked label Feb 7, 2025
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 7, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants