Enable windowHistorySupport by default#60557
Conversation
|
In this stack: This stack of pull requests is managed by Graphite. Learn more about stacking. Join @timneutkens and the rest of your teammates on |
Stats from current PRDefault Build (Increase detected
|
| vercel/next.js canary | vercel/next.js 01-12-Enable_windowHistorySupport_by_default | Change | |
|---|---|---|---|
| buildDuration | 13s | 12.9s | N/A |
| buildDurationCached | 7.2s | 6.3s | N/A |
| nodeModulesSize | 200 MB | 200 MB | N/A |
| nextStartRea..uration (ms) | 426ms | 437ms | N/A |
Client Bundles (main, webpack) Overall increase ⚠️
| vercel/next.js canary | vercel/next.js 01-12-Enable_windowHistorySupport_by_default | Change | |
|---|---|---|---|
| 193.HASH.js gzip | 181 B | 182 B | N/A |
| 3f784ff6-HASH.js gzip | 53.3 kB | 53.3 kB | N/A |
| 433-HASH.js gzip | 28.6 kB | 28.7 kB | |
| framework-HASH.js gzip | 45.2 kB | 45.2 kB | ✓ |
| main-app-HASH.js gzip | 241 B | 242 B | N/A |
| main-HASH.js gzip | 31.8 kB | 31.8 kB | N/A |
| webpack-HASH.js gzip | 1.7 kB | 1.7 kB | N/A |
| Overall change | 73.8 kB | 74 kB |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | vercel/next.js 01-12-Enable_windowHistorySupport_by_default | Change | |
|---|---|---|---|
| polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | vercel/next.js 01-12-Enable_windowHistorySupport_by_default | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 194 B | 195 B | N/A |
| _error-HASH.js gzip | 183 B | 181 B | N/A |
| amp-HASH.js gzip | 504 B | 502 B | N/A |
| css-HASH.js gzip | 321 B | 321 B | ✓ |
| dynamic-HASH.js gzip | 2.5 kB | 2.5 kB | N/A |
| edge-ssr-HASH.js gzip | 255 B | 253 B | N/A |
| head-HASH.js gzip | 350 B | 349 B | N/A |
| hooks-HASH.js gzip | 369 B | 369 B | ✓ |
| image-HASH.js gzip | 4.28 kB | 4.28 kB | N/A |
| index-HASH.js gzip | 255 B | 256 B | N/A |
| link-HASH.js gzip | 2.61 kB | 2.61 kB | ✓ |
| routerDirect..HASH.js gzip | 312 B | 311 B | N/A |
| script-HASH.js gzip | 385 B | 383 B | N/A |
| withRouter-HASH.js gzip | 307 B | 308 B | N/A |
| 1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
| Overall change | 3.4 kB | 3.4 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | vercel/next.js 01-12-Enable_windowHistorySupport_by_default | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 483 B | 484 B | N/A |
| Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | vercel/next.js 01-12-Enable_windowHistorySupport_by_default | Change | |
|---|---|---|---|
| index.html gzip | 529 B | 527 B | N/A |
| link.html gzip | 541 B | 540 B | N/A |
| withRouter.html gzip | 524 B | 522 B | N/A |
| Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size Overall increase ⚠️
| vercel/next.js canary | vercel/next.js 01-12-Enable_windowHistorySupport_by_default | Change | |
|---|---|---|---|
| edge-ssr.js gzip | 93.8 kB | 93.8 kB | N/A |
| page.js gzip | 148 kB | 148 kB | |
| Overall change | 148 kB | 148 kB |
Middleware size
| vercel/next.js canary | vercel/next.js 01-12-Enable_windowHistorySupport_by_default | Change | |
|---|---|---|---|
| middleware-b..fest.js gzip | 623 B | 624 B | N/A |
| middleware-r..fest.js gzip | 151 B | 151 B | ✓ |
| middleware.js gzip | 37.5 kB | 37.5 kB | N/A |
| edge-runtime..pack.js gzip | 1.92 kB | 1.92 kB | ✓ |
| Overall change | 2.07 kB | 2.07 kB | ✓ |
Next Runtimes
| vercel/next.js canary | vercel/next.js 01-12-Enable_windowHistorySupport_by_default | Change | |
|---|---|---|---|
| app-page-exp...dev.js gzip | 169 kB | 169 kB | ✓ |
| app-page-exp..prod.js gzip | 95.2 kB | 95.2 kB | ✓ |
| app-page-tur..prod.js gzip | 95.9 kB | 95.9 kB | ✓ |
| app-page-tur..prod.js gzip | 90.5 kB | 90.5 kB | ✓ |
| app-page.run...dev.js gzip | 142 kB | 142 kB | ✓ |
| app-page.run..prod.js gzip | 89.8 kB | 89.8 kB | ✓ |
| app-route-ex...dev.js gzip | 24.1 kB | 24.1 kB | ✓ |
| app-route-ex..prod.js gzip | 16.7 kB | 16.7 kB | ✓ |
| app-route-tu..prod.js gzip | 16.7 kB | 16.7 kB | ✓ |
| app-route-tu..prod.js gzip | 16.3 kB | 16.3 kB | ✓ |
| app-route.ru...dev.js gzip | 23.5 kB | 23.5 kB | ✓ |
| app-route.ru..prod.js gzip | 16.3 kB | 16.3 kB | ✓ |
| pages-api-tu..prod.js gzip | 9.38 kB | 9.38 kB | ✓ |
| pages-api.ru...dev.js gzip | 9.65 kB | 9.65 kB | ✓ |
| pages-api.ru..prod.js gzip | 9.37 kB | 9.37 kB | ✓ |
| pages-turbo...prod.js gzip | 21.9 kB | 21.9 kB | ✓ |
| pages.runtim...dev.js gzip | 22.5 kB | 22.5 kB | ✓ |
| pages.runtim..prod.js gzip | 21.9 kB | 21.9 kB | ✓ |
| server.runti..prod.js gzip | 49.6 kB | 49.6 kB | ✓ |
| Overall change | 940 kB | 940 kB | ✓ |
Diff details
Diff for page.js
Diff too large to display
Diff for edge-ssr.js
Diff too large to display
Diff for 433-HASH.js
Diff too large to display
Tests Passed |
| dispatch({ | ||
| type: ACTION_RESTORE, | ||
| url: new URL(url ?? href, href), | ||
| tree: window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE, |
There was a problem hiding this comment.
@timneutkens after upgrading from 14.0.4 to 14.1.0 I'm seeing errors from this line when using Microsoft's @azure/msal-browser with NextJS. Specifically the error is:
null is not an object (evaluating 'window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE')
The flow that causes the error is that Microsoft has just redirected a user to my site with a hash in the URL, and the client code on my site (via the @azure/msal-browser package) is trying to remove the hash from the URL. Specifically, this line is being called:
I have a patch locally that "fixes" this by adding if (window.history.state == null) return; directly above startTransition(() => { ... a couple of lines above here, but I don't understand Next.js's internals well enough to know if that's the right fix. I can submit a PR with it if you think it is.
❤️ for all your work on Next.js.

What?
Enables
experimental.windowHistorySupportby default. It has been in experimental for quite a while now and has been successfully dogfooded in vercel.com as well.Closes NEXT-2076
Closes NEXT-1773