Skip to content

Commit

Permalink
v10.1.4-canary.18
Browse files Browse the repository at this point in the history
  • Loading branch information
ijjk committed Apr 28, 2021
1 parent b26077b commit 0abbb75
Show file tree
Hide file tree
Showing 13 changed files with 18 additions and 18 deletions.
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@
"registry": "https://registry.npmjs.org/"
}
},
"version": "10.1.4-canary.17"
"version": "10.1.4-canary.18"
}
2 changes: 1 addition & 1 deletion packages/create-next-app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "create-next-app",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"keywords": [
"react",
"next",
Expand Down
2 changes: 1 addition & 1 deletion packages/eslint-plugin-next/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/eslint-plugin-next",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"description": "ESLint plugin for NextJS.",
"main": "lib/index.js",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion packages/next-bundle-analyzer/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/bundle-analyzer",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"main": "index.js",
"license": "MIT",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/next-codemod/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/codemod",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"license": "MIT",
"dependencies": {
"chalk": "4.1.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/next-env/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/env",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"keywords": [
"react",
"next",
Expand Down
2 changes: 1 addition & 1 deletion packages/next-mdx/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/mdx",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"main": "index.js",
"license": "MIT",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/next-plugin-storybook/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/plugin-storybook",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"repository": {
"url": "vercel/next.js",
"directory": "packages/next-plugin-storybook"
Expand Down
2 changes: 1 addition & 1 deletion packages/next-polyfill-module/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/polyfill-module",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"description": "A standard library polyfill for ES Modules supporting browsers (Edge 16+, Firefox 60+, Chrome 61+, Safari 10.1+)",
"main": "dist/polyfill-module.js",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion packages/next-polyfill-nomodule/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/polyfill-nomodule",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"description": "A polyfill for non-dead, nomodule browsers.",
"main": "dist/polyfill-nomodule.js",
"license": "MIT",
Expand Down
12 changes: 6 additions & 6 deletions packages/next/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "next",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"description": "The React Framework",
"main": "./dist/server/next.js",
"license": "MIT",
Expand Down Expand Up @@ -64,10 +64,10 @@
"dependencies": {
"@babel/runtime": "7.12.5",
"@hapi/accept": "5.0.1",
"@next/env": "10.1.4-canary.17",
"@next/polyfill-module": "10.1.4-canary.17",
"@next/react-dev-overlay": "10.1.4-canary.17",
"@next/react-refresh-utils": "10.1.4-canary.17",
"@next/env": "10.1.4-canary.18",
"@next/polyfill-module": "10.1.4-canary.18",
"@next/react-dev-overlay": "10.1.4-canary.18",
"@next/react-refresh-utils": "10.1.4-canary.18",
"@opentelemetry/api": "0.14.0",
"assert": "2.0.0",
"ast-types": "0.13.2",
Expand Down Expand Up @@ -150,7 +150,7 @@
"@babel/preset-typescript": "7.12.7",
"@babel/traverse": "^7.12.10",
"@babel/types": "7.12.12",
"@next/polyfill-nomodule": "10.1.4-canary.17",
"@next/polyfill-nomodule": "10.1.4-canary.18",
"@taskr/clear": "1.1.0",
"@taskr/esnext": "1.1.0",
"@taskr/watch": "1.1.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/react-dev-overlay/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/react-dev-overlay",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"description": "A development-only overlay for developing React applications.",
"repository": {
"url": "vercel/next.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/react-refresh-utils/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/react-refresh-utils",
"version": "10.1.4-canary.17",
"version": "10.1.4-canary.18",
"description": "An experimental package providing utilities for React Refresh.",
"repository": {
"url": "vercel/next.js",
Expand Down

1 comment on commit 0abbb75

@ijjk
Copy link
Member Author

@ijjk ijjk commented on 0abbb75 Apr 28, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stats from current release

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
buildDuration 11.9s 14.7s ⚠️ +2.8s
buildDurationCached 5s 4.3s -678ms
nodeModulesSize 46 MB 46.7 MB ⚠️ +635 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
/ failed reqs 0 0
/ total time (seconds) 2.135 2.6 ⚠️ +0.47
/ avg req/sec 1171.22 961.69 ⚠️ -209.53
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.452 1.521 ⚠️ +0.07
/error-in-render avg req/sec 1721.32 1643.87 ⚠️ -77.45
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
677f882d2ed8..HASH.js gzip 13.4 kB 13.2 kB -153 B
framework.HASH.js gzip 39 kB 39.3 kB ⚠️ +301 B
main-HASH.js gzip 7.12 kB 151 B -6.96 kB
webpack-HASH.js gzip 751 B 993 B ⚠️ +242 B
778-HASH.js gzip N/A 7.12 kB N/A
Overall change 60.2 kB 60.7 kB ⚠️ +546 B
Legacy Client Bundles (polyfills) Overall decrease ✓
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
polyfills-HASH.js gzip 31.3 kB 31.1 kB -157 B
Overall change 31.3 kB 31.1 kB -157 B
Client Pages Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
_app-HASH.js gzip 1.28 kB 1.3 kB ⚠️ +15 B
_error-HASH.js gzip 3.46 kB 3.68 kB ⚠️ +225 B
amp-HASH.js gzip 536 B 558 B ⚠️ +22 B
css-HASH.js gzip 339 B 363 B ⚠️ +24 B
hooks-HASH.js gzip 887 B 924 B ⚠️ +37 B
index-HASH.js gzip 227 B 243 B ⚠️ +16 B
link-HASH.js gzip 1.65 kB 1.66 kB ⚠️ +14 B
routerDirect..HASH.js gzip 303 B 336 B ⚠️ +33 B
withRouter-HASH.js gzip 302 B 334 B ⚠️ +32 B
21c68fa65a48..217.css gzip 125 B 125 B
Overall change 9.1 kB 9.52 kB ⚠️ +418 B
Client Build Manifests Overall decrease ✓
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 420 B 390 B -30 B
Overall change 420 B 390 B -30 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
index.html gzip 613 B 609 B -4 B
link.html gzip 620 B 614 B -6 B
withRouter.html gzip 606 B 604 B -2 B
Overall change 1.84 kB 1.83 kB -12 B

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-fec729acd14e4a5583b2.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-b58c108825251cad9b8e.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-55112c9d838f988b054d.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-89a5460cada4d99b567f.js"],
   "/css": [
Diff for _error-HASH.js
@@ -699,8 +699,23 @@ Also adds support for deduplicated `key` properties
           .map(function(c, i) {
             var key = c.key || i;
 
-            if (false) {
-              var newProps;
+            if (true && !props.inAmpMode) {
+              if (
+                c.type === "link" &&
+                c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.
+                ["https://fonts.googleapis.com/css"].some(function(url) {
+                  return c.props["href"].startsWith(url);
+                })
+              ) {
+                var newProps = _objectSpread({}, c.props || {});
+
+                newProps["data-href"] = newProps["href"];
+                newProps["href"] = undefined;
+                return /*#__PURE__*/ _react["default"].cloneElement(
+                  c,
+                  newProps
+                );
+              }
             }
 
             return /*#__PURE__*/ _react["default"].cloneElement(c, {
Diff for 597-HASH.js
@@ -500,12 +500,6 @@
     ) {
       "use strict";
 
-      var _regeneratorRuntime = __webpack_require__(7757);
-
-      var _slicedToArray = __webpack_require__(3038);
-
-      var _asyncToGenerator = __webpack_require__(8926);
-
       var _interopRequireDefault = __webpack_require__(5318);
 
       exports.__esModule = true;
@@ -773,97 +767,59 @@
                 if (old && "resolve" in old) old.resolve(input);
               });
           },
-          loadRoute: function loadRoute(route) {
+          loadRoute: function loadRoute(route, prefetch) {
             var _this = this;
 
-            return withFuture(
-              route,
-              routes,
-              /*#__PURE__*/ _asyncToGenerator(
-                /*#__PURE__*/ _regeneratorRuntime.mark(function _callee() {
-                  var _yield$getFilesForRou,
-                    scripts,
-                    css,
-                    _yield$Promise$all,
-                    _yield$Promise$all2,
-                    styles,
-                    entrypoint,
-                    res;
-
-                  return _regeneratorRuntime.wrap(
-                    function _callee$(_context) {
-                      while (1) {
-                        switch ((_context.prev = _context.next)) {
-                          case 0:
-                            _context.prev = 0;
-                            _context.next = 3;
-                            return getFilesForRoute(assetPrefix, route);
-
-                          case 3:
-                            _yield$getFilesForRou = _context.sent;
-                            scripts = _yield$getFilesForRou.scripts;
-                            css = _yield$getFilesForRou.css;
-                            _context.next = 8;
-                            return Promise.all([
-                              entrypoints.has(route)
-                                ? []
-                                : Promise.all(scripts.map(maybeExecuteScript)),
-                              Promise.all(css.map(fetchStyleSheet))
-                            ]);
-
-                          case 8:
-                            _yield$Promise$all = _context.sent;
-                            _yield$Promise$all2 = _slicedToArray(
-                              _yield$Promise$all,
-                              2
-                            );
-                            styles = _yield$Promise$all2[1];
-                            _context.next = 13;
-                            return resolvePromiseWithTimeout(
-                              _this.whenEntrypoint(route),
-                              MS_MAX_IDLE_DELAY,
-                              markAssetError(
-                                new Error(
-                                  "Route did not complete loading: ".concat(
-                                    route
-                                  )
-                                )
-                              )
-                            );
-
-                          case 13:
-                            entrypoint = _context.sent;
-                            res = Object.assign(
-                              {
-                                styles: styles
-                              },
-                              entrypoint
-                            );
-                            return _context.abrupt(
-                              "return",
-                              "error" in entrypoint ? entrypoint : res
-                            );
-
-                          case 18:
-                            _context.prev = 18;
-                            _context.t0 = _context["catch"](0);
-                            return _context.abrupt("return", {
-                              error: _context.t0
-                            });
-
-                          case 21:
-                          case "end":
-                            return _context.stop();
-                        }
-                      }
+            return withFuture(route, routes, function() {
+              return resolvePromiseWithTimeout(
+                getFilesForRoute(assetPrefix, route)
+                  .then(function(_ref) {
+                    var scripts = _ref.scripts,
+                      css = _ref.css;
+                    return Promise.all([
+                      entrypoints.has(route)
+                        ? []
+                        : Promise.all(scripts.map(maybeExecuteScript)),
+                      Promise.all(css.map(fetchStyleSheet))
+                    ]);
+                  })
+                  .then(function(res) {
+                    return _this
+                      .whenEntrypoint(route)
+                      .then(function(entrypoint) {
+                        return {
+                          entrypoint: entrypoint,
+                          styles: res[1]
+                        };
+                      });
+                  }),
+                MS_MAX_IDLE_DELAY,
+                markAssetError(
+                  new Error("Route did not complete loading: ".concat(route))
+                )
+              )
+                .then(function(_ref2) {
+                  var entrypoint = _ref2.entrypoint,
+                    styles = _ref2.styles;
+                  var res = Object.assign(
+                    {
+                      styles: styles
                     },
-                    _callee,
-                    null,
-                    [[0, 18]]
+                    entrypoint
                   );
+                  return "error" in entrypoint ? entrypoint : res;
                 })
-              )
-            );
+                ["catch"](function(err) {
+                  if (prefetch) {
+                    // we don't want to cache errors during prefetch
+                    throw err;
+                  }
+
+                  return {
+                    error: err
+                  };
+                });
+            });
           },
           prefetch: function prefetch(route) {
             var _this2 = this;
@@ -890,7 +846,7 @@
               })
               .then(function() {
                 (0, _requestIdleCallback.requestIdleCallback)(function() {
-                  return _this2.loadRoute(route);
+                  return _this2.loadRoute(route, true)["catch"](function() {});
                 });
               })
               ["catch"](
@@ -1397,9 +1353,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
           : {
               default: obj
             };
-      }
-      /* global __NEXT_DATA__ */
-      // tslint:disable:no-console
+      } // tslint:disable:no-console
 
       var detectDomainLocale;
 
@@ -1436,6 +1390,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
       function addLocale(path, locale, defaultLocale) {
         if (false) {
+          var localeLower, pathLower, pathname;
         }
 
         return path;
@@ -1443,6 +1398,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
       function delLocale(path, locale) {
         if (false) {
+          var localeLower, pathLower, pathname;
         }
 
         return path;
@@ -1917,7 +1873,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
           this.isReady = !!(
             self.__NEXT_DATA__.gssp ||
             self.__NEXT_DATA__.gip ||
-            (!autoExportDynamic && !self.location.search)
+            (!autoExportDynamic && !self.location.search && !false)
           );
           this.isPreview = !!isPreview;
           this.isLocaleDomain = false;
Diff for 778-HASH.js
@@ -350,7 +350,7 @@
         }
       }
 
-      var _interopRequireWildcard3 = __webpack_require__(862);
+      var _interopRequireWildcard = __webpack_require__(862);
 
       var _interopRequireDefault = __webpack_require__(5318);
 
@@ -361,10 +361,6 @@
 
       var _extends2 = _interopRequireDefault(__webpack_require__(7154));
 
-      var _interopRequireWildcard2 = _interopRequireDefault(
-        __webpack_require__(862)
-      );
-
       __webpack_require__(400);
 
       var _react = _interopRequireDefault(__webpack_require__(7294));
@@ -381,9 +377,9 @@
 
       var _isDynamic = __webpack_require__(3288);
 
-      var querystring = _interopRequireWildcard3(__webpack_require__(4915));
+      var querystring = _interopRequireWildcard(__webpack_require__(4915));
 
-      var envConfig = _interopRequireWildcard3(__webpack_require__(9186));
+      var envConfig = _interopRequireWildcard(__webpack_require__(9186));
 
       var _utils = __webpack_require__(3937);
 
@@ -406,7 +402,7 @@
         document.getElementById("__NEXT_DATA__").textContent
       );
       window.__NEXT_DATA__ = data;
-      var version = "10.1.3";
+      var version = "10.1.4-canary.18";
       exports.version = version;
 
       var looseToArray = function looseToArray(input) {
@@ -520,12 +516,24 @@
               // - if it is a client-side skeleton (fallback render)
 
               if (
-                router.isSsr &&
+                router.isSsr && // We don't update for 404 requests as this can modify
+                // the asPath unexpectedly e.g. adding basePath when
+                // it wasn't originally present
+                page !== "/404" &&
+                !(
+                  page === "/_error" &&
+                  hydrateProps &&
+                  hydrateProps.pageProps &&
+                  hydrateProps.pageProps.statusCode === 404
+                ) &&
                 (isFallback ||
                   (data.nextExport &&
                     ((0, _isDynamic.isDynamicRoute)(router.pathname) ||
-                      location.search)) ||
-                  (hydrateProps && hydrateProps.__N_SSG && location.search))
+                      location.search ||
+                      false)) ||
+                  (hydrateProps &&
+                    hydrateProps.__N_SSG &&
+                    (location.search || false)))
               ) {
                 // update query on mount for exported pages
                 router.replace(
@@ -599,10 +607,10 @@
         var _ref3 = _asyncToGenerator(
           /*#__PURE__*/ _regeneratorRuntime.mark(function _callee() {
             var opts,
+              initialErr,
               appEntrypoint,
               app,
               mod,
-              initialErr,
               pageEntrypoint,
               _require7,
               isValidElementType,
@@ -625,20 +633,22 @@
                       if (false) {
                       }
 
-                      _context.next = 4;
+                      initialErr = hydrateErr;
+                      _context.prev = 3;
+                      _context.next = 6;
                       return pageLoader.routeLoader.whenEntrypoint("/_app");
 
-                    case 4:
+                    case 6:
                       appEntrypoint = _context.sent;
 
                       if (!("error" in appEntrypoint)) {
-                        _context.next = 7;
+                        _context.next = 9;
                         break;
                       }
 
                       throw appEntrypoint.error;
 
-                    case 7:
+                    case 9:
                       (app = appEntrypoint.component),
                         (mod = appEntrypoint.exports);
                       CachedApp = app;
@@ -677,9 +687,6 @@
                         };
                       }
 
-                      initialErr = hydrateErr;
-                      _context.prev = 11;
-
                       if (true) {
                         _context.next = 16;
                         break;
@@ -745,7 +752,7 @@
 
                     case 29:
                       _context.prev = 29;
-                      _context.t1 = _context["catch"](11);
+                      _context.t1 = _context["catch"](3);
                       // This catches errors like throwing in the top level of a module
                       initialErr = _context.t1;
 
@@ -792,11 +799,7 @@
                           domainLocales: domainLocales,
                           isPreview: isPreview
                         }
-                      ); // call init-client middleware
-
-                      if (false) {
-                      }
-
+                      );
                       renderCtx = {
                         App: CachedApp,
                         initial: true,
@@ -811,14 +814,14 @@
                       render(renderCtx);
                       return _context.abrupt("return", emitter);
 
-                    case 44:
+                    case 43:
                       return _context.abrupt("return", {
                         emitter: emitter,
                         render: render,
                         renderCtx: renderCtx
                       });
 
-                    case 45:
+                    case 44:
                     case "end":
                       return _context.stop();
                   }
@@ -826,7 +829,7 @@
               },
               _callee,
               null,
-              [[11, 29]]
+              [[3, 29]]
             );
           })
         );
@@ -916,9 +919,6 @@
           err = renderErrorProps.err; // In development runtime errors are caught by our overlay
         // In production we catch runtime errors using componentDidCatch which will trigger renderError
 
-        if (false) {
-        }
-
         if (false) {
         } // Make sure we log the error to the console, otherwise users can't track down issues.
 
@@ -960,23 +960,28 @@
       }
 
       var reactRoot = null;
-      var shouldUseHydrate = typeof _reactDom["default"].hydrate === "function";
+      var shouldHydrate = typeof _reactDom["default"].hydrate === "function";
+
+      function renderReactElement(domEl, fn) {
+        // mark start of hydrate/render
+        if (_utils.ST) {
+          performance.mark("beforeRender");
+        }
+
+        var reactEl = fn(
+          shouldHydrate ? markHydrateComplete : markRenderComplete
+        );
 
-      function renderReactElement(reactEl, domEl) {
         if (false) {
-          var opts;
+          var createRootName;
         } else {
-          // mark start of hydrate/render
-          if (_utils.ST) {
-            performance.mark("beforeRender");
-          } // The check for `.hydrate` is there to support React alternatives like preact
-
-          if (shouldUseHydrate) {
-            _reactDom["default"].hydrate(reactEl, domEl, markHydrateComplete);
+          // The check for `.hydrate` is there to support React alternatives like preact
+          if (shouldHydrate) {
+            _reactDom["default"].hydrate(reactEl, domEl);
 
-            shouldUseHydrate = false;
+            shouldHydrate = false;
           } else {
-            _reactDom["default"].render(reactEl, domEl, markRenderComplete);
+            _reactDom["default"].render(reactEl, domEl);
           }
         }
       }
@@ -1241,11 +1246,11 @@
           resolvePromise();
         }
 
+        onStart();
+
         var elem = /*#__PURE__*/ _react["default"].createElement(
-          Root,
-          {
-            callback: onRootCommit
-          },
+          _react["default"].Fragment,
+          null,
           /*#__PURE__*/ _react["default"].createElement(Head, {
             callback: onHeadCommit
           }),
@@ -1264,25 +1269,33 @@
               )
             )
           )
-        );
-
-        onStart(); // We catch runtime errors using componentDidCatch which will trigger renderError
+        ); // We catch runtime errors using componentDidCatch which will trigger renderError
 
-        renderReactElement(false ? /*#__PURE__*/ 0 : elem, appElement);
+        renderReactElement(appElement, function(callback) {
+          return /*#__PURE__*/ _react["default"].createElement(
+            Root,
+            {
+              callbacks: [callback, onRootCommit]
+            },
+            false ? /*#__PURE__*/ 0 : elem
+          );
+        });
         return renderPromise;
       }
 
       function Root(_ref9) {
-        var callback = _ref9.callback,
+        var callbacks = _ref9.callbacks,
           children = _ref9.children;
 
-        // We use `useLayoutEffect` to guarantee the callback is executed
-        // as soon as React flushes the update.
+        // We use `useLayoutEffect` to guarantee the callbacks are executed
+        // as soon as React flushes the update
         _react["default"].useLayoutEffect(
           function() {
-            return callback();
+            return callbacks.forEach(function(callback) {
+              return callback();
+            });
           },
-          [callback]
+          [callbacks]
         );
 
         if (undefined) {
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/webpack-cd65fc63c0c0cd4c0054.js"
+      href="/_next/static/chunks/webpack-e020a42b65c824c61a80.js"
       as="script"
     />
     <link
@@ -17,12 +17,12 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/597-e27c5352823a0901db8c.js"
+      href="/_next/static/chunks/597-ae440a7286b9272ad989.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/778-53316af9753f067a68b6.js"
+      href="/_next/static/chunks/778-d8abaa7c97de9da43e8c.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-8683bd742a84c1edd48c.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-cd65fc63c0c0cd4c0054.js"
+      src="/_next/static/chunks/webpack-e020a42b65c824c61a80.js"
       async=""
     ></script>
     <script
@@ -66,11 +66,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/597-e27c5352823a0901db8c.js"
+      src="/_next/static/chunks/597-ae440a7286b9272ad989.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/778-53316af9753f067a68b6.js"
+      src="/_next/static/chunks/778-d8abaa7c97de9da43e8c.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/webpack-cd65fc63c0c0cd4c0054.js"
+      href="/_next/static/chunks/webpack-e020a42b65c824c61a80.js"
       as="script"
     />
     <link
@@ -17,12 +17,12 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/597-e27c5352823a0901db8c.js"
+      href="/_next/static/chunks/597-ae440a7286b9272ad989.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/778-53316af9753f067a68b6.js"
+      href="/_next/static/chunks/778-d8abaa7c97de9da43e8c.js"
       as="script"
     />
     <link
@@ -63,7 +63,7 @@
       src="/_next/static/chunks/polyfills-8683bd742a84c1edd48c.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-cd65fc63c0c0cd4c0054.js"
+      src="/_next/static/chunks/webpack-e020a42b65c824c61a80.js"
       async=""
     ></script>
     <script
@@ -71,11 +71,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/597-e27c5352823a0901db8c.js"
+      src="/_next/static/chunks/597-ae440a7286b9272ad989.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/778-53316af9753f067a68b6.js"
+      src="/_next/static/chunks/778-d8abaa7c97de9da43e8c.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/webpack-cd65fc63c0c0cd4c0054.js"
+      href="/_next/static/chunks/webpack-e020a42b65c824c61a80.js"
       as="script"
     />
     <link
@@ -17,12 +17,12 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/597-e27c5352823a0901db8c.js"
+      href="/_next/static/chunks/597-ae440a7286b9272ad989.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/778-53316af9753f067a68b6.js"
+      href="/_next/static/chunks/778-d8abaa7c97de9da43e8c.js"
       as="script"
     />
     <link
@@ -58,7 +58,7 @@
       src="/_next/static/chunks/polyfills-8683bd742a84c1edd48c.js"
     ></script>
     <script
-      src="/_next/static/chunks/webpack-cd65fc63c0c0cd4c0054.js"
+      src="/_next/static/chunks/webpack-e020a42b65c824c61a80.js"
       async=""
     ></script>
     <script
@@ -66,11 +66,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/597-e27c5352823a0901db8c.js"
+      src="/_next/static/chunks/597-ae440a7286b9272ad989.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/778-53316af9753f067a68b6.js"
+      src="/_next/static/chunks/778-d8abaa7c97de9da43e8c.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
buildDuration 13.9s 17.8s ⚠️ +3.9s
buildDurationCached 6.9s 6.4s -411ms
nodeModulesSize 46 MB 46.7 MB ⚠️ +635 kB
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
677f882d2ed8..HASH.js gzip 13.4 kB N/A N/A
framework.HASH.js gzip 39 kB N/A N/A
main-HASH.js gzip 7.12 kB 151 B -6.96 kB
webpack-HASH.js gzip 751 B 993 B ⚠️ +242 B
597-HASH.js gzip N/A 13.2 kB N/A
778-HASH.js gzip N/A 7.12 kB N/A
framework-HASH.js gzip N/A 39.3 kB N/A
Overall change 60.2 kB 60.7 kB ⚠️ +546 B
Legacy Client Bundles (polyfills) Overall decrease ✓
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
polyfills-HASH.js gzip 31.3 kB 31.1 kB -157 B
Overall change 31.3 kB 31.1 kB -157 B
Client Pages Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
_app-HASH.js gzip 1.28 kB 1.3 kB ⚠️ +15 B
_error-HASH.js gzip 3.46 kB 3.68 kB ⚠️ +225 B
amp-HASH.js gzip 536 B 558 B ⚠️ +22 B
css-HASH.js gzip 339 B 363 B ⚠️ +24 B
hooks-HASH.js gzip 887 B 924 B ⚠️ +37 B
index-HASH.js gzip 227 B 243 B ⚠️ +16 B
link-HASH.js gzip 1.65 kB 1.66 kB ⚠️ +14 B
routerDirect..HASH.js gzip 303 B 336 B ⚠️ +33 B
withRouter-HASH.js gzip 302 B 334 B ⚠️ +32 B
21c68fa65a48..217.css gzip 125 B N/A N/A
99a142a5cfae..804.css gzip N/A 125 B N/A
Overall change 9.1 kB 9.52 kB ⚠️ +418 B
Client Build Manifests Overall decrease ✓
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 420 B 390 B -30 B
Overall change 420 B 390 B -30 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
_error.js 1.36 MB 1.39 MB ⚠️ +28.2 kB
404.html 2.67 kB 2.76 kB ⚠️ +96 B
500.html 2.65 kB 2.75 kB ⚠️ +96 B
amp.amp.html 10.8 kB 10.8 kB
amp.html 1.86 kB 1.96 kB ⚠️ +96 B
css.html 2.04 kB 2.13 kB ⚠️ +96 B
hooks.html 1.92 kB 2.01 kB ⚠️ +96 B
index.js 1.36 MB 1.39 MB ⚠️ +28.2 kB
link.js 1.42 MB 1.45 MB ⚠️ +28.8 kB
routerDirect.js 1.41 MB 1.44 MB ⚠️ +28.8 kB
withRouter.js 1.41 MB 1.44 MB ⚠️ +28.8 kB
Overall change 7 MB 7.14 MB ⚠️ +143 kB

Webpack 4 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
buildDuration 12.1s 12.6s ⚠️ +534ms
buildDurationCached 5.1s 5s -82ms
nodeModulesSize 46 MB 46.7 MB ⚠️ +635 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
/ failed reqs 0 0
/ total time (seconds) 2.162 2.601 ⚠️ +0.44
/ avg req/sec 1156.3 961.3 ⚠️ -195
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.476 1.529 ⚠️ +0.05
/error-in-render avg req/sec 1694.17 1635.16 ⚠️ -59.01
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
677f882d2ed8..HASH.js gzip 13.4 kB 13.3 kB -86 B
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.12 kB 7.19 kB ⚠️ +78 B
webpack-HASH.js gzip 751 B 751 B
Overall change 60.2 kB 60.2 kB -8 B
Legacy Client Bundles (polyfills)
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
_app-HASH.js gzip 1.28 kB 1.28 kB
_error-HASH.js gzip 3.46 kB 3.71 kB ⚠️ +255 B
amp-HASH.js gzip 536 B 536 B
css-HASH.js gzip 339 B 339 B
hooks-HASH.js gzip 887 B 887 B
index-HASH.js gzip 227 B 227 B
link-HASH.js gzip 1.65 kB 1.65 kB
routerDirect..HASH.js gzip 303 B 303 B
withRouter-HASH.js gzip 302 B 302 B
21c68fa65a48..217.css gzip 125 B 125 B
Overall change 9.1 kB 9.36 kB ⚠️ +255 B
Client Build Manifests Overall decrease ✓
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 420 B 419 B -1 B
Overall change 420 B 419 B -1 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary v10.1.3 vercel/next.js refs/heads/canary Change
index.html gzip 613 B 613 B
link.html gzip 620 B 621 B ⚠️ +1 B
withRouter.html gzip 606 B 606 B
Overall change 1.84 kB 1.84 kB ⚠️ +1 B

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-b460df3d63326fbb06a1.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-6fc12bd74dc2417101e6.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-c75557f170c57b2c8979.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-27f75ad11120c5cdedd1.js"],
   "/css": [
Diff for _error-HASH.js
@@ -540,8 +540,23 @@ Also adds support for deduplicated `key` properties
           .map(function(c, i) {
             var key = c.key || i;
 
-            if (false) {
-              var newProps;
+            if (true && !props.inAmpMode) {
+              if (
+                c.type === "link" &&
+                c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.
+                ["https://fonts.googleapis.com/css"].some(function(url) {
+                  return c.props["href"].startsWith(url);
+                })
+              ) {
+                var newProps = _objectSpread({}, c.props || {});
+
+                newProps["data-href"] = newProps["href"];
+                newProps["href"] = undefined;
+                return /*#__PURE__*/ _react["default"].cloneElement(
+                  c,
+                  newProps
+                );
+              }
             }
 
             return /*#__PURE__*/ _react["default"].cloneElement(c, {
Diff for 677f882d2ed8..c4df.HASH.js
@@ -465,12 +465,6 @@
     /***/ Nh2W: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
-      var _regeneratorRuntime = __webpack_require__("o0o1");
-
-      var _slicedToArray = __webpack_require__("J4zp");
-
-      var _asyncToGenerator = __webpack_require__("yXPU");
-
       var _interopRequireDefault = __webpack_require__("TqRt");
 
       exports.__esModule = true;
@@ -738,97 +732,59 @@
                 if (old && "resolve" in old) old.resolve(input);
               });
           },
-          loadRoute: function loadRoute(route) {
+          loadRoute: function loadRoute(route, prefetch) {
             var _this = this;
 
-            return withFuture(
-              route,
-              routes,
-              /*#__PURE__*/ _asyncToGenerator(
-                /*#__PURE__*/ _regeneratorRuntime.mark(function _callee() {
-                  var _yield$getFilesForRou,
-                    scripts,
-                    css,
-                    _yield$Promise$all,
-                    _yield$Promise$all2,
-                    styles,
-                    entrypoint,
-                    res;
-
-                  return _regeneratorRuntime.wrap(
-                    function _callee$(_context) {
-                      while (1) {
-                        switch ((_context.prev = _context.next)) {
-                          case 0:
-                            _context.prev = 0;
-                            _context.next = 3;
-                            return getFilesForRoute(assetPrefix, route);
-
-                          case 3:
-                            _yield$getFilesForRou = _context.sent;
-                            scripts = _yield$getFilesForRou.scripts;
-                            css = _yield$getFilesForRou.css;
-                            _context.next = 8;
-                            return Promise.all([
-                              entrypoints.has(route)
-                                ? []
-                                : Promise.all(scripts.map(maybeExecuteScript)),
-                              Promise.all(css.map(fetchStyleSheet))
-                            ]);
-
-                          case 8:
-                            _yield$Promise$all = _context.sent;
-                            _yield$Promise$all2 = _slicedToArray(
-                              _yield$Promise$all,
-                              2
-                            );
-                            styles = _yield$Promise$all2[1];
-                            _context.next = 13;
-                            return resolvePromiseWithTimeout(
-                              _this.whenEntrypoint(route),
-                              MS_MAX_IDLE_DELAY,
-                              markAssetError(
-                                new Error(
-                                  "Route did not complete loading: ".concat(
-                                    route
-                                  )
-                                )
-                              )
-                            );
-
-                          case 13:
-                            entrypoint = _context.sent;
-                            res = Object.assign(
-                              {
-                                styles: styles
-                              },
-                              entrypoint
-                            );
-                            return _context.abrupt(
-                              "return",
-                              "error" in entrypoint ? entrypoint : res
-                            );
-
-                          case 18:
-                            _context.prev = 18;
-                            _context.t0 = _context["catch"](0);
-                            return _context.abrupt("return", {
-                              error: _context.t0
-                            });
-
-                          case 21:
-                          case "end":
-                            return _context.stop();
-                        }
-                      }
+            return withFuture(route, routes, function() {
+              return resolvePromiseWithTimeout(
+                getFilesForRoute(assetPrefix, route)
+                  .then(function(_ref) {
+                    var scripts = _ref.scripts,
+                      css = _ref.css;
+                    return Promise.all([
+                      entrypoints.has(route)
+                        ? []
+                        : Promise.all(scripts.map(maybeExecuteScript)),
+                      Promise.all(css.map(fetchStyleSheet))
+                    ]);
+                  })
+                  .then(function(res) {
+                    return _this
+                      .whenEntrypoint(route)
+                      .then(function(entrypoint) {
+                        return {
+                          entrypoint: entrypoint,
+                          styles: res[1]
+                        };
+                      });
+                  }),
+                MS_MAX_IDLE_DELAY,
+                markAssetError(
+                  new Error("Route did not complete loading: ".concat(route))
+                )
+              )
+                .then(function(_ref2) {
+                  var entrypoint = _ref2.entrypoint,
+                    styles = _ref2.styles;
+                  var res = Object.assign(
+                    {
+                      styles: styles
                     },
-                    _callee,
-                    null,
-                    [[0, 18]]
+                    entrypoint
                   );
+                  return "error" in entrypoint ? entrypoint : res;
                 })
-              )
-            );
+                ["catch"](function(err) {
+                  if (prefetch) {
+                    // we don't want to cache errors during prefetch
+                    throw err;
+                  }
+
+                  return {
+                    error: err
+                  };
+                });
+            });
           },
           prefetch: function prefetch(route) {
             var _this2 = this;
@@ -855,7 +811,7 @@
               })
               .then(function() {
                 (0, _requestIdleCallback.requestIdleCallback)(function() {
-                  return _this2.loadRoute(route);
+                  return _this2.loadRoute(route, true)["catch"](function() {});
                 });
               })
               ["catch"](
@@ -1234,9 +1190,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
           : {
               default: obj
             };
-      }
-      /* global __NEXT_DATA__ */
-      // tslint:disable:no-console
+      } // tslint:disable:no-console
 
       var detectDomainLocale;
 
@@ -1273,6 +1227,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
       function addLocale(path, locale, defaultLocale) {
         if (false) {
+          var localeLower, pathLower, pathname;
         }
 
         return path;
@@ -1280,6 +1235,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
       function delLocale(path, locale) {
         if (false) {
+          var localeLower, pathLower, pathname;
         }
 
         return path;
@@ -1753,7 +1709,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
           this.isReady = !!(
             self.__NEXT_DATA__.gssp ||
             self.__NEXT_DATA__.gip ||
-            (!autoExportDynamic && !self.location.search)
+            (!autoExportDynamic && !self.location.search && !false)
           );
           this.isPreview = !!isPreview;
           this.isLocaleDomain = false;
Diff for main-HASH.js
@@ -350,7 +350,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         }
       }
 
-      var _interopRequireWildcard3 = __webpack_require__("284h");
+      var _interopRequireWildcard = __webpack_require__("284h");
 
       var _interopRequireDefault = __webpack_require__("TqRt");
 
@@ -363,10 +363,6 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
 
       var _extends2 = _interopRequireDefault(__webpack_require__("pVnL"));
 
-      var _interopRequireWildcard2 = _interopRequireDefault(
-        __webpack_require__("284h")
-      );
-
       __webpack_require__("0sNQ");
 
       var _react = _interopRequireDefault(__webpack_require__("q1tI"));
@@ -383,9 +379,9 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
 
       var _isDynamic = __webpack_require__("/jkW");
 
-      var querystring = _interopRequireWildcard3(__webpack_require__("3WeD"));
+      var querystring = _interopRequireWildcard(__webpack_require__("3WeD"));
 
-      var envConfig = _interopRequireWildcard3(__webpack_require__("yLiY"));
+      var envConfig = _interopRequireWildcard(__webpack_require__("yLiY"));
 
       var _utils = __webpack_require__("g/15");
 
@@ -408,7 +404,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         document.getElementById("__NEXT_DATA__").textContent
       );
       window.__NEXT_DATA__ = data;
-      var version = "10.1.3";
+      var version = "10.1.4-canary.18";
       exports.version = version;
 
       var looseToArray = function looseToArray(input) {
@@ -522,12 +518,24 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
               // - if it is a client-side skeleton (fallback render)
 
               if (
-                router.isSsr &&
+                router.isSsr && // We don't update for 404 requests as this can modify
+                // the asPath unexpectedly e.g. adding basePath when
+                // it wasn't originally present
+                page !== "/404" &&
+                !(
+                  page === "/_error" &&
+                  hydrateProps &&
+                  hydrateProps.pageProps &&
+                  hydrateProps.pageProps.statusCode === 404
+                ) &&
                 (isFallback ||
                   (data.nextExport &&
                     ((0, _isDynamic.isDynamicRoute)(router.pathname) ||
-                      location.search)) ||
-                  (hydrateProps && hydrateProps.__N_SSG && location.search))
+                      location.search ||
+                      false)) ||
+                  (hydrateProps &&
+                    hydrateProps.__N_SSG &&
+                    (location.search || false)))
               ) {
                 // update query on mount for exported pages
                 router.replace(
@@ -601,10 +609,10 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         var _ref3 = _asyncToGenerator(
           /*#__PURE__*/ _regeneratorRuntime.mark(function _callee() {
             var opts,
+              initialErr,
               appEntrypoint,
               app,
               mod,
-              initialErr,
               pageEntrypoint,
               _require7,
               isValidElementType,
@@ -627,20 +635,22 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
                       if (false) {
                       }
 
-                      _context.next = 4;
+                      initialErr = hydrateErr;
+                      _context.prev = 3;
+                      _context.next = 6;
                       return pageLoader.routeLoader.whenEntrypoint("/_app");
 
-                    case 4:
+                    case 6:
                       appEntrypoint = _context.sent;
 
                       if (!("error" in appEntrypoint)) {
-                        _context.next = 7;
+                        _context.next = 9;
                         break;
                       }
 
                       throw appEntrypoint.error;
 
-                    case 7:
+                    case 9:
                       (app = appEntrypoint.component),
                         (mod = appEntrypoint.exports);
                       CachedApp = app;
@@ -679,9 +689,6 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
                         };
                       }
 
-                      initialErr = hydrateErr;
-                      _context.prev = 11;
-
                       if (true) {
                         _context.next = 16;
                         break;
@@ -745,7 +752,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
 
                     case 29:
                       _context.prev = 29;
-                      _context.t1 = _context["catch"](11);
+                      _context.t1 = _context["catch"](3);
                       // This catches errors like throwing in the top level of a module
                       initialErr = _context.t1;
 
@@ -792,11 +799,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
                           domainLocales: domainLocales,
                           isPreview: isPreview
                         }
-                      ); // call init-client middleware
-
-                      if (false) {
-                      }
-
+                      );
                       renderCtx = {
                         App: CachedApp,
                         initial: true,
@@ -811,14 +814,14 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
                       render(renderCtx);
                       return _context.abrupt("return", emitter);
 
-                    case 44:
+                    case 43:
                       return _context.abrupt("return", {
                         emitter: emitter,
                         render: render,
                         renderCtx: renderCtx
                       });
 
-                    case 45:
+                    case 44:
                     case "end":
                       return _context.stop();
                   }
@@ -826,7 +829,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
               },
               _callee,
               null,
-              [[11, 29]]
+              [[3, 29]]
             );
           })
         );
@@ -916,9 +919,6 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
           err = renderErrorProps.err; // In development runtime errors are caught by our overlay
         // In production we catch runtime errors using componentDidCatch which will trigger renderError
 
-        if (false) {
-        }
-
         if (false) {
         } // Make sure we log the error to the console, otherwise users can't track down issues.
 
@@ -960,23 +960,28 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
       }
 
       var reactRoot = null;
-      var shouldUseHydrate = typeof _reactDom["default"].hydrate === "function";
+      var shouldHydrate = typeof _reactDom["default"].hydrate === "function";
+
+      function renderReactElement(domEl, fn) {
+        // mark start of hydrate/render
+        if (_utils.ST) {
+          performance.mark("beforeRender");
+        }
+
+        var reactEl = fn(
+          shouldHydrate ? markHydrateComplete : markRenderComplete
+        );
 
-      function renderReactElement(reactEl, domEl) {
         if (false) {
-          var opts;
+          var createRootName;
         } else {
-          // mark start of hydrate/render
-          if (_utils.ST) {
-            performance.mark("beforeRender");
-          } // The check for `.hydrate` is there to support React alternatives like preact
+          // The check for `.hydrate` is there to support React alternatives like preact
+          if (shouldHydrate) {
+            _reactDom["default"].hydrate(reactEl, domEl);
 
-          if (shouldUseHydrate) {
-            _reactDom["default"].hydrate(reactEl, domEl, markHydrateComplete);
-
-            shouldUseHydrate = false;
+            shouldHydrate = false;
           } else {
-            _reactDom["default"].render(reactEl, domEl, markRenderComplete);
+            _reactDom["default"].render(reactEl, domEl);
           }
         }
       }
@@ -1241,11 +1246,11 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
           resolvePromise();
         }
 
+        onStart();
+
         var elem = /*#__PURE__*/ _react["default"].createElement(
-          Root,
-          {
-            callback: onRootCommit
-          },
+          _react["default"].Fragment,
+          null,
           /*#__PURE__*/ _react["default"].createElement(Head, {
             callback: onHeadCommit
           }),
@@ -1264,25 +1269,33 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
               )
             )
           )
-        );
+        ); // We catch runtime errors using componentDidCatch which will trigger renderError
 
-        onStart(); // We catch runtime errors using componentDidCatch which will trigger renderError
-
-        renderReactElement(false ? /*#__PURE__*/ undefined : elem, appElement);
+        renderReactElement(appElement, function(callback) {
+          return /*#__PURE__*/ _react["default"].createElement(
+            Root,
+            {
+              callbacks: [callback, onRootCommit]
+            },
+            false ? /*#__PURE__*/ undefined : elem
+          );
+        });
         return renderPromise;
       }
 
       function Root(_ref9) {
-        var callback = _ref9.callback,
+        var callbacks = _ref9.callbacks,
           children = _ref9.children;
 
-        // We use `useLayoutEffect` to guarantee the callback is executed
-        // as soon as React flushes the update.
+        // We use `useLayoutEffect` to guarantee the callbacks are executed
+        // as soon as React flushes the update
         _react["default"].useLayoutEffect(
           function() {
-            return callback();
+            return callbacks.forEach(function(callback) {
+              return callback();
+            });
           },
-          [callback]
+          [callbacks]
         );
 
         if (undefined) {
Diff for index.html
@@ -17,12 +17,12 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.93bc6152317c318ec255.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/main-9fc0c1058633c9eea817.js"
+      href="/_next/static/chunks/main-be59c279ac23ac915a3b.js"
       as="script"
     />
     <link
@@ -61,11 +61,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.93bc6152317c318ec255.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/main-9fc0c1058633c9eea817.js"
+      src="/_next/static/chunks/main-be59c279ac23ac915a3b.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -17,12 +17,12 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.93bc6152317c318ec255.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/main-9fc0c1058633c9eea817.js"
+      href="/_next/static/chunks/main-be59c279ac23ac915a3b.js"
       as="script"
     />
     <link
@@ -66,11 +66,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.93bc6152317c318ec255.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/main-9fc0c1058633c9eea817.js"
+      src="/_next/static/chunks/main-be59c279ac23ac915a3b.js"
       async=""
     ></script>
     <script
Diff for withRouter.html
@@ -17,12 +17,12 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.93bc6152317c318ec255.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/main-9fc0c1058633c9eea817.js"
+      href="/_next/static/chunks/main-be59c279ac23ac915a3b.js"
       as="script"
     />
     <link
@@ -61,11 +61,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.93bc6152317c318ec255.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/main-9fc0c1058633c9eea817.js"
+      src="/_next/static/chunks/main-be59c279ac23ac915a3b.js"
       async=""
     ></script>
     <script

Please sign in to comment.