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

Ensure static 500 hydrates correctly with query #22468

Merged
merged 2 commits into from
Feb 23, 2021

Conversation

ijjk
Copy link
Member

@ijjk ijjk commented Feb 23, 2021

Follow-up to #22139 this ensures the default 500 error page hydrates with the correct statusCode prop when updating query values on the client since currently it will switch the 404 statusCode when one isn't present. An additional test case has been added to ensure this is handled correctly.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk
Copy link
Member Author

ijjk commented Feb 23, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
buildDuration 12s 12s -4ms
nodeModulesSize 42.6 MB 42.6 MB ⚠️ +1.02 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
/ failed reqs 0 0
/ total time (seconds) 2.316 2.359 ⚠️ +0.04
/ avg req/sec 1079.3 1059.93 ⚠️ -19.37
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.588 1.607 ⚠️ +0.02
/error-in-render avg req/sec 1574.3 1555.21 ⚠️ -19.09
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
677f882d2ed8..854c.js gzip 13.2 kB 13.3 kB ⚠️ +69 B
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.65 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 59.6 kB 59.6 kB ⚠️ +69 B
Legacy Client Bundles (polyfills)
vercel/next.js canary ijjk/next.js fix/static-500-query Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary ijjk/next.js fix/static-500-query Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
amp-e3e9bc99..932c.js gzip 536 B 536 B
hooks-5023ef..3670.js gzip 888 B 888 B
index-3a2b03..c677.js gzip 227 B 227 B
link-177412b..043e.js gzip 1.67 kB 1.67 kB
routerDirect..1a66.js gzip 303 B 303 B
withRouter-9..1b7d.js gzip 302 B 302 B
Overall change 8.66 kB 8.66 kB
Client Build Manifests
vercel/next.js canary ijjk/next.js fix/static-500-query Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary ijjk/next.js fix/static-500-query Change
index.html gzip 613 B 613 B
link.html gzip 620 B 619 B -1 B
withRouter.html gzip 608 B 607 B -1 B
Overall change 1.84 kB 1.84 kB -2 B

Diffs

Diff for 677f882d2ed8..7143b2168.js
@@ -1858,6 +1858,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                     shouldInterpolate,
                     interpolatedAs,
                     missingParams,
+                    _self$__NEXT_DATA__$p,
+                    _self$__NEXT_DATA__$p2,
                     routeInfo,
                     _routeInfo,
                     error,
@@ -2341,7 +2343,26 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
                             isValidShallowRoute =
                               options.shallow && this.route === route;
-                            _context.next = 115;
+
+                            if (
+                              options._h &&
+                              pathname === "/_error" &&
+                              ((_self$__NEXT_DATA__$p =
+                                self.__NEXT_DATA__.props) == null
+                                ? void 0
+                                : (_self$__NEXT_DATA__$p2 =
+                                    _self$__NEXT_DATA__$p.pageProps) == null
+                                ? void 0
+                                : _self$__NEXT_DATA__$p2.statusCode) === 500 &&
+                              props != null &&
+                              props.pageProps
+                            ) {
+                              // ensure statusCode is still correct for static 500 page
+                              // when updating query information
+                              props.pageProps.statusCode = 500;
+                            }
+
+                            _context.next = 116;
                             return this.set(
                               route,
                               pathname,
@@ -2360,9 +2381,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               else throw e;
                             });
 
-                          case 115:
+                          case 116:
                             if (!error) {
-                              _context.next = 118;
+                              _context.next = 119;
                               break;
                             }
 
@@ -2374,7 +2395,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             );
                             throw error;
 
-                          case 118:
+                          case 119:
                             if (false) {
                             }
 
@@ -2385,21 +2406,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             );
                             return _context.abrupt("return", true);
 
-                          case 123:
-                            _context.prev = 123;
+                          case 124:
+                            _context.prev = 124;
                             _context.t2 = _context["catch"](79);
 
                             if (!_context.t2.cancelled) {
-                              _context.next = 127;
+                              _context.next = 128;
                               break;
                             }
 
                             return _context.abrupt("return", false);
 
-                          case 127:
+                          case 128:
                             throw _context.t2;
 
-                          case 128:
+                          case 129:
                           case "end":
                             return _context.stop();
                         }
@@ -2409,7 +2430,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                     this,
                     [
                       [36, 46],
-                      [79, 123],
+                      [79, 124],
                       [97, 103]
                     ]
                   );
Diff for index.html
@@ -22,7 +22,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.7a8444d5b037143b2168.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b7aab3fe2ab2f1e56545.js"
       as="script"
     />
     <link
@@ -65,7 +65,7 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.7a8444d5b037143b2168.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b7aab3fe2ab2f1e56545.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -22,7 +22,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.7a8444d5b037143b2168.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b7aab3fe2ab2f1e56545.js"
       as="script"
     />
     <link
@@ -70,7 +70,7 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.7a8444d5b037143b2168.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b7aab3fe2ab2f1e56545.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -22,7 +22,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.7a8444d5b037143b2168.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b7aab3fe2ab2f1e56545.js"
       as="script"
     />
     <link
@@ -65,7 +65,7 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.7a8444d5b037143b2168.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b7aab3fe2ab2f1e56545.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
buildDuration 14.3s 14.3s ⚠️ +36ms
nodeModulesSize 42.6 MB 42.6 MB ⚠️ +1.02 kB
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
677f882d2ed8..854c.js gzip 13.2 kB N/A N/A
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.65 kB
webpack-HASH.js gzip 751 B 751 B
677f882d2ed8..db13.js gzip N/A 13.3 kB N/A
Overall change 59.6 kB 59.6 kB ⚠️ +69 B
Legacy Client Bundles (polyfills)
vercel/next.js canary ijjk/next.js fix/static-500-query Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary ijjk/next.js fix/static-500-query Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
amp-e3e9bc99..932c.js gzip 536 B 536 B
hooks-5023ef..3670.js gzip 888 B 888 B
index-3a2b03..c677.js gzip 227 B 227 B
link-177412b..043e.js gzip 1.67 kB 1.67 kB
routerDirect..1a66.js gzip 303 B 303 B
withRouter-9..1b7d.js gzip 302 B 302 B
Overall change 8.66 kB 8.66 kB
Client Build Manifests
vercel/next.js canary ijjk/next.js fix/static-500-query Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
_error.js 1.01 MB 1.01 MB
404.html 2.67 kB 2.67 kB
500.html 2.65 kB 2.65 kB
amp.amp.html 10.4 kB 10.4 kB
amp.html 1.86 kB 1.86 kB
hooks.html 1.92 kB 1.92 kB
index.js 1.01 MB 1.01 MB
link.js 1.06 MB 1.06 MB ⚠️ +500 B
routerDirect.js 1.06 MB 1.06 MB ⚠️ +500 B
withRouter.js 1.06 MB 1.06 MB ⚠️ +500 B
Overall change 5.21 MB 5.21 MB ⚠️ +1.5 kB

Webpack 5 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
buildDuration 14.2s 14.2s
nodeModulesSize 42.6 MB 42.6 MB ⚠️ +1.02 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
/ failed reqs 0 0
/ total time (seconds) 2.332 2.341 ⚠️ +0.01
/ avg req/sec 1072.01 1067.75 ⚠️ -4.26
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.579 1.614 ⚠️ +0.04
/error-in-render avg req/sec 1583.15 1548.75 ⚠️ -34.4
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
597-dc8125e2..ef24.js gzip 13.1 kB 13.2 kB ⚠️ +69 B
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 6.59 kB 6.59 kB
webpack-HASH.js gzip 954 B 954 B
Overall change 60 kB 60 kB ⚠️ +69 B
Legacy Client Bundles (polyfills)
vercel/next.js canary ijjk/next.js fix/static-500-query Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages
vercel/next.js canary ijjk/next.js fix/static-500-query Change
_app-aedc815..1421.js gzip 1.26 kB 1.26 kB
_error-71ec2..1a96.js gzip 3.38 kB 3.38 kB
amp-33a09cb0..6745.js gzip 536 B 536 B
hooks-4e968a..f870.js gzip 902 B 902 B
index-5c6845..f75c.js gzip 230 B 230 B
link-99f0c6c..b84a.js gzip 1.65 kB 1.65 kB
routerDirect..bb56.js gzip 306 B 306 B
withRouter-7..2133.js gzip 302 B 302 B
Overall change 8.57 kB 8.57 kB
Client Build Manifests
vercel/next.js canary ijjk/next.js fix/static-500-query Change
_buildManifest.js gzip 326 B 326 B
Overall change 326 B 326 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary ijjk/next.js fix/static-500-query Change
index.html gzip 585 B 587 B ⚠️ +2 B
link.html gzip 591 B 593 B ⚠️ +2 B
withRouter.html gzip 579 B 582 B ⚠️ +3 B
Overall change 1.75 kB 1.76 kB ⚠️ +7 B

Diffs

Diff for 677f882d2ed8..a6351854c.js

Diff too large to display

Diff for index.html
@@ -22,7 +22,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.66488b33a5ba6351854c.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.1ea7e9fd8a47d7a7db13.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "or0XPVdrBVZSmSQgWggtI",
+        "buildId": "28G2L1LKZzaWBO5WslO5V",
         "isFallback": false,
         "gip": true
       }
@@ -65,7 +65,7 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.66488b33a5ba6351854c.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.1ea7e9fd8a47d7a7db13.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/or0XPVdrBVZSmSQgWggtI/_buildManifest.js"
+      src="/_next/static/28G2L1LKZzaWBO5WslO5V/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/or0XPVdrBVZSmSQgWggtI/_ssgManifest.js"
+      src="/_next/static/28G2L1LKZzaWBO5WslO5V/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -22,7 +22,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.66488b33a5ba6351854c.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.1ea7e9fd8a47d7a7db13.js"
       as="script"
     />
     <link
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "or0XPVdrBVZSmSQgWggtI",
+        "buildId": "28G2L1LKZzaWBO5WslO5V",
         "isFallback": false,
         "gip": true
       }
@@ -70,7 +70,7 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.66488b33a5ba6351854c.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.1ea7e9fd8a47d7a7db13.js"
       async=""
     ></script>
     <script
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/or0XPVdrBVZSmSQgWggtI/_buildManifest.js"
+      src="/_next/static/28G2L1LKZzaWBO5WslO5V/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/or0XPVdrBVZSmSQgWggtI/_ssgManifest.js"
+      src="/_next/static/28G2L1LKZzaWBO5WslO5V/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -22,7 +22,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.66488b33a5ba6351854c.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.1ea7e9fd8a47d7a7db13.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "or0XPVdrBVZSmSQgWggtI",
+        "buildId": "28G2L1LKZzaWBO5WslO5V",
         "isFallback": false,
         "gip": true
       }
@@ -65,7 +65,7 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.66488b33a5ba6351854c.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.1ea7e9fd8a47d7a7db13.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/or0XPVdrBVZSmSQgWggtI/_buildManifest.js"
+      src="/_next/static/28G2L1LKZzaWBO5WslO5V/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/or0XPVdrBVZSmSQgWggtI/_ssgManifest.js"
+      src="/_next/static/28G2L1LKZzaWBO5WslO5V/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: 3bbaea5

This was referenced Mar 8, 2021
@vercel vercel locked as resolved and limited conversation to collaborators Jan 29, 2022
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.

2 participants