Skip to content

Conversation

@okmttdhr
Copy link
Contributor

@okmttdhr okmttdhr commented Jan 16, 2021

  • Prevent infinite loop when _error render throws on client side

Fixes: #6973

@okmttdhr okmttdhr force-pushed the fix/infinite-error-rendering branch from 987dfb2 to 37a1ff6 Compare January 16, 2021 01:57
@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 9.1s 8.8s -283ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +520 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 1.797 1.832 ⚠️ +0.04
/ avg req/sec 1390.96 1364.78 ⚠️ -26.18
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.057 1.213 ⚠️ +0.16
/error-in-render avg req/sec 2365.95 2061.7 ⚠️ -304.25
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB 6.68 kB ⚠️ +49 B
webpack-50be..df5b.js gzip 751 B 751 B
Overall change 59.4 kB 59.5 kB ⚠️ +49 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 615 B 616 B ⚠️ +1 B
link.html gzip 620 B 621 B ⚠️ +1 B
withRouter.html gzip 608 B 609 B ⚠️ +1 B
Overall change 1.84 kB 1.85 kB ⚠️ +3 B

Diffs

Diff for main-82580de..1a0a14a04.js
@@ -867,12 +867,23 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+          // To prevent infinite `_error` rendering when `_error` throws on client side
+          var Component =
+            lastAppProps.Component === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -891,7 +902,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 10.5s 10.2s -298ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +520 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB N/A N/A
webpack-50be..df5b.js gzip 751 B 751 B
main-01ab3d0..1592.js gzip N/A 6.68 kB N/A
Overall change 59.4 kB 59.5 kB ⚠️ +49 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_error.js 1 MB 1 MB
404.html 2.67 kB 2.67 kB
hooks.html 1.92 kB 1.92 kB
index.js 1 MB 1 MB
link.js 1.06 MB 1.06 MB
routerDirect.js 1.05 MB 1.05 MB
withRouter.js 1.05 MB 1.05 MB
Overall change 5.18 MB 5.18 MB
Commit: 37a1ff6

@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Failing test suites

Commit: 37a1ff6

test/integration/build-output/test/index.test.js

  • Build Output > Basic Application Output > should not deviate from snapshot
Expand output

● Build Output › Basic Application Output › should not deviate from snapshot

expect(received).toBeCloseTo(expected, precision)

Expected: 63.5
Received: 63.6

Expected precision:    1
Expected difference: < 0.05
Received difference:   0.10000000000000142

  105 |       expect(err404FirstLoad.endsWith('kB')).toBe(true)
  106 | 
> 107 |       expect(parseFloat(sharedByAll)).toBeCloseTo(63.5, 1)
      |                                       ^
  108 |       expect(sharedByAll.endsWith('kB')).toBe(true)
  109 | 
  110 |       if (_appSize.endsWith('kB')) {

  at Object.<anonymous> (integration/build-output/test/index.test.js:107:39)

test/integration/render-error-on-module-error/test/index.test.js

  • Module Init Error > should render error page
Expand output

● Module Init Error › should render error page

NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"#error-p"}
  (Session info: headless chrome=87.0.4280.141)

  37 |     try {
  38 |       await waitFor(2000)
> 39 |       const text = await browser.elementByCss('#error-p').text()
     |                    ^
  40 |       expect(text).toBe('Error Rendered')
  41 |     } finally {
  42 |       await browser.close()

  at Object.throwDecodedError (../node_modules/selenium-webdriver/lib/error.js:550:15)
  at parseHttpResponse (../node_modules/selenium-webdriver/lib/http.js:565:13)
  at Executor.execute (../node_modules/selenium-webdriver/lib/http.js:491:26)
  at thenableWebDriverProxy.execute (../node_modules/selenium-webdriver/lib/webdriver.js:700:17)
  at Object.<anonymous> (integration/render-error-on-module-error/test/index.test.js:39:20)

@okmttdhr okmttdhr changed the title WIP fix: Prevent infinite loop in _error page WIP Prevent infinite loop in _error page Jan 16, 2021
@okmttdhr okmttdhr marked this pull request as draft January 16, 2021 02:40
@okmttdhr okmttdhr changed the title WIP Prevent infinite loop in _error page Prevent infinite loop in _error page Jan 16, 2021
@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Failing test suites

Commit: 8971690

test/integration/error-in-error-client/test/index.test.js

  • Handles an Error in _error > Handles error during client transition
Expand output

● Handles an Error in _error › Handles error during client transition

expect(received).toMatch(expected)

Expected pattern: /internal server error/i
Received string:  "<div id=\"__next\">An unexpected error has occurred</div><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":404}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"LeCD12PQy3-PPswb50yo2\",\"isFallback\":false,\"gip\":true}</script><script nomodule=\"\" src=\"/_next/static/chunks/polyfills-fcd1861c62e9a6431ae1.js\"></script><script src=\"/_next/static/chunks/main-ddc43efe34a744183c4c.js\" async=\"\"></script><script src=\"/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js\" async=\"\"></script><script src=\"/_next/static/chunks/framework.865bc7ae16ae6df48b3a.js\" async=\"\"></script><script src=\"/_next/static/chunks/commons.c9bab58b506de129356b.js\" async=\"\"></script><script src=\"/_next/static/chunks/pages/_app-fbb8a32e008518d89266.js\" async=\"\"></script><script src=\"/_next/static/chunks/pages/_error-80e644235e22e0095ba4.js\" async=\"\"></script><script src=\"/_next/static/LeCD12PQy3-PPswb50yo2/_buildManifest.js\" async=\"\"></script><script src=\"/_next/static/LeCD12PQy3-PPswb50yo2/_ssgManifest.js\" async=\"\"></script>"

  29 |     await waitFor(1000)
  30 |     const html = await browser.eval('document.body.innerHTML')
> 31 |     expect(html).toMatch(/internal server error/i)
     |                  ^
  32 |   })
  33 | })
  34 | 

  at Object.<anonymous> (integration/error-in-error-client/test/index.test.js:31:18)

test/integration/build-output/test/index.test.js

  • Build Output > Basic Application Output > should not deviate from snapshot
Expand output

● Build Output › Basic Application Output › should not deviate from snapshot

expect(received).toBeCloseTo(expected, precision)

Expected: 63.5
Received: 63.6

Expected precision:    1
Expected difference: < 0.05
Received difference:   0.10000000000000142

  105 |       expect(err404FirstLoad.endsWith('kB')).toBe(true)
  106 | 
> 107 |       expect(parseFloat(sharedByAll)).toBeCloseTo(63.5, 1)
      |                                       ^
  108 |       expect(sharedByAll.endsWith('kB')).toBe(true)
  109 | 
  110 |       if (_appSize.endsWith('kB')) {

  at Object.<anonymous> (integration/build-output/test/index.test.js:107:39)

@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 11.2s 11s -129ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +520 B
Page Load Tests Overall increase ✓
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.285 2.241 -0.04
/ avg req/sec 1093.88 1115.61 +21.73
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.562 1.569 ⚠️ +0.01
/error-in-render avg req/sec 1601.02 1593.58 ⚠️ -7.44
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB 6.68 kB ⚠️ +49 B
webpack-50be..df5b.js gzip 751 B 751 B
Overall change 59.4 kB 59.5 kB ⚠️ +49 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 615 B 616 B ⚠️ +1 B
link.html gzip 620 B 621 B ⚠️ +1 B
withRouter.html gzip 608 B 609 B ⚠️ +1 B
Overall change 1.84 kB 1.85 kB ⚠️ +3 B

Diffs

Diff for main-82580de..1a0a14a04.js
@@ -867,12 +867,23 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+          // To prevent infinite `_error` rendering when `_error` throws on client side
+          var Component =
+            lastAppProps.Component === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -891,7 +902,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 13.7s 13.6s -64ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +520 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB N/A N/A
webpack-50be..df5b.js gzip 751 B 751 B
main-01ab3d0..1592.js gzip N/A 6.68 kB N/A
Overall change 59.4 kB 59.5 kB ⚠️ +49 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_error.js 1 MB 1 MB
404.html 2.67 kB 2.67 kB
hooks.html 1.92 kB 1.92 kB
index.js 1 MB 1 MB
link.js 1.06 MB 1.06 MB
routerDirect.js 1.05 MB 1.05 MB
withRouter.js 1.05 MB 1.05 MB
Overall change 5.18 MB 5.18 MB
Commit: 8971690

@okmttdhr okmttdhr force-pushed the fix/infinite-error-rendering branch from 8971690 to 5bd4ba7 Compare January 16, 2021 04:01
@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 10.5s 10.3s -195ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +520 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.009 2.072 ⚠️ +0.06
/ avg req/sec 1244.29 1206.49 ⚠️ -37.8
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.303 1.282 -0.02
/error-in-render avg req/sec 1919.27 1950.7 +31.43
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB 6.68 kB ⚠️ +49 B
webpack-50be..df5b.js gzip 751 B 751 B
Overall change 59.4 kB 59.5 kB ⚠️ +49 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 615 B 616 B ⚠️ +1 B
link.html gzip 620 B 621 B ⚠️ +1 B
withRouter.html gzip 608 B 609 B ⚠️ +1 B
Overall change 1.84 kB 1.85 kB ⚠️ +3 B

Diffs

Diff for main-82580de..1a0a14a04.js
@@ -867,12 +867,23 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+          // To prevent infinite `_error` rendering when `_error` throws on client side
+          var Component =
+            lastAppProps.Component === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -891,7 +902,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 12.4s 12.3s -150ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +520 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB N/A N/A
webpack-50be..df5b.js gzip 751 B 751 B
main-01ab3d0..1592.js gzip N/A 6.68 kB N/A
Overall change 59.4 kB 59.5 kB ⚠️ +49 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_error.js 1 MB 1 MB
404.html 2.67 kB 2.67 kB
hooks.html 1.92 kB 1.92 kB
index.js 1 MB 1 MB
link.js 1.06 MB 1.06 MB
routerDirect.js 1.05 MB 1.05 MB
withRouter.js 1.05 MB 1.05 MB
Overall change 5.18 MB 5.18 MB
Commit: 5bd4ba7

@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Failing test suites

Commit: 5bd4ba7

test/integration/build-output/test/index.test.js

  • Build Output > Basic Application Output > should not deviate from snapshot
Expand output

● Build Output › Basic Application Output › should not deviate from snapshot

expect(received).toBeCloseTo(expected, precision)

Expected: 63.5
Received: 63.6

Expected precision:    1
Expected difference: < 0.05
Received difference:   0.10000000000000142

  105 |       expect(err404FirstLoad.endsWith('kB')).toBe(true)
  106 | 
> 107 |       expect(parseFloat(sharedByAll)).toBeCloseTo(63.5, 1)
      |                                       ^
  108 |       expect(sharedByAll.endsWith('kB')).toBe(true)
  109 | 
  110 |       if (_appSize.endsWith('kB')) {

  at Object.<anonymous> (integration/build-output/test/index.test.js:107:39)

test/integration/render-error-on-module-error/test/index.test.js

  • Module Init Error > should render error page
Expand output

● Module Init Error › should render error page

NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"#error-p"}
  (Session info: headless chrome=87.0.4280.141)

  37 |     try {
  38 |       await waitFor(2000)
> 39 |       const text = await browser.elementByCss('#error-p').text()
     |                    ^
  40 |       expect(text).toBe('Error Rendered')
  41 |     } finally {
  42 |       await browser.close()

  at Object.throwDecodedError (../node_modules/selenium-webdriver/lib/error.js:550:15)
  at parseHttpResponse (../node_modules/selenium-webdriver/lib/http.js:565:13)
  at Executor.execute (../node_modules/selenium-webdriver/lib/http.js:491:26)
  at thenableWebDriverProxy.execute (../node_modules/selenium-webdriver/lib/webdriver.js:700:17)
  at Object.<anonymous> (integration/render-error-on-module-error/test/index.test.js:39:20)

@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 8.8s 9s ⚠️ +156ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +520 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 1.7 1.744 ⚠️ +0.04
/ avg req/sec 1470.8 1433.34 ⚠️ -37.46
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.107 1.112 ⚠️ +0.01
/error-in-render avg req/sec 2259.22 2248.25 ⚠️ -10.97
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB 6.68 kB ⚠️ +49 B
webpack-50be..df5b.js gzip 751 B 751 B
Overall change 59.4 kB 59.5 kB ⚠️ +49 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 615 B 616 B ⚠️ +1 B
link.html gzip 620 B 621 B ⚠️ +1 B
withRouter.html gzip 608 B 609 B ⚠️ +1 B
Overall change 1.84 kB 1.85 kB ⚠️ +3 B

Diffs

Diff for main-82580de..1a0a14a04.js
@@ -867,12 +867,23 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+          // To prevent infinite `_error` rendering when `_error` throws on client side
+          var Component =
+            lastAppProps.Component === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -891,7 +902,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-ae4460cf6232151f8df3.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 10.5s 10.5s ⚠️ +56ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +520 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB N/A N/A
webpack-50be..df5b.js gzip 751 B 751 B
main-01ab3d0..1592.js gzip N/A 6.68 kB N/A
Overall change 59.4 kB 59.5 kB ⚠️ +49 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_error.js 1 MB 1 MB
404.html 2.67 kB 2.67 kB
hooks.html 1.92 kB 1.92 kB
index.js 1 MB 1 MB
link.js 1.06 MB 1.06 MB
routerDirect.js 1.05 MB 1.05 MB
withRouter.js 1.05 MB 1.05 MB
Overall change 5.18 MB 5.18 MB
Commit: 0211f3b

@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Failing test suites

Commit: 0211f3b

test/integration/build-output/test/index.test.js

  • Build Output > Basic Application Output > should not deviate from snapshot
Expand output

● Build Output › Basic Application Output › should not deviate from snapshot

expect(received).toBeCloseTo(expected, precision)

Expected: 63.5
Received: 63.6

Expected precision:    1
Expected difference: < 0.05
Received difference:   0.10000000000000142

  105 |       expect(err404FirstLoad.endsWith('kB')).toBe(true)
  106 | 
> 107 |       expect(parseFloat(sharedByAll)).toBeCloseTo(63.5, 1)
      |                                       ^
  108 |       expect(sharedByAll.endsWith('kB')).toBe(true)
  109 | 
  110 |       if (_appSize.endsWith('kB')) {

  at Object.<anonymous> (integration/build-output/test/index.test.js:107:39)

test/integration/render-error-on-module-error/test/index.test.js

  • Module Init Error > should render error page
Expand output

● Module Init Error › should render error page

expect(received).toMatch(expected)

Expected pattern: /An unexpected error has occurred/i
Received string:  "<div id=\"__next\">hi</div><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{}},\"page\":\"/\",\"query\":{},\"buildId\":\"TcJEkIq8sVABFVUWvbg2R\",\"isFallback\":false,\"customServer\":true,\"gip\":true}</script><script nomodule=\"\" src=\"/_next/static/chunks/polyfills-fcd1861c62e9a6431ae1.js\"></script><script src=\"/_next/static/chunks/main-ecc9d2a284402f2ff0a3.js\" async=\"\"></script><script src=\"/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js\" async=\"\"></script><script src=\"/_next/static/chunks/framework.826dc3c854ba5c312e90.js\" async=\"\"></script><script src=\"/_next/static/chunks/f6078781a05fe1bcb0902d23dbbb2662c8d200b3.32960c33ea03622af455.js\" async=\"\"></script><script src=\"/_next/static/chunks/pages/_app-ab13d454611e16424852.js\" async=\"\"></script><script src=\"/_next/static/chunks/pages/index-0056a107ae203d2072d3.js\" async=\"\"></script><script src=\"/_next/static/TcJEkIq8sVABFVUWvbg2R/_buildManifest.js\" async=\"\"></script><script src=\"/_next/static/TcJEkIq8sVABFVUWvbg2R/_ssgManifest.js\" async=\"\"></script><script src=\"/_next/static/chunks/pages/_error-87f0543ca116b61123c4.js\"></script>"

  39 | 
  40 |       const html = await browser.eval('document.body.innerHTML')
> 41 |       expect(html).toMatch(/An unexpected error has occurred/i)
     |                    ^
  42 | 
  43 |       const text = await browser.elementByCss('#error-p').text()
  44 |       expect(text).toBe('Error Rendered')

  at Object.<anonymous> (integration/render-error-on-module-error/test/index.test.js:41:20)

@okmttdhr okmttdhr force-pushed the fix/infinite-error-rendering branch from 0211f3b to f51c47e Compare January 16, 2021 05:41
@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 11.2s 11.1s -99ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +597 B
Page Load Tests Overall increase ✓
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.29 2.296 ⚠️ +0.01
/ avg req/sec 1091.65 1088.81 ⚠️ -2.84
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.605 1.585 -0.02
/error-in-render avg req/sec 1557.84 1576.89 +19.05
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB 6.69 kB ⚠️ +61 B
webpack-50be..df5b.js gzip 751 B 751 B
Overall change 59.4 kB 59.5 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 615 B 615 B
link.html gzip 620 B 622 B ⚠️ +2 B
withRouter.html gzip 608 B 608 B
Overall change 1.84 kB 1.84 kB ⚠️ +2 B

Diffs

Diff for main-82580de..1a0a14a04.js
@@ -867,12 +867,27 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+
+          var _lastAppProps; // To prevent infinite `_error` rendering when `_error` throws on client side
+
+          var Component =
+            ((_lastAppProps = lastAppProps) == null
+              ? void 0
+              : _lastAppProps.Component) === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -891,7 +906,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 13.1s 13.2s ⚠️ +144ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +597 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB N/A N/A
webpack-50be..df5b.js gzip 751 B 751 B
main-189af06..6436.js gzip N/A 6.69 kB N/A
Overall change 59.4 kB 59.5 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_error.js 1 MB 1 MB
404.html 2.67 kB 2.67 kB
hooks.html 1.92 kB 1.92 kB
index.js 1 MB 1 MB
link.js 1.06 MB 1.06 MB
routerDirect.js 1.05 MB 1.05 MB
withRouter.js 1.05 MB 1.05 MB
Overall change 5.18 MB 5.18 MB
Commit: f51c47e

@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Failing test suites

Commit: f51c47e

test/integration/build-output/test/index.test.js

  • Build Output > Basic Application Output > should not deviate from snapshot
Expand output

● Build Output › Basic Application Output › should not deviate from snapshot

expect(received).toBeCloseTo(expected, precision)

Expected: 63.5
Received: 63.6

Expected precision:    1
Expected difference: < 0.05
Received difference:   0.10000000000000142

  105 |       expect(err404FirstLoad.endsWith('kB')).toBe(true)
  106 | 
> 107 |       expect(parseFloat(sharedByAll)).toBeCloseTo(63.5, 1)
      |                                       ^
  108 |       expect(sharedByAll.endsWith('kB')).toBe(true)
  109 | 
  110 |       if (_appSize.endsWith('kB')) {

  at Object.<anonymous> (integration/build-output/test/index.test.js:107:39)

@ijjk
Copy link
Member

ijjk commented Jan 16, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 9.7s 10s ⚠️ +311ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +597 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 1.966 1.965 0
/ avg req/sec 1271.42 1272.03 +0.61
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.218 1.249 ⚠️ +0.03
/error-in-render avg req/sec 2053 2000.97 ⚠️ -52.03
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB 6.69 kB ⚠️ +61 B
webpack-50be..df5b.js gzip 751 B 751 B
Overall change 59.4 kB 59.5 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 615 B 615 B
link.html gzip 620 B 622 B ⚠️ +2 B
withRouter.html gzip 608 B 608 B
Overall change 1.84 kB 1.84 kB ⚠️ +2 B

Diffs

Diff for main-82580de..1a0a14a04.js
@@ -867,12 +867,27 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+
+          var _lastAppProps; // To prevent infinite `_error` rendering when `_error` throws on client side
+
+          var Component =
+            ((_lastAppProps = lastAppProps) == null
+              ? void 0
+              : _lastAppProps.Component) === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -891,7 +906,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      href="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-7cd0807c85ae48513b2d.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-82580def8071a0a14a04.js"
+      src="/_next/static/chunks/main-20618479b1f49fd1900a.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 11.4s 11.4s -60ms
nodeModulesSize 77.5 MB 77.5 MB ⚠️ +597 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..43e3.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-712e20f..aa05.js gzip 6.63 kB N/A N/A
webpack-50be..df5b.js gzip 751 B 751 B
main-189af06..6436.js gzip N/A 6.69 kB N/A
Overall change 59.4 kB 59.5 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
polyfills-af..9390.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.46 kB
hooks-c71ae4..70cd.js gzip 887 B 887 B
index-bbee2f..528b.js gzip 227 B 227 B
link-7faf09b..eba4.js gzip 1.64 kB 1.64 kB
routerDirect..bf84.js gzip 303 B 303 B
withRouter-a..5826.js gzip 302 B 302 B
Overall change 8.09 kB 8.09 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 321 B 321 B
Overall change 321 B 321 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_error.js 1 MB 1 MB
404.html 2.67 kB 2.67 kB
hooks.html 1.92 kB 1.92 kB
index.js 1 MB 1 MB
link.js 1.06 MB 1.06 MB
routerDirect.js 1.05 MB 1.05 MB
withRouter.js 1.05 MB 1.05 MB
Overall change 5.18 MB 5.18 MB
Commit: c326a64

@okmttdhr okmttdhr marked this pull request as ready for review January 16, 2021 06:28
@ijjk
Copy link
Member

ijjk commented Feb 14, 2021

Failing test suites

Commit: 414737e

test/integration/build-output/test/index.test.js

  • Build Output > Basic Application Output > should not deviate from snapshot
  • Build Output > Crypto Application > should not include crypto
Expand output

● Build Output › Basic Application Output › should not deviate from snapshot

expect(received).toBeCloseTo(expected, precision)

Expected: 63.6
Received: 63.7

Expected precision:    1
Expected difference: < 0.05
Received difference:   0.10000000000000142

  105 |       expect(err404FirstLoad.endsWith('kB')).toBe(true)
  106 | 
> 107 |       expect(parseFloat(sharedByAll)).toBeCloseTo(63.6, 1)
      |                                       ^
  108 |       expect(sharedByAll.endsWith('kB')).toBe(true)
  109 | 
  110 |       if (_appSize.endsWith('kB')) {

  at Object.<anonymous> (integration/build-output/test/index.test.js:107:39)

● Build Output › Crypto Application › should not include crypto

expect(received).toBeLessThanOrEqual(expected)

Expected: <= 66.6
Received:    66.7

  169 |       expect(indexSize.endsWith('kB')).toBe(true)
  170 | 
> 171 |       expect(parseFloat(indexFirstLoad)).toBeLessThanOrEqual(66.6)
      |                                          ^
  172 |       expect(parseFloat(indexFirstLoad)).toBeGreaterThanOrEqual(60)
  173 |       expect(indexFirstLoad.endsWith('kB')).toBe(true)
  174 |     })

  at Object.<anonymous> (integration/build-output/test/index.test.js:171:42)

@ijjk
Copy link
Member

ijjk commented Feb 14, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 11.7s 11.8s ⚠️ +152ms
nodeModulesSize 69.8 MB 69.8 MB ⚠️ +597 B
Page Load Tests Overall increase ✓
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.111 2.121 ⚠️ +0.01
/ avg req/sec 1184.41 1178.61 ⚠️ -5.8
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.326 1.315 -0.01
/error-in-render avg req/sec 1885.98 1900.49 +14.51
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..5cb0.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.63 kB 6.69 kB ⚠️ +61 B
webpack-HASH.js gzip 751 B 751 B
Overall change 59.5 kB 59.6 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 614 B 613 B -1 B
link.html gzip 621 B 619 B -2 B
withRouter.html gzip 608 B 607 B -1 B
Overall change 1.84 kB 1.84 kB -4 B

Diffs

Diff for main-HASH.js
@@ -867,12 +867,27 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+
+          var _lastAppProps; // To prevent infinite `_error` rendering when `_error` throws on client side
+
+          var Component =
+            ((_lastAppProps = lastAppProps) == null
+              ? void 0
+              : _lastAppProps.Component) === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -891,7 +906,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      href="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      src="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      href="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      src="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      href="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      src="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 14.3s 14.1s -166ms
nodeModulesSize 69.8 MB 69.8 MB ⚠️ +597 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..5cb0.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.63 kB 6.69 kB ⚠️ +61 B
webpack-HASH.js gzip 751 B 751 B
Overall change 59.5 kB 59.6 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_error.js 1.01 MB 1.01 MB
404.html 2.67 kB 2.67 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
routerDirect.js 1.06 MB 1.06 MB
withRouter.js 1.06 MB 1.06 MB
Overall change 5.2 MB 5.2 MB

Webpack 5 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 14s 13.5s -446ms
nodeModulesSize 69.8 MB 69.8 MB ⚠️ +597 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.108 2.151 ⚠️ +0.04
/ avg req/sec 1186.04 1162.13 ⚠️ -23.91
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.341 1.359 ⚠️ +0.02
/error-in-render avg req/sec 1864.85 1838.94 ⚠️ -25.91
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
597-d08f5fe5..d690.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 6.58 kB 6.64 kB ⚠️ +61 B
webpack-HASH.js gzip 954 B 954 B
Overall change 59.9 kB 60 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_app-6e0a903..b885.js gzip 1.26 kB 1.26 kB
_error-9e190..f9d6.js gzip 3.38 kB 3.38 kB
amp-7fd79cc4..99ee.js gzip 538 B 538 B
hooks-f7e199..11b9.js gzip 904 B 904 B
index-3dc22c..ffbb.js gzip 232 B 232 B
link-7cc9e62..ef27.js gzip 1.66 kB 1.66 kB
routerDirect..323a.js gzip 308 B 308 B
withRouter-a..2ef8.js gzip 304 B 304 B
Overall change 8.59 kB 8.59 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 322 B 322 B
Overall change 322 B 322 B
Rendered Page Sizes
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 586 B 586 B
link.html gzip 593 B 593 B
withRouter.html gzip 580 B 580 B
Overall change 1.76 kB 1.76 kB

Diffs

Diff for main-HASH.js
@@ -225,35 +225,35 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         b = r("qOIg"),
         S = r("elyg"),
         w = r("/jkW"),
-        _ = p(r("3WeD")),
-        E = p(r("yLiY")),
+        E = p(r("3WeD")),
+        _ = p(r("yLiY")),
         x = r("g/15"),
         T = d(r("DqTX")),
         P = d(r("zmvN")),
         N = d(r("bGXG")),
-        k = r("nOHt"),
-        A = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
-      window.__NEXT_DATA__ = A;
+        A = r("nOHt"),
+        k = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
+      window.__NEXT_DATA__ = k;
       t.version = "10.0.7-canary.8";
       var C = function(e) {
           return [].slice.call(e);
         },
-        M = A.props,
-        L = A.err,
-        R = A.page,
-        F = A.query,
-        I = A.buildId,
-        D = A.assetPrefix,
-        O = A.runtimeConfig,
-        j = A.dynamicIds,
-        B = A.isFallback,
-        q = A.locale,
-        H = A.locales,
-        X = A.domainLocales,
-        G = A.defaultLocale,
+        M = k.props,
+        L = k.err,
+        R = k.page,
+        F = k.query,
+        I = k.buildId,
+        D = k.assetPrefix,
+        O = k.runtimeConfig,
+        j = k.dynamicIds,
+        B = k.isFallback,
+        q = k.locale,
+        H = k.locales,
+        X = k.domainLocales,
+        G = k.defaultLocale,
         W = D || "";
       (r.p = "".concat(W, "/_next/")),
-        E.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: O || {} });
+        _.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: O || {} });
       var J = (0, x.getURL)();
       (0, S.hasBasePath)(J) && (J = (0, S.delBasePath)(J));
       var U = new P.default(I, W),
@@ -299,7 +299,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                   this.scrollToHash(),
                     z.isSsr &&
                       (B ||
-                        (A.nextExport &&
+                        (k.nextExport &&
                           ((0, w.isDynamicRoute)(z.pathname) ||
                             location.search)) ||
                         (M && M.__N_SSG && location.search)) &&
@@ -307,8 +307,8 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                         z.pathname +
                           "?" +
                           String(
-                            _.assign(
-                              _.urlQueryToSearchParams(z.query),
+                            E.assign(
+                              E.urlQueryToSearchParams(z.query),
                               new URLSearchParams(location.search)
                             )
                           ),
@@ -437,7 +437,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       return (e.next = 36), window.__NEXT_PRELOADREADY(j);
                     case 36:
                       return (
-                        (t.router = z = (0, k.createRouter)(R, F, J, {
+                        (t.router = z = (0, A.createRouter)(R, F, J, {
                           initialProps: M,
                           pageLoader: U,
                           App: Q,
@@ -540,23 +540,34 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         return (
           console.error(r),
           U.loadPage("/_error").then(function(n) {
-            var o = n.page,
-              a = n.styleSheets,
-              i = de(t),
-              u = {
-                Component: o,
-                AppTree: i,
+            var o,
+              a = n.page,
+              i = n.styleSheets,
+              u =
+                (null == (o = pe) ? void 0 : o.Component) === a
+                  ? function() {
+                      return h.default.createElement(
+                        h.default.Fragment,
+                        null,
+                        "An unexpected error has occurred"
+                      );
+                    }
+                  : a,
+              c = de(t),
+              s = {
+                Component: u,
+                AppTree: c,
                 router: z,
-                ctx: { err: r, pathname: R, query: F, asPath: J, AppTree: i }
+                ctx: { err: r, pathname: R, query: F, asPath: J, AppTree: c }
               };
             return Promise.resolve(
-              e.props ? e.props : (0, x.loadGetInitialProps)(t, u)
+              e.props ? e.props : (0, x.loadGetInitialProps)(t, s)
             ).then(function(t) {
               return me(
                 (0, m.default)({}, e, {
                   err: r,
-                  Component: o,
-                  styleSheets: a,
+                  Component: u,
+                  styleSheets: i,
                   props: t
                 })
               );
@@ -630,7 +641,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           },
           h.default.createElement(
             b.RouterContext.Provider,
-            { value: (0, k.makePublicRouterInstance)(z) },
+            { value: (0, A.makePublicRouterInstance)(z) },
             h.default.createElement(
               y.HeadManagerContext.Provider,
               { value: K },
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-919a887b944fe535a634.js"
+      href="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "U-jGiv34yQOqZD21unXLK",
+        "buildId": "oL9mBwwgMRW3mUeJU7UXq",
         "isFallback": false,
         "gip": true
       }
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-919a887b944fe535a634.js"
+      src="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/U-jGiv34yQOqZD21unXLK/_buildManifest.js"
+      src="/_next/static/oL9mBwwgMRW3mUeJU7UXq/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/U-jGiv34yQOqZD21unXLK/_ssgManifest.js"
+      src="/_next/static/oL9mBwwgMRW3mUeJU7UXq/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-919a887b944fe535a634.js"
+      href="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       as="script"
     />
     <link
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "U-jGiv34yQOqZD21unXLK",
+        "buildId": "oL9mBwwgMRW3mUeJU7UXq",
         "isFallback": false,
         "gip": true
       }
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-919a887b944fe535a634.js"
+      src="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       async=""
     ></script>
     <script
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/U-jGiv34yQOqZD21unXLK/_buildManifest.js"
+      src="/_next/static/oL9mBwwgMRW3mUeJU7UXq/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/U-jGiv34yQOqZD21unXLK/_ssgManifest.js"
+      src="/_next/static/oL9mBwwgMRW3mUeJU7UXq/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-919a887b944fe535a634.js"
+      href="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "U-jGiv34yQOqZD21unXLK",
+        "buildId": "oL9mBwwgMRW3mUeJU7UXq",
         "isFallback": false,
         "gip": true
       }
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-919a887b944fe535a634.js"
+      src="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/U-jGiv34yQOqZD21unXLK/_buildManifest.js"
+      src="/_next/static/oL9mBwwgMRW3mUeJU7UXq/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/U-jGiv34yQOqZD21unXLK/_ssgManifest.js"
+      src="/_next/static/oL9mBwwgMRW3mUeJU7UXq/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: 414737e

@ijjk
Copy link
Member

ijjk commented Feb 14, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 11.6s 11.4s -154ms
nodeModulesSize 69.8 MB 69.8 MB ⚠️ +597 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.067 2.128 ⚠️ +0.06
/ avg req/sec 1209.58 1175.04 ⚠️ -34.54
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.33 1.327 0
/error-in-render avg req/sec 1879 1884.34 +5.34
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..5cb0.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.63 kB 6.69 kB ⚠️ +61 B
webpack-HASH.js gzip 751 B 751 B
Overall change 59.5 kB 59.6 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 614 B 613 B -1 B
link.html gzip 621 B 619 B -2 B
withRouter.html gzip 608 B 607 B -1 B
Overall change 1.84 kB 1.84 kB -4 B

Diffs

Diff for main-HASH.js
@@ -867,12 +867,27 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+
+          var _lastAppProps; // To prevent infinite `_error` rendering when `_error` throws on client side
+
+          var Component =
+            ((_lastAppProps = lastAppProps) == null
+              ? void 0
+              : _lastAppProps.Component) === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -891,7 +906,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      href="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      src="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      href="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      src="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      href="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c32b83e7292620e90828.js"
+      src="/_next/static/chunks/main-6b8831bfa170e4f30626.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 13.3s 13.5s ⚠️ +192ms
nodeModulesSize 69.8 MB 69.8 MB ⚠️ +597 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..5cb0.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.63 kB 6.69 kB ⚠️ +61 B
webpack-HASH.js gzip 751 B 751 B
Overall change 59.5 kB 59.6 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_error.js 1.01 MB 1.01 MB
404.html 2.67 kB 2.67 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
routerDirect.js 1.06 MB 1.06 MB
withRouter.js 1.06 MB 1.06 MB
Overall change 5.2 MB 5.2 MB

Webpack 5 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 13.5s 13.6s ⚠️ +83ms
nodeModulesSize 69.8 MB 69.8 MB ⚠️ +597 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.095 2.126 ⚠️ +0.03
/ avg req/sec 1193.15 1175.94 ⚠️ -17.21
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.265 1.298 ⚠️ +0.03
/error-in-render avg req/sec 1975.93 1926.58 ⚠️ -49.35
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
597-d08f5fe5..d690.js gzip 13.1 kB 13.1 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 6.58 kB 6.64 kB ⚠️ +61 B
webpack-HASH.js gzip 954 B 954 B
Overall change 59.9 kB 60 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_app-6e0a903..b885.js gzip 1.26 kB 1.26 kB
_error-9e190..f9d6.js gzip 3.38 kB 3.38 kB
amp-7fd79cc4..99ee.js gzip 538 B 538 B
hooks-f7e199..11b9.js gzip 904 B 904 B
index-3dc22c..ffbb.js gzip 232 B 232 B
link-7cc9e62..ef27.js gzip 1.66 kB 1.66 kB
routerDirect..323a.js gzip 308 B 308 B
withRouter-a..2ef8.js gzip 304 B 304 B
Overall change 8.59 kB 8.59 kB
Client Build Manifests
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 322 B 322 B
Overall change 322 B 322 B
Rendered Page Sizes
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 586 B 586 B
link.html gzip 593 B 593 B
withRouter.html gzip 580 B 580 B
Overall change 1.76 kB 1.76 kB

Diffs

Diff for main-HASH.js
@@ -225,35 +225,35 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         b = r("qOIg"),
         S = r("elyg"),
         w = r("/jkW"),
-        _ = p(r("3WeD")),
-        E = p(r("yLiY")),
+        E = p(r("3WeD")),
+        _ = p(r("yLiY")),
         x = r("g/15"),
         T = d(r("DqTX")),
         P = d(r("zmvN")),
         N = d(r("bGXG")),
-        k = r("nOHt"),
-        A = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
-      window.__NEXT_DATA__ = A;
+        A = r("nOHt"),
+        k = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
+      window.__NEXT_DATA__ = k;
       t.version = "10.0.7-canary.8";
       var C = function(e) {
           return [].slice.call(e);
         },
-        M = A.props,
-        L = A.err,
-        R = A.page,
-        F = A.query,
-        I = A.buildId,
-        D = A.assetPrefix,
-        O = A.runtimeConfig,
-        j = A.dynamicIds,
-        B = A.isFallback,
-        q = A.locale,
-        H = A.locales,
-        X = A.domainLocales,
-        G = A.defaultLocale,
+        M = k.props,
+        L = k.err,
+        R = k.page,
+        F = k.query,
+        I = k.buildId,
+        D = k.assetPrefix,
+        O = k.runtimeConfig,
+        j = k.dynamicIds,
+        B = k.isFallback,
+        q = k.locale,
+        H = k.locales,
+        X = k.domainLocales,
+        G = k.defaultLocale,
         W = D || "";
       (r.p = "".concat(W, "/_next/")),
-        E.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: O || {} });
+        _.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: O || {} });
       var J = (0, x.getURL)();
       (0, S.hasBasePath)(J) && (J = (0, S.delBasePath)(J));
       var U = new P.default(I, W),
@@ -299,7 +299,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                   this.scrollToHash(),
                     z.isSsr &&
                       (B ||
-                        (A.nextExport &&
+                        (k.nextExport &&
                           ((0, w.isDynamicRoute)(z.pathname) ||
                             location.search)) ||
                         (M && M.__N_SSG && location.search)) &&
@@ -307,8 +307,8 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                         z.pathname +
                           "?" +
                           String(
-                            _.assign(
-                              _.urlQueryToSearchParams(z.query),
+                            E.assign(
+                              E.urlQueryToSearchParams(z.query),
                               new URLSearchParams(location.search)
                             )
                           ),
@@ -437,7 +437,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       return (e.next = 36), window.__NEXT_PRELOADREADY(j);
                     case 36:
                       return (
-                        (t.router = z = (0, k.createRouter)(R, F, J, {
+                        (t.router = z = (0, A.createRouter)(R, F, J, {
                           initialProps: M,
                           pageLoader: U,
                           App: Q,
@@ -540,23 +540,34 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         return (
           console.error(r),
           U.loadPage("/_error").then(function(n) {
-            var o = n.page,
-              a = n.styleSheets,
-              i = de(t),
-              u = {
-                Component: o,
-                AppTree: i,
+            var o,
+              a = n.page,
+              i = n.styleSheets,
+              u =
+                (null == (o = pe) ? void 0 : o.Component) === a
+                  ? function() {
+                      return h.default.createElement(
+                        h.default.Fragment,
+                        null,
+                        "An unexpected error has occurred"
+                      );
+                    }
+                  : a,
+              c = de(t),
+              s = {
+                Component: u,
+                AppTree: c,
                 router: z,
-                ctx: { err: r, pathname: R, query: F, asPath: J, AppTree: i }
+                ctx: { err: r, pathname: R, query: F, asPath: J, AppTree: c }
               };
             return Promise.resolve(
-              e.props ? e.props : (0, x.loadGetInitialProps)(t, u)
+              e.props ? e.props : (0, x.loadGetInitialProps)(t, s)
             ).then(function(t) {
               return me(
                 (0, m.default)({}, e, {
                   err: r,
-                  Component: o,
-                  styleSheets: a,
+                  Component: u,
+                  styleSheets: i,
                   props: t
                 })
               );
@@ -630,7 +641,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           },
           h.default.createElement(
             b.RouterContext.Provider,
-            { value: (0, k.makePublicRouterInstance)(z) },
+            { value: (0, A.makePublicRouterInstance)(z) },
             h.default.createElement(
               y.HeadManagerContext.Provider,
               { value: K },
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-919a887b944fe535a634.js"
+      href="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "1nOFSaksTwf08OoABT6ZW",
+        "buildId": "UHWO47oQLbJnDGxR3YGE-",
         "isFallback": false,
         "gip": true
       }
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-919a887b944fe535a634.js"
+      src="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/1nOFSaksTwf08OoABT6ZW/_buildManifest.js"
+      src="/_next/static/UHWO47oQLbJnDGxR3YGE-/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/1nOFSaksTwf08OoABT6ZW/_ssgManifest.js"
+      src="/_next/static/UHWO47oQLbJnDGxR3YGE-/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-919a887b944fe535a634.js"
+      href="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       as="script"
     />
     <link
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "1nOFSaksTwf08OoABT6ZW",
+        "buildId": "UHWO47oQLbJnDGxR3YGE-",
         "isFallback": false,
         "gip": true
       }
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-919a887b944fe535a634.js"
+      src="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       async=""
     ></script>
     <script
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/1nOFSaksTwf08OoABT6ZW/_buildManifest.js"
+      src="/_next/static/UHWO47oQLbJnDGxR3YGE-/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/1nOFSaksTwf08OoABT6ZW/_ssgManifest.js"
+      src="/_next/static/UHWO47oQLbJnDGxR3YGE-/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-919a887b944fe535a634.js"
+      href="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "1nOFSaksTwf08OoABT6ZW",
+        "buildId": "UHWO47oQLbJnDGxR3YGE-",
         "isFallback": false,
         "gip": true
       }
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-919a887b944fe535a634.js"
+      src="/_next/static/chunks/main-d7bb198bc4e30f3e955a.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/1nOFSaksTwf08OoABT6ZW/_buildManifest.js"
+      src="/_next/static/UHWO47oQLbJnDGxR3YGE-/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/1nOFSaksTwf08OoABT6ZW/_ssgManifest.js"
+      src="/_next/static/UHWO47oQLbJnDGxR3YGE-/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: bad93ec

@okmttdhr okmttdhr requested a review from divmain as a code owner February 27, 2021 11:51
@ijjk
Copy link
Member

ijjk commented Feb 27, 2021

Failing test suites

Commit: 45ec89a

test/integration/build-output/test/index.test.js

  • Build Output > Basic Application Output > should not deviate from snapshot
Expand output

● Build Output › Basic Application Output › should not deviate from snapshot

expect(received).toBeCloseTo(expected, precision)

Expected: 63.8
Received: 63.9

Expected precision:    1
Expected difference: < 0.05
Received difference:   0.10000000000000142

  105 |       expect(err404FirstLoad.endsWith('kB')).toBe(true)
  106 | 
> 107 |       expect(parseFloat(sharedByAll)).toBeCloseTo(63.8, 1)
      |                                       ^
  108 |       expect(sharedByAll.endsWith('kB')).toBe(true)
  109 | 
  110 |       if (_appSize.endsWith('kB')) {

  at Object.<anonymous> (integration/build-output/test/index.test.js:107:39)

@ijjk
Copy link
Member

ijjk commented Feb 27, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 12.3s 12.5s ⚠️ +227ms
nodeModulesSize 42.7 MB 42.7 MB ⚠️ +597 B
Page Load Tests Overall increase ✓
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.396 2.356 -0.04
/ avg req/sec 1043.38 1061.09 +17.71
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.607 1.595 -0.01
/error-in-render avg req/sec 1555.48 1567.76 +12.28
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..e7a0.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.71 kB ⚠️ +61 B
webpack-HASH.js gzip 751 B 751 B
Overall change 59.7 kB 59.8 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 613 B 612 B -1 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 -3 B

Diffs

Diff for main-HASH.js
@@ -869,12 +869,27 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+
+          var _lastAppProps; // To prevent infinite `_error` rendering when `_error` throws on client side
+
+          var Component =
+            ((_lastAppProps = lastAppProps) == null
+              ? void 0
+              : _lastAppProps.Component) === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -893,7 +908,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      href="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      src="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      href="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      src="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      href="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      src="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 14.7s 14.8s ⚠️ +78ms
nodeModulesSize 42.7 MB 42.7 MB ⚠️ +597 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..e7a0.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.71 kB ⚠️ +61 B
webpack-HASH.js gzip 751 B 751 B
Overall change 59.7 kB 59.8 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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
routerDirect.js 1.06 MB 1.06 MB
withRouter.js 1.06 MB 1.06 MB
Overall change 5.21 MB 5.21 MB

Webpack 5 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 14.6s 14.9s ⚠️ +274ms
nodeModulesSize 42.7 MB 42.7 MB ⚠️ +597 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.262 2.314 ⚠️ +0.05
/ avg req/sec 1105.36 1080.46 ⚠️ -24.9
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.641 1.638 0
/error-in-render avg req/sec 1523.14 1526.12 +2.98
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
597-74632e79..1d47.js gzip 13.3 kB 13.3 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 6.59 kB 6.66 kB ⚠️ +61 B
webpack-HASH.js gzip 954 B 954 B
Overall change 60.1 kB 60.2 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 326 B 326 B
Overall change 326 B 326 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 586 B 587 B ⚠️ +1 B
link.html gzip 593 B 594 B ⚠️ +1 B
withRouter.html gzip 581 B 582 B ⚠️ +1 B
Overall change 1.76 kB 1.76 kB ⚠️ +3 B

Diffs

Diff for main-HASH.js
@@ -225,36 +225,36 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         b = r("qOIg"),
         S = r("elyg"),
         w = r("/jkW"),
-        _ = p(r("3WeD")),
-        E = p(r("yLiY")),
+        E = p(r("3WeD")),
+        _ = p(r("yLiY")),
         x = r("g/15"),
         T = d(r("DqTX")),
         P = d(r("zmvN")),
         N = d(r("bGXG")),
-        k = r("nOHt"),
-        A = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
-      window.__NEXT_DATA__ = A;
+        A = r("nOHt"),
+        k = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
+      window.__NEXT_DATA__ = k;
       t.version = "10.0.8-canary.9";
       var C = function(e) {
           return [].slice.call(e);
         },
-        M = A.props,
-        L = A.err,
-        R = A.page,
-        F = A.query,
-        I = A.buildId,
-        D = A.assetPrefix,
-        O = A.runtimeConfig,
-        j = A.dynamicIds,
-        B = A.isFallback,
-        q = A.locale,
-        H = A.locales,
-        X = A.domainLocales,
-        G = A.isPreview,
-        W = A.defaultLocale,
+        M = k.props,
+        L = k.err,
+        R = k.page,
+        F = k.query,
+        I = k.buildId,
+        D = k.assetPrefix,
+        O = k.runtimeConfig,
+        j = k.dynamicIds,
+        B = k.isFallback,
+        q = k.locale,
+        H = k.locales,
+        X = k.domainLocales,
+        G = k.isPreview,
+        W = k.defaultLocale,
         J = D || "";
       (r.p = "".concat(J, "/_next/")),
-        E.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: O || {} });
+        _.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: O || {} });
       var U = (0, x.getURL)();
       (0, S.hasBasePath)(U) && (U = (0, S.delBasePath)(U));
       var Y = new P.default(I, J),
@@ -300,7 +300,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                   this.scrollToHash(),
                     Q.isSsr &&
                       (B ||
-                        (A.nextExport &&
+                        (k.nextExport &&
                           ((0, w.isDynamicRoute)(Q.pathname) ||
                             location.search)) ||
                         (M && M.__N_SSG && location.search)) &&
@@ -308,8 +308,8 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                         Q.pathname +
                           "?" +
                           String(
-                            _.assign(
-                              _.urlQueryToSearchParams(Q.query),
+                            E.assign(
+                              E.urlQueryToSearchParams(Q.query),
                               new URLSearchParams(location.search)
                             )
                           ),
@@ -438,7 +438,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       return (e.next = 36), window.__NEXT_PRELOADREADY(j);
                     case 36:
                       return (
-                        (t.router = Q = (0, k.createRouter)(R, F, U, {
+                        (t.router = Q = (0, A.createRouter)(R, F, U, {
                           initialProps: M,
                           pageLoader: Y,
                           App: Z,
@@ -542,23 +542,34 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         return (
           console.error(r),
           Y.loadPage("/_error").then(function(n) {
-            var o = n.page,
-              a = n.styleSheets,
-              i = me(t),
-              u = {
-                Component: o,
-                AppTree: i,
+            var o,
+              a = n.page,
+              i = n.styleSheets,
+              u =
+                (null == (o = de) ? void 0 : o.Component) === a
+                  ? function() {
+                      return h.default.createElement(
+                        h.default.Fragment,
+                        null,
+                        "An unexpected error has occurred"
+                      );
+                    }
+                  : a,
+              c = me(t),
+              s = {
+                Component: u,
+                AppTree: c,
                 router: Q,
-                ctx: { err: r, pathname: R, query: F, asPath: U, AppTree: i }
+                ctx: { err: r, pathname: R, query: F, asPath: U, AppTree: c }
               };
             return Promise.resolve(
-              e.props ? e.props : (0, x.loadGetInitialProps)(t, u)
+              e.props ? e.props : (0, x.loadGetInitialProps)(t, s)
             ).then(function(t) {
               return he(
                 (0, m.default)({}, e, {
                   err: r,
-                  Component: o,
-                  styleSheets: a,
+                  Component: u,
+                  styleSheets: i,
                   props: t
                 })
               );
@@ -632,7 +643,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           },
           h.default.createElement(
             b.RouterContext.Provider,
-            { value: (0, k.makePublicRouterInstance)(Q) },
+            { value: (0, A.makePublicRouterInstance)(Q) },
             h.default.createElement(
               y.HeadManagerContext.Provider,
               { value: $ },
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      href="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "03IYwDFHf_j39eMvGrj_V",
+        "buildId": "p0-s4M4xuJy-TIM7p6bKO",
         "isFallback": false,
         "gip": true
       }
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      src="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/03IYwDFHf_j39eMvGrj_V/_buildManifest.js"
+      src="/_next/static/p0-s4M4xuJy-TIM7p6bKO/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/03IYwDFHf_j39eMvGrj_V/_ssgManifest.js"
+      src="/_next/static/p0-s4M4xuJy-TIM7p6bKO/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      href="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       as="script"
     />
     <link
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "03IYwDFHf_j39eMvGrj_V",
+        "buildId": "p0-s4M4xuJy-TIM7p6bKO",
         "isFallback": false,
         "gip": true
       }
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      src="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       async=""
     ></script>
     <script
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/03IYwDFHf_j39eMvGrj_V/_buildManifest.js"
+      src="/_next/static/p0-s4M4xuJy-TIM7p6bKO/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/03IYwDFHf_j39eMvGrj_V/_ssgManifest.js"
+      src="/_next/static/p0-s4M4xuJy-TIM7p6bKO/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      href="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "03IYwDFHf_j39eMvGrj_V",
+        "buildId": "p0-s4M4xuJy-TIM7p6bKO",
         "isFallback": false,
         "gip": true
       }
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      src="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/03IYwDFHf_j39eMvGrj_V/_buildManifest.js"
+      src="/_next/static/p0-s4M4xuJy-TIM7p6bKO/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/03IYwDFHf_j39eMvGrj_V/_ssgManifest.js"
+      src="/_next/static/p0-s4M4xuJy-TIM7p6bKO/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: 45ec89a

@ijjk
Copy link
Member

ijjk commented Feb 27, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 13s 12.9s -81ms
nodeModulesSize 42.7 MB 42.7 MB ⚠️ +597 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.308 2.38 ⚠️ +0.07
/ avg req/sec 1083.39 1050.2 ⚠️ -33.19
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.65 1.644 -0.01
/error-in-render avg req/sec 1515.05 1520.93 +5.88
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..e7a0.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.71 kB ⚠️ +61 B
webpack-HASH.js gzip 751 B 751 B
Overall change 59.7 kB 59.8 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 613 B 612 B -1 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 -3 B

Diffs

Diff for main-HASH.js
@@ -869,12 +869,27 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return pageLoader.loadPage("/_error").then(function(_ref5) {
           var ErrorComponent = _ref5.page,
             styleSheets = _ref5.styleSheets;
-          // In production we do a normal render with the `ErrorComponent` as component.
+
+          var _lastAppProps; // To prevent infinite `_error` rendering when `_error` throws on client side
+
+          var Component =
+            ((_lastAppProps = lastAppProps) == null
+              ? void 0
+              : _lastAppProps.Component) === ErrorComponent
+              ? function() {
+                  return /*#__PURE__*/ _react["default"].createElement(
+                    _react["default"].Fragment,
+                    null,
+                    "An unexpected error has occurred"
+                  );
+                }
+              : ErrorComponent; // In production we do a normal render with the `ErrorComponent` as component.
           // If we've gotten here upon initial render, we can use the props from the server.
           // Otherwise, we need to call `getInitialProps` on `App` before mounting.
+
           var AppTree = wrapApp(App);
           var appCtx = {
-            Component: ErrorComponent,
+            Component: Component,
             AppTree: AppTree,
             router: router,
             ctx: {
@@ -893,7 +908,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
             return doRender(
               (0, _extends2["default"])({}, renderErrorProps, {
                 err: err,
-                Component: ErrorComponent,
+                Component: Component,
                 styleSheets: styleSheets,
                 props: initProps
               })
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      href="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      src="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      href="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      src="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      href="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       as="script"
     />
     <link
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-c1a0dcfc5ed545772d83.js"
+      src="/_next/static/chunks/main-c9e82e0a5efd93bb9ab5.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 15s 15.1s ⚠️ +77ms
nodeModulesSize 42.7 MB 42.7 MB ⚠️ +597 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
677f882d2ed8..e7a0.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.71 kB ⚠️ +61 B
webpack-HASH.js gzip 751 B 751 B
Overall change 59.7 kB 59.8 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Serverless bundles
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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
routerDirect.js 1.06 MB 1.06 MB
withRouter.js 1.06 MB 1.06 MB
Overall change 5.21 MB 5.21 MB

Webpack 5 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
buildDuration 15.4s 15.3s -171ms
nodeModulesSize 42.7 MB 42.7 MB ⚠️ +597 B
Page Load Tests Overall increase ✓
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
/ failed reqs 0 0
/ total time (seconds) 2.368 2.328 -0.04
/ avg req/sec 1055.88 1073.86 +17.98
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.738 1.692 -0.05
/error-in-render avg req/sec 1438.07 1477.3 +39.23
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
597-74632e79..1d47.js gzip 13.3 kB 13.3 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 6.59 kB 6.66 kB ⚠️ +61 B
webpack-HASH.js gzip 954 B 954 B
Overall change 60.1 kB 60.2 kB ⚠️ +61 B
Legacy Client Bundles (polyfills)
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering 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 okmttdhr/next.js fix/infinite-error-rendering Change
_buildManifest.js gzip 326 B 326 B
Overall change 326 B 326 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary okmttdhr/next.js fix/infinite-error-rendering Change
index.html gzip 586 B 587 B ⚠️ +1 B
link.html gzip 593 B 594 B ⚠️ +1 B
withRouter.html gzip 581 B 582 B ⚠️ +1 B
Overall change 1.76 kB 1.76 kB ⚠️ +3 B

Diffs

Diff for main-HASH.js
@@ -225,36 +225,36 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         b = r("qOIg"),
         S = r("elyg"),
         w = r("/jkW"),
-        _ = p(r("3WeD")),
-        E = p(r("yLiY")),
+        E = p(r("3WeD")),
+        _ = p(r("yLiY")),
         x = r("g/15"),
         T = d(r("DqTX")),
         P = d(r("zmvN")),
         N = d(r("bGXG")),
-        k = r("nOHt"),
-        A = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
-      window.__NEXT_DATA__ = A;
+        A = r("nOHt"),
+        k = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
+      window.__NEXT_DATA__ = k;
       t.version = "10.0.8-canary.9";
       var C = function(e) {
           return [].slice.call(e);
         },
-        M = A.props,
-        L = A.err,
-        R = A.page,
-        F = A.query,
-        I = A.buildId,
-        D = A.assetPrefix,
-        O = A.runtimeConfig,
-        j = A.dynamicIds,
-        B = A.isFallback,
-        q = A.locale,
-        H = A.locales,
-        X = A.domainLocales,
-        G = A.isPreview,
-        W = A.defaultLocale,
+        M = k.props,
+        L = k.err,
+        R = k.page,
+        F = k.query,
+        I = k.buildId,
+        D = k.assetPrefix,
+        O = k.runtimeConfig,
+        j = k.dynamicIds,
+        B = k.isFallback,
+        q = k.locale,
+        H = k.locales,
+        X = k.domainLocales,
+        G = k.isPreview,
+        W = k.defaultLocale,
         J = D || "";
       (r.p = "".concat(J, "/_next/")),
-        E.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: O || {} });
+        _.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: O || {} });
       var U = (0, x.getURL)();
       (0, S.hasBasePath)(U) && (U = (0, S.delBasePath)(U));
       var Y = new P.default(I, J),
@@ -300,7 +300,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                   this.scrollToHash(),
                     Q.isSsr &&
                       (B ||
-                        (A.nextExport &&
+                        (k.nextExport &&
                           ((0, w.isDynamicRoute)(Q.pathname) ||
                             location.search)) ||
                         (M && M.__N_SSG && location.search)) &&
@@ -308,8 +308,8 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                         Q.pathname +
                           "?" +
                           String(
-                            _.assign(
-                              _.urlQueryToSearchParams(Q.query),
+                            E.assign(
+                              E.urlQueryToSearchParams(Q.query),
                               new URLSearchParams(location.search)
                             )
                           ),
@@ -438,7 +438,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       return (e.next = 36), window.__NEXT_PRELOADREADY(j);
                     case 36:
                       return (
-                        (t.router = Q = (0, k.createRouter)(R, F, U, {
+                        (t.router = Q = (0, A.createRouter)(R, F, U, {
                           initialProps: M,
                           pageLoader: Y,
                           App: Z,
@@ -542,23 +542,34 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         return (
           console.error(r),
           Y.loadPage("/_error").then(function(n) {
-            var o = n.page,
-              a = n.styleSheets,
-              i = me(t),
-              u = {
-                Component: o,
-                AppTree: i,
+            var o,
+              a = n.page,
+              i = n.styleSheets,
+              u =
+                (null == (o = de) ? void 0 : o.Component) === a
+                  ? function() {
+                      return h.default.createElement(
+                        h.default.Fragment,
+                        null,
+                        "An unexpected error has occurred"
+                      );
+                    }
+                  : a,
+              c = me(t),
+              s = {
+                Component: u,
+                AppTree: c,
                 router: Q,
-                ctx: { err: r, pathname: R, query: F, asPath: U, AppTree: i }
+                ctx: { err: r, pathname: R, query: F, asPath: U, AppTree: c }
               };
             return Promise.resolve(
-              e.props ? e.props : (0, x.loadGetInitialProps)(t, u)
+              e.props ? e.props : (0, x.loadGetInitialProps)(t, s)
             ).then(function(t) {
               return he(
                 (0, m.default)({}, e, {
                   err: r,
-                  Component: o,
-                  styleSheets: a,
+                  Component: u,
+                  styleSheets: i,
                   props: t
                 })
               );
@@ -632,7 +643,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           },
           h.default.createElement(
             b.RouterContext.Provider,
-            { value: (0, k.makePublicRouterInstance)(Q) },
+            { value: (0, A.makePublicRouterInstance)(Q) },
             h.default.createElement(
               y.HeadManagerContext.Provider,
               { value: $ },
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      href="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "-Rwp2UIxiYyfFv7KsTkSA",
+        "buildId": "Z2RhPHnuCNeG8AaLZ4hPF",
         "isFallback": false,
         "gip": true
       }
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      src="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/-Rwp2UIxiYyfFv7KsTkSA/_buildManifest.js"
+      src="/_next/static/Z2RhPHnuCNeG8AaLZ4hPF/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/-Rwp2UIxiYyfFv7KsTkSA/_ssgManifest.js"
+      src="/_next/static/Z2RhPHnuCNeG8AaLZ4hPF/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      href="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       as="script"
     />
     <link
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "-Rwp2UIxiYyfFv7KsTkSA",
+        "buildId": "Z2RhPHnuCNeG8AaLZ4hPF",
         "isFallback": false,
         "gip": true
       }
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      src="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       async=""
     ></script>
     <script
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/-Rwp2UIxiYyfFv7KsTkSA/_buildManifest.js"
+      src="/_next/static/Z2RhPHnuCNeG8AaLZ4hPF/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/-Rwp2UIxiYyfFv7KsTkSA/_ssgManifest.js"
+      src="/_next/static/Z2RhPHnuCNeG8AaLZ4hPF/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      href="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "-Rwp2UIxiYyfFv7KsTkSA",
+        "buildId": "Z2RhPHnuCNeG8AaLZ4hPF",
         "isFallback": false,
         "gip": true
       }
@@ -53,7 +53,7 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-64db1875672aa3f9880d.js"
+      src="/_next/static/chunks/main-64d1c0af3cf818b295ab.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/-Rwp2UIxiYyfFv7KsTkSA/_buildManifest.js"
+      src="/_next/static/Z2RhPHnuCNeG8AaLZ4hPF/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/-Rwp2UIxiYyfFv7KsTkSA/_ssgManifest.js"
+      src="/_next/static/Z2RhPHnuCNeG8AaLZ4hPF/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: 62ffae6

@vercel vercel locked as resolved and limited conversation to collaborators Jan 28, 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.

Endless loop when _error render throws on client side

2 participants