-
Notifications
You must be signed in to change notification settings - Fork 27k
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
Move root div to an app wrapper #31596
Conversation
This comment has been minimized.
This comment has been minimized.
Failing test suitesCommit: 3eb161c test/development/basic-basepath/hmr.test.ts
Expand output● basic HMR › Error Recovery › should show the error on all pages
● basic HMR › Error Recovery › should detect runtime errors on the module scope
● basic HMR › Error Recovery › should recover from errors in the render function
● basic HMR › Error Recovery › should recover after exporting an invalid page
● basic HMR › Error Recovery › should recover after a bad return from the render function
● basic HMR › Error Recovery › should recover after undefined exported as default
● basic HMR › Error Recovery › should recover from errors in getInitialProps in client
● basic HMR › Error Recovery › should recover after an error reported via SSR
test/integration/getserversideprops/test/index.test.js
Expand output● getServerSideProps › dev mode › should show error for invalid JSON returned from getStaticProps on CST
test/integration/image-component/default/test/index.test.js
Expand output● Image Component Tests › dev mode › should show missing src error
● Image Component Tests › dev mode › should show invalid src error
● Image Component Tests › dev mode › should show invalid src error when protocol-relative
● Image Component Tests › dev mode › should show error when string src and placeholder=blur and blurDataURL is missing
● Image Component Tests › dev mode › should show error when not numeric string width or height
● Image Component Tests › dev mode › should show error when static import and placeholder=blur and blurDataUrl is missing
|
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
buildDuration | 24.6s | 23.4s | -1.2s |
buildDurationCached | 4.5s | 4.5s | -22ms |
nodeModulesSize | 339 MB | 339 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 4.095 | 4.056 | -0.04 |
/ avg req/sec | 610.56 | 616.32 | +5.76 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 2.095 | 2.117 | |
/error-in-render avg req/sec | 1193.39 | 1181.1 |
Client Bundles (main, webpack, commons)
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
450.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42.2 kB | 42.2 kB | ✓ |
main-HASH.js gzip | 28.3 kB | 28.3 kB | ✓ |
webpack-HASH.js gzip | 1.45 kB | 1.45 kB | ✓ |
Overall change | 72.2 kB | 72.2 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.37 kB | 1.37 kB | ✓ |
_error-HASH.js gzip | 194 B | 194 B | ✓ |
amp-HASH.js gzip | 312 B | 312 B | ✓ |
css-HASH.js gzip | 327 B | 327 B | ✓ |
dynamic-HASH.js gzip | 2.38 kB | 2.38 kB | ✓ |
head-HASH.js gzip | 350 B | 350 B | ✓ |
hooks-HASH.js gzip | 635 B | 635 B | ✓ |
image-HASH.js gzip | 4.45 kB | 4.45 kB | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 1.87 kB | 1.87 kB | ✓ |
routerDirect..HASH.js gzip | 321 B | 321 B | ✓ |
script-HASH.js gzip | 383 B | 383 B | ✓ |
withRouter-HASH.js gzip | 318 B | 318 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 13.3 kB | 13.3 kB | ✓ |
Client Build Manifests
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
_buildManifest.js gzip | 460 B | 460 B | ✓ |
Overall change | 460 B | 460 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
index.html gzip | 523 B | 532 B | |
link.html gzip | 535 B | 545 B | |
withRouter.html gzip | 516 B | 526 B | |
Overall change | 1.57 kB | 1.6 kB |
Diffs
Diff for index.html
@@ -38,7 +38,7 @@
></script>
</head>
<body>
- <div id="__next">Hello world 👋</div>
+ <div id="__next" data-reactroot="">Hello world 👋</div>
<script id="__NEXT_DATA__" type="application/json">
{
"props": { "pageProps": {}, "__N_SSP": true },
Diff for link.html
@@ -38,7 +38,7 @@
></script>
</head>
<body>
- <div id="__next">
+ <div id="__next" data-reactroot="">
<div>
<h3>A Link page!</h3>
<a href="/">Go to /</a>
Diff for withRouter.html
@@ -38,7 +38,7 @@
></script>
</head>
<body>
- <div id="__next"><div>I use withRouter</div></div>
+ <div id="__next" data-reactroot=""><div>I use withRouter</div></div>
<script id="__NEXT_DATA__" type="application/json">
{
"props": { "pageProps": {}, "__N_SSP": true },
Default Build with SWC (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
buildDuration | 24.8s | 23.8s | -984ms |
buildDurationCached | 4.5s | 4.5s | -53ms |
nodeModulesSize | 339 MB | 339 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 3.916 | 3.772 | -0.14 |
/ avg req/sec | 638.36 | 662.73 | +24.37 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 2.006 | 1.94 | -0.07 |
/error-in-render avg req/sec | 1246.43 | 1288.86 | +42.43 |
Client Bundles (main, webpack, commons)
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
450.HASH.js gzip | 179 B | 179 B | ✓ |
framework-HASH.js gzip | 42.3 kB | 42.3 kB | ✓ |
main-HASH.js gzip | 28.6 kB | 28.6 kB | ✓ |
webpack-HASH.js gzip | 1.44 kB | 1.44 kB | ✓ |
Overall change | 72.5 kB | 72.5 kB | ✓ |
Legacy Client Bundles (polyfills)
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31 kB | 31 kB | ✓ |
Overall change | 31 kB | 31 kB | ✓ |
Client Pages
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.35 kB | 1.35 kB | ✓ |
_error-HASH.js gzip | 180 B | 180 B | ✓ |
amp-HASH.js gzip | 305 B | 305 B | ✓ |
css-HASH.js gzip | 321 B | 321 B | ✓ |
dynamic-HASH.js gzip | 2.38 kB | 2.38 kB | ✓ |
head-HASH.js gzip | 342 B | 342 B | ✓ |
hooks-HASH.js gzip | 622 B | 622 B | ✓ |
image-HASH.js gzip | 4.47 kB | 4.47 kB | ✓ |
index-HASH.js gzip | 256 B | 256 B | ✓ |
link-HASH.js gzip | 1.91 kB | 1.91 kB | ✓ |
routerDirect..HASH.js gzip | 314 B | 314 B | ✓ |
script-HASH.js gzip | 375 B | 375 B | ✓ |
withRouter-HASH.js gzip | 309 B | 309 B | ✓ |
85e02e95b279..7e3.css gzip | 107 B | 107 B | ✓ |
Overall change | 13.2 kB | 13.2 kB | ✓ |
Client Build Manifests
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
_buildManifest.js gzip | 459 B | 459 B | ✓ |
Overall change | 459 B | 459 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | azukaru/next.js x-move-root-div | Change | |
---|---|---|---|
index.html gzip | 524 B | 532 B | |
link.html gzip | 535 B | 545 B | |
withRouter.html gzip | 517 B | 526 B | |
Overall change | 1.58 kB | 1.6 kB |
Diffs
Diff for index.html
@@ -38,7 +38,7 @@
></script>
</head>
<body>
- <div id="__next">Hello world 👋</div>
+ <div id="__next" data-reactroot="">Hello world 👋</div>
<script id="__NEXT_DATA__" type="application/json">
{
"props": { "pageProps": {}, "__N_SSP": true },
Diff for link.html
@@ -38,7 +38,7 @@
></script>
</head>
<body>
- <div id="__next">
+ <div id="__next" data-reactroot="">
<div>
<h3>A Link page!</h3>
<a href="/">Go to /</a>
Diff for withRouter.html
@@ -38,7 +38,7 @@
></script>
</head>
<body>
- <div id="__next"><div>I use withRouter</div></div>
+ <div id="__next" data-reactroot=""><div>I use withRouter</div></div>
<script id="__NEXT_DATA__" type="application/json">
{
"props": { "pageProps": {}, "__N_SSP": true },
Extracted from #31223.
We need to move the root
<div id="__next">
wrapper to be rendered as part of the page content, rather than theDocument
, so that flush effects (like styles) are flushed before (or after) the div, rather than inside, where they would cause hydration mismatches.