Skip to content

Commit

Permalink
v10.0.10-canary.13
Browse files Browse the repository at this point in the history
  • Loading branch information
timneutkens committed Mar 29, 2021
1 parent 46fa9b6 commit d40a804
Show file tree
Hide file tree
Showing 15 changed files with 21 additions and 21 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.0.10-canary.12"
"version": "10.0.10-canary.13"
}
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.0.10-canary.12",
"version": "10.0.10-canary.13",
"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.0.10-canary.12",
"version": "10.0.10-canary.13",
"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.0.10-canary.12",
"version": "10.0.10-canary.13",
"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.0.10-canary.12",
"version": "10.0.10-canary.13",
"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.0.10-canary.12",
"version": "10.0.10-canary.13",
"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.0.10-canary.12",
"version": "10.0.10-canary.13",
"main": "index.js",
"license": "MIT",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/next-plugin-google-analytics/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/plugin-google-analytics",
"version": "10.0.10-canary.12",
"version": "10.0.10-canary.13",
"repository": {
"url": "vercel/next.js",
"directory": "packages/next-plugin-google-analytics"
Expand Down
2 changes: 1 addition & 1 deletion packages/next-plugin-sentry/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@next/plugin-sentry",
"version": "10.0.10-canary.12",
"version": "10.0.10-canary.13",
"repository": {
"url": "vercel/next.js",
"directory": "packages/next-plugin-sentry"
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.0.10-canary.12",
"version": "10.0.10-canary.13",
"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.0.10-canary.12",
"version": "10.0.10-canary.13",
"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.0.10-canary.12",
"version": "10.0.10-canary.13",
"description": "A polyfill for non-dead, nomodule browsers.",
"main": "dist/polyfill-nomodule.js",
"license": "MIT",
Expand Down
14 changes: 7 additions & 7 deletions packages/next/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "next",
"version": "10.0.10-canary.12",
"version": "10.0.10-canary.13",
"description": "The React Framework",
"main": "./dist/server/next.js",
"license": "MIT",
Expand Down Expand Up @@ -64,11 +64,11 @@
"@babel/eslint-parser": "7.13.4",
"@babel/runtime": "7.12.5",
"@hapi/accept": "5.0.1",
"@next/env": "10.0.10-canary.12",
"@next/eslint-plugin-next": "10.0.10-canary.12",
"@next/polyfill-module": "10.0.10-canary.12",
"@next/react-dev-overlay": "10.0.10-canary.12",
"@next/react-refresh-utils": "10.0.10-canary.12",
"@next/env": "10.0.10-canary.13",
"@next/eslint-plugin-next": "10.0.10-canary.13",
"@next/polyfill-module": "10.0.10-canary.13",
"@next/react-dev-overlay": "10.0.10-canary.13",
"@next/react-refresh-utils": "10.0.10-canary.13",
"@opentelemetry/api": "0.14.0",
"assert": "2.0.0",
"ast-types": "0.13.2",
Expand Down Expand Up @@ -149,7 +149,7 @@
"@babel/preset-react": "7.12.10",
"@babel/preset-typescript": "7.12.7",
"@babel/types": "7.12.12",
"@next/polyfill-nomodule": "10.0.10-canary.12",
"@next/polyfill-nomodule": "10.0.10-canary.13",
"@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.0.10-canary.12",
"version": "10.0.10-canary.13",
"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.0.10-canary.12",
"version": "10.0.10-canary.13",
"description": "An experimental package providing utilities for React Refresh.",
"repository": {
"url": "vercel/next.js",
Expand Down

1 comment on commit d40a804

@ijjk
Copy link
Member

@ijjk ijjk commented on d40a804 Mar 29, 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.0.9 vercel/next.js refs/heads/canary Change
buildDuration 12.2s 13s ⚠️ +775ms
nodeModulesSize 42.8 MB 61.8 MB ⚠️ +18.9 MB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
/ failed reqs 0 0
/ total time (seconds) 2.114 2.095 -0.02
/ avg req/sec 1182.78 1193.19 +10.41
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.247 1.287 ⚠️ +0.04
/error-in-render avg req/sec 2004.76 1942.74 ⚠️ -62.02
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
677f882d2ed8..a2e7.js gzip 13.4 kB 13.4 kB -36 B
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.67 kB 7.12 kB ⚠️ +454 B
webpack-HASH.js gzip 751 B 751 B
Overall change 59.8 kB 60.2 kB ⚠️ +418 B
Legacy Client Bundles (polyfills)
vercel/next.js canary v10.0.9 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 decrease ✓
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
_app-fde3324..9dd1.js gzip 1.28 kB 1.28 kB
_error-af59f..582f.js gzip 3.46 kB 3.46 kB
amp-9716187d..0aa8.js gzip 536 B 536 B
hooks-107e90..74c7.js gzip 888 B 888 B
index-ac435c..ecf2.js gzip 227 B 227 B
link-c0d2c96..de48.js gzip 1.67 kB 1.64 kB -24 B
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
Overall change 8.66 kB 8.64 kB -24 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 347 B 370 B ⚠️ +23 B
Overall change 347 B 370 B ⚠️ +23 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
index.html gzip 613 B 612 B -1 B
link.html gzip 619 B 621 B ⚠️ +2 B
withRouter.html gzip 608 B 606 B -2 B
Overall change 1.84 kB 1.84 kB -1 B

Diffs

Diff for _buildManifest.js
@@ -1,5 +1,5 @@
 self.__BUILD_MANIFEST = {
-  __rewrites: [],
+  __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-b1738b6c9dd4aa373c84.js"],
   "/_error": [
     "static\u002Fchunks\u002Fpages\u002F_error-6fc12bd74dc2417101e6.js"
@@ -8,7 +8,7 @@ self.__BUILD_MANIFEST = {
   "/hooks": [
     "static\u002Fchunks\u002Fpages\u002Fhooks-1c83fdb5c77614f18817.js"
   ],
-  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-3d75e6578a827afdc3f9.js"],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-bf04d9f6f2632168c572.js"],
   "/routerDirect": [
     "static\u002Fchunks\u002Fpages\u002FrouterDirect-d1f18fd0349b020a8f6c.js"
   ],
Diff for link-3d75e65..27afdc3f9.js
@@ -145,13 +145,6 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
           shallow: shallow,
           locale: locale,
           scroll: scroll
-        }).then(function(success) {
-          if (!success) return;
-
-          if (scroll) {
-            // FIXME: proper route announcing at Router level, not Link:
-            document.body.focus();
-          }
         });
       }
Diff for 677f882d2ed8..29e58243f.js
@@ -1496,21 +1496,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
         };
       }
 
-      function resolveDynamicRoute(parsedHref, pages) {
-        var applyBasePath =
-          arguments.length > 2 && arguments[2] !== undefined
-            ? arguments[2]
-            : true;
-        var pathname = parsedHref.pathname;
+      function resolveDynamicRoute(pathname, pages) {
         var cleanPathname = (0,
         _normalizeTrailingSlash.removePathTrailingSlash)(
-          (0, _denormalizePagePath.denormalizePagePath)(
-            applyBasePath ? delBasePath(pathname) : pathname
-          )
+          (0, _denormalizePagePath.denormalizePagePath)(pathname)
         );
 
         if (cleanPathname === "/404" || cleanPathname === "/_error") {
-          return parsedHref;
+          return pathname;
         } // handle resolving href for dynamic routes
 
         if (!pages.includes(cleanPathname)) {
@@ -1520,15 +1513,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
               (0, _isDynamic.isDynamicRoute)(page) &&
               (0, _routeRegex.getRouteRegex)(page).re.test(cleanPathname)
             ) {
-              parsedHref.pathname = applyBasePath ? addBasePath(page) : page;
+              pathname = page;
               return true;
             }
           });
         }
 
-        parsedHref.pathname = (0,
-        _normalizeTrailingSlash.removePathTrailingSlash)(parsedHref.pathname);
-        return parsedHref;
+        return (0, _normalizeTrailingSlash.removePathTrailingSlash)(pathname);
       }
 
       var manualScrollRestoration = false && false;
@@ -1881,15 +1872,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                     routeProps,
                     cleanedAs,
                     parsed,
-                    _parsed,
                     pathname,
                     query,
                     pages,
                     rewrites,
                     _yield,
-                    route,
                     resolvedAs,
                     rewritesResult,
+                    route,
                     _parsedAs,
                     asPathname,
                     routeRegex,
@@ -2075,9 +2065,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             parsed = (0, _parseRelativeUrl.parseRelativeUrl)(
                               url
                             );
-                            (_parsed = parsed),
-                              (pathname = _parsed.pathname),
-                              (query = _parsed.query); // The build manifest needs to be loaded before auto-static dynamic pages
+                            (pathname = parsed.pathname),
+                              (query = parsed.query); // The build manifest needs to be loaded before auto-static dynamic pages
                             // get their query parameters to allow ensuring they can be parsed properly
                             // when rewritten to
 
@@ -2105,12 +2094,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             return _context.abrupt("return", false);
 
                           case 50:
-                            parsed = resolveDynamicRoute(parsed, pages);
+                            // If asked to change the current URL we should reload the current page
+                            // (not location.reload() but reload getInitialProps and other Next.js stuffs)
+                            // We also need to set the method = replaceState always
+                            // as this should not go into the history (That's how browsers work)
+                            // We should compare the new asPath to the current asPath, not the url
+                            if (!this.urlIsNew(cleanedAs) && !localeChange) {
+                              method = "replaceState";
+                            } // we need to resolve the as value using rewrites for dynamic SSG
+                            // pages to allow building the data URL correctly
 
-                            if (parsed.pathname !== pathname) {
-                              pathname = parsed.pathname;
-                              url = (0, _utils.formatWithValidation)(parsed);
-                            } // url and as should always be prefixed with basePath by this
+                            resolvedAs = as; // url and as should always be prefixed with basePath by this
                             // point by either next/link or router.push/replace so strip the
                             // basePath from the pathname to match the pages dir 1-to-1
 
@@ -2119,34 +2113,37 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                                 _normalizeTrailingSlash.removePathTrailingSlash)(
                                   delBasePath(pathname)
                                 )
-                              : pathname; // If asked to change the current URL we should reload the current page
-                            // (not location.reload() but reload getInitialProps and other Next.js stuffs)
-                            // We also need to set the method = replaceState always
-                            // as this should not go into the history (That's how browsers work)
-                            // We should compare the new asPath to the current asPath, not the url
+                              : pathname;
 
-                            if (!this.urlIsNew(cleanedAs) && !localeChange) {
-                              method = "replaceState";
+                            if (pathname !== "/_error") {
+                              if (false) {
+                              } else {
+                                parsed.pathname = resolveDynamicRoute(
+                                  pathname,
+                                  pages
+                                );
+
+                                if (parsed.pathname !== pathname) {
+                                  pathname = parsed.pathname;
+                                  url = (0, _utils.formatWithValidation)(
+                                    parsed
+                                  );
+                                }
+                              }
                             }
 
                             route = (0,
                             _normalizeTrailingSlash.removePathTrailingSlash)(
                               pathname
-                            ); // we need to resolve the as value using rewrites for dynamic SSG
-                            // pages to allow building the data URL correctly
-
-                            resolvedAs = as;
-
-                            if (false) {
-                            }
+                            );
 
                             if (isLocalURL(as)) {
-                              _context.next = 62;
+                              _context.next = 60;
                               break;
                             }
 
                             if (true) {
-                              _context.next = 60;
+                              _context.next = 58;
                               break;
                             }
 
@@ -2157,21 +2154,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                                   as,
                                   '", received relative href and external as'
                                 ) +
-                                "\nSee more info: https://err.sh/next.js/invalid-relative-url-external-as"
+                                "\nSee more info: https://nextjs.org/docs/messages/invalid-relative-url-external-as"
                             );
 
-                          case 60:
+                          case 58:
                             window.location.href = as;
                             return _context.abrupt("return", false);
 
-                          case 62:
+                          case 60:
                             resolvedAs = delLocale(
                               delBasePath(resolvedAs),
                               this.locale
                             );
 
                             if (!(0, _isDynamic.isDynamicRoute)(route)) {
-                              _context.next = 78;
+                              _context.next = 76;
                               break;
                             }
 
@@ -2194,7 +2191,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                                 (shouldInterpolate && !interpolatedAs.result)
                               )
                             ) {
-                              _context.next = 77;
+                              _context.next = 75;
                               break;
                             }
 
@@ -2205,7 +2202,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             });
 
                             if (!(missingParams.length > 0)) {
-                              _context.next = 75;
+                              _context.next = 73;
                               break;
                             }
 
@@ -2229,18 +2226,18 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                                       ") is incompatible with the `href` value ("
                                     )
                                     .concat(route, "). ")) +
-                                "Read more: https://err.sh/vercel/next.js/".concat(
+                                "Read more: https://nextjs.org/docs/messages/".concat(
                                   shouldInterpolate
                                     ? "href-interpolation-failed"
                                     : "incompatible-href-as"
                                 )
                             );
 
-                          case 75:
-                            _context.next = 78;
+                          case 73:
+                            _context.next = 76;
                             break;
 
-                          case 77:
+                          case 75:
                             if (shouldInterpolate) {
                               as = (0, _utils.formatWithValidation)(
                                 Object.assign({}, _parsedAs, {
@@ -2256,14 +2253,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               Object.assign(query, routeMatch);
                             }
 
-                          case 78:
+                          case 76:
                             Router.events.emit(
                               "routeChangeStart",
                               as,
                               routeProps
                             );
-                            _context.prev = 79;
-                            _context.next = 82;
+                            _context.prev = 77;
+                            _context.next = 80;
                             return this.getRouteInfo(
                               route,
                               pathname,
@@ -2273,7 +2270,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               routeProps
                             );
 
-                          case 82:
+                          case 80:
                             routeInfo = _context.sent;
                             (_routeInfo = routeInfo),
                               (error = _routeInfo.error),
@@ -2282,14 +2279,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               (__N_SSP = _routeInfo.__N_SSP); // handle redirect on client-transition
 
                             if (!((__N_SSG || __N_SSP) && props)) {
-                              _context.next = 109;
+                              _context.next = 107;
                               break;
                             }
 
                             if (
                               !(props.pageProps && props.pageProps.__N_REDIRECT)
                             ) {
-                              _context.next = 95;
+                              _context.next = 93;
                               break;
                             }
 
@@ -2298,16 +2295,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             // it's not
 
                             if (!destination.startsWith("/")) {
-                              _context.next = 93;
+                              _context.next = 91;
                               break;
                             }
 
                             parsedHref = (0,
                             _parseRelativeUrl.parseRelativeUrl)(destination);
-                            resolveDynamicRoute(parsedHref, pages, false);
+                            parsedHref.pathname = resolveDynamicRoute(
+                              parsedHref.pathname,
+                              pages
+                            );
 
                             if (!pages.includes(parsedHref.pathname)) {
-                              _context.next = 93;
+                              _context.next = 91;
                               break;
                             }
 
@@ -2323,37 +2323,37 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               this.change(method, newUrl, newAs, options)
                             );
 
-                          case 93:
+                          case 91:
                             window.location.href = destination;
                             return _context.abrupt(
                               "return",
                               new Promise(function() {})
                             );
 
-                          case 95:
+                          case 93:
                             this.isPreview = !!props.__N_PREVIEW; // handle SSG data 404
 
                             if (!(props.notFound === SSG_DATA_NOT_FOUND)) {
-                              _context.next = 109;
+                              _context.next = 107;
                               break;
                             }
 
-                            _context.prev = 97;
-                            _context.next = 100;
+                            _context.prev = 95;
+                            _context.next = 98;
                             return this.fetchComponent("/404");
 
-                          case 100:
+                          case 98:
                             notFoundRoute = "/404";
-                            _context.next = 106;
+                            _context.next = 104;
                             break;
 
-                          case 103:
-                            _context.prev = 103;
-                            _context.t1 = _context["catch"](97);
+                          case 101:
+                            _context.prev = 101;
+                            _context.t1 = _context["catch"](95);
                             notFoundRoute = "/_error";
 
-                          case 106:
-                            _context.next = 108;
+                          case 104:
+                            _context.next = 106;
                             return this.getRouteInfo(
                               notFoundRoute,
                               notFoundRoute,
@@ -2365,10 +2365,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               }
                             );
 
-                          case 108:
+                          case 106:
                             routeInfo = _context.sent;
 
-                          case 109:
+                          case 107:
                             Router.events.emit(
                               "beforeHistoryChange",
                               as,
@@ -2400,7 +2400,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               props.pageProps.statusCode = 500;
                             }
 
-                            _context.next = 116;
+                            _context.next = 114;
                             return this.set(
                               route,
                               pathname,
@@ -2419,9 +2419,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               else throw e;
                             });
 
-                          case 116:
+                          case 114:
                             if (!error) {
-                              _context.next = 119;
+                              _context.next = 117;
                               break;
                             }
 
@@ -2433,7 +2433,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             );
                             throw error;
 
-                          case 119:
+                          case 117:
                             if (false) {
                             }
 
@@ -2444,21 +2444,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             );
                             return _context.abrupt("return", true);
 
-                          case 124:
-                            _context.prev = 124;
-                            _context.t2 = _context["catch"](79);
+                          case 122:
+                            _context.prev = 122;
+                            _context.t2 = _context["catch"](77);
 
                             if (!_context.t2.cancelled) {
-                              _context.next = 128;
+                              _context.next = 126;
                               break;
                             }
 
                             return _context.abrupt("return", false);
 
-                          case 128:
+                          case 126:
                             throw _context.t2;
 
-                          case 129:
+                          case 127:
                           case "end":
                             return _context.stop();
                         }
@@ -2468,8 +2468,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                     this,
                     [
                       [36, 46],
-                      [79, 124],
-                      [97, 103]
+                      [77, 122],
+                      [95, 101]
                     ]
                   );
                 })
@@ -2956,16 +2956,15 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                   var asPath,
                     options,
                     parsed,
-                    _parsed2,
                     pathname,
                     parsedAs,
                     localePathResult,
                     pages,
-                    route,
                     resolvedAs,
                     rewrites,
                     _yield2,
                     rewritesResult,
+                    route,
                     _args4 = arguments;
 
                   return _regeneratorRuntime.wrap(
@@ -2984,7 +2983,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             parsed = (0, _parseRelativeUrl.parseRelativeUrl)(
                               url
                             );
-                            (_parsed2 = parsed), (pathname = _parsed2.pathname);
+                            pathname = parsed.pathname;
 
                             if (false) {
                             }
@@ -2994,17 +2993,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
                           case 7:
                             pages = _context4.sent;
-                            parsed = resolveDynamicRoute(parsed, pages, false);
-
-                            if (parsed.pathname !== pathname) {
-                              pathname = parsed.pathname;
-                              url = (0, _utils.formatWithValidation)(parsed);
-                            }
-
-                            route = (0,
-                            _normalizeTrailingSlash.removePathTrailingSlash)(
-                              pathname
-                            );
                             resolvedAs = asPath;
 
                             if (true) {
@@ -3012,29 +3000,26 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               break;
                             }
 
-                            _context4.next = 15;
+                            _context4.next = 12;
                             return (0, _routeLoader.getClientBuildManifest)();
 
-                          case 15:
+                          case 12:
                             _yield2 = _context4.sent;
                             rewrites = _yield2.__rewrites;
                             rewritesResult = (0, _resolveRewrites["default"])(
-                              addBasePath(
-                                addLocale(delBasePath(asPath), this.locale)
-                              ),
+                              addBasePath(addLocale(asPath, this.locale)),
                               pages,
                               rewrites,
                               parsed.query,
                               function(p) {
-                                return resolveDynamicRoute(
-                                  {
-                                    pathname: p
-                                  },
-                                  pages
-                                ).pathname;
+                                return resolveDynamicRoute(p, pages);
                               },
                               this.locales
                             );
+                            resolvedAs = delLocale(
+                              delBasePath(rewritesResult.asPath),
+                              this.locale
+                            );
 
                             if (
                               rewritesResult.matchedPage &&
@@ -3042,44 +3027,63 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             ) {
                               // if this directly matches a page we need to update the href to
                               // allow the correct page chunk to be loaded
-                              route = rewritesResult.resolvedHref;
                               pathname = rewritesResult.resolvedHref;
                               parsed.pathname = pathname;
                               url = (0, _utils.formatWithValidation)(parsed);
-                              resolvedAs = rewritesResult.asPath;
                             }
 
+                            _context4.next = 21;
+                            break;
+
                           case 19:
+                            parsed.pathname = resolveDynamicRoute(
+                              parsed.pathname,
+                              pages
+                            );
+
+                            if (parsed.pathname !== pathname) {
+                              pathname = parsed.pathname;
+                              url = (0, _utils.formatWithValidation)(parsed);
+                            }
+
+                          case 21:
+                            route = (0,
+                            _normalizeTrailingSlash.removePathTrailingSlash)(
+                              pathname
+                            ); // Prefetch is not supported in development mode because it would trigger on-demand-entries
+
                             if (true) {
-                              _context4.next = 21;
+                              _context4.next = 24;
                               break;
                             }
 
                             return _context4.abrupt("return");
 
-                          case 21:
-                            _context4.next = 23;
+                          case 24:
+                            _context4.next = 26;
                             return Promise.all([
-                              this.pageLoader._isSsg(url).then(function(isSsg) {
-                                return isSsg
-                                  ? _this3._getStaticData(
-                                      _this3.pageLoader.getDataHref(
-                                        url,
-                                        resolvedAs,
-                                        true,
-                                        typeof options.locale !== "undefined"
-                                          ? options.locale
-                                          : _this3.locale
+                              this.pageLoader
+                                ._isSsg(route)
+                                .then(function(isSsg) {
+                                  return isSsg
+                                    ? _this3._getStaticData(
+                                        _this3.pageLoader.getDataHref(
+                                          url,
+                                          resolvedAs,
+                                          true,
+                                          typeof options.locale !== "undefined"
+                                            ? options.locale
+                                            : _this3.locale
+                                        )
                                       )
-                                    )
-                                  : false;
-                              }),
+                                    : false;
+                                }),
                               this.pageLoader[
                                 options.priority ? "loadPage" : "prefetch"
                               ](route)
                             ]);
 
-                          case 23:
+                          case 26:
                           case "end":
                             return _context4.stop();
                         }
@@ -3378,7 +3382,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
                     message = '"'.concat(
                       getDisplayName(App),
-                      '.getInitialProps()" is defined as an instance method - visit https://err.sh/vercel/next.js/get-initial-props-as-an-instance-method for more information.'
+                      '.getInitialProps()" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.'
                     );
                     throw new Error(message);
Diff for main-HASH.js
@@ -83,6 +83,55 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
       /***/
     },
 
+    /***/ CQWR: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _slicedToArray = __webpack_require__("J4zp");
+
+      var _interopRequireWildcard = __webpack_require__("284h");
+
+      exports.__esModule = true;
+      exports.Portal = void 0;
+
+      var React = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _reactDom = __webpack_require__("i8i4");
+
+      var Portal = function Portal(_ref) {
+        var children = _ref.children,
+          type = _ref.type;
+        var portalNode = React.useRef(null);
+
+        var _React$useState = React.useState(),
+          _React$useState2 = _slicedToArray(_React$useState, 2),
+          forceUpdate = _React$useState2[1];
+
+        React.useEffect(
+          function() {
+            portalNode.current = document.createElement(type);
+            document.body.appendChild(portalNode.current);
+            forceUpdate({});
+            return function() {
+              if (portalNode.current) {
+                document.body.removeChild(portalNode.current);
+              }
+            };
+          },
+          [type]
+        );
+        return portalNode.current
+          ? /*#__PURE__*/ (0, _reactDom.createPortal)(
+              children,
+              portalNode.current
+            )
+          : null;
+      };
+
+      exports.Portal = Portal;
+
+      /***/
+    },
+
     /***/ DqTX: /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
@@ -340,6 +389,8 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
 
       var _utils = __webpack_require__("g/15");
 
+      var _portal = __webpack_require__("CQWR");
+
       var _headManager = _interopRequireDefault(__webpack_require__("DqTX"));
 
       var _pageLoader = _interopRequireDefault(__webpack_require__("zmvN"));
@@ -348,6 +399,8 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         __webpack_require__("bGXG")
       );
 
+      var _routeAnnouncer = __webpack_require__("oAez");
+
       var _router2 = __webpack_require__("nOHt");
       /* global location */
 
@@ -355,7 +408,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         document.getElementById("__NEXT_DATA__").textContent
       );
       window.__NEXT_DATA__ = data;
-      var version = "10.0.9";
+      var version = "10.0.10-canary.13";
       exports.version = version;
 
       var looseToArray = function looseToArray(input) {
@@ -1199,7 +1252,17 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
           /*#__PURE__*/ _react["default"].createElement(
             AppContainer,
             null,
-            /*#__PURE__*/ _react["default"].createElement(App, appProps)
+            /*#__PURE__*/ _react["default"].createElement(App, appProps),
+            /*#__PURE__*/ _react["default"].createElement(
+              _portal.Portal,
+              {
+                type: "next-route-announcer"
+              },
+              /*#__PURE__*/ _react["default"].createElement(
+                _routeAnnouncer.RouteAnnouncer,
+                null
+              )
+            )
           )
         );
 
@@ -1359,6 +1422,92 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
       /***/
     },
 
+    /***/ oAez: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _slicedToArray = __webpack_require__("J4zp");
+
+      var _interopRequireWildcard = __webpack_require__("284h");
+
+      exports.__esModule = true;
+      exports.RouteAnnouncer = RouteAnnouncer;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _router = __webpack_require__("nOHt");
+
+      function RouteAnnouncer() {
+        var _ref = (0, _router.useRouter)(),
+          asPath = _ref.asPath;
+
+        var _ref2 = (0, _react.useState)(""),
+          _ref3 = _slicedToArray(_ref2, 2),
+          routeAnnouncement = _ref3[0],
+          setRouteAnnouncement = _ref3[1]; // Only announce the path change, but not for the first load because screen reader will do that automatically.
+
+        var initialPathLoaded = (0, _react.useRef)(false); // Every time the path changes, announce the route change. The announcement will be prioritized by h1, then title
+        // (from metadata), and finally if those don't exist, then the pathName that is in the URL. This methodology is
+        // inspired by Marcy Sutton's accessible client routing user testing. More information can be found here:
+        // https://www.gatsbyjs.com/blog/2019-07-11-user-testing-accessible-client-routing/
+
+        (0, _react.useEffect)(
+          function() {
+            if (!initialPathLoaded.current) {
+              initialPathLoaded.current = true;
+              return;
+            }
+
+            var newRouteAnnouncement;
+            var pageHeader = document.querySelector("h1");
+
+            if (pageHeader) {
+              newRouteAnnouncement =
+                pageHeader.innerText || pageHeader.textContent;
+            }
+
+            if (!newRouteAnnouncement) {
+              if (document.title) {
+                newRouteAnnouncement = document.title;
+              } else {
+                newRouteAnnouncement = asPath;
+              }
+            }
+
+            setRouteAnnouncement(newRouteAnnouncement);
+          }, // TODO: switch to pathname + query object of dynamic route requirements
+          [asPath]
+        );
+        return /*#__PURE__*/ _react["default"].createElement(
+          "p",
+          {
+            "aria-live": "assertive", // Make the announcement immediately.
+            id: "__next-route-announcer__",
+            role: "alert",
+            style: {
+              border: 0,
+              clip: "rect(0 0 0 0)",
+              height: "1px",
+              margin: "-1px",
+              overflow: "hidden",
+              padding: 0,
+              position: "absolute",
+              width: "1px",
+              // https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
+              whiteSpace: "nowrap",
+              wordWrap: "normal"
+            }
+          },
+          routeAnnouncement
+        );
+      }
+
+      var _default = RouteAnnouncer;
+      exports["default"] = _default;
+
+      /***/
+    },
+
     /***/ p0hA: /***/ function(module, exports, __webpack_require__) {
       /* WEBPACK VAR INJECTION */ (function(__dirname) {
         module.exports = (function() {
@@ -1787,16 +1936,12 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
                 : getHrefForSlug(route);
             }
             /**
-             * @param {string} href the route href (file-system path)
+             * @param {string} route - the route (file-system path)
              */
           },
           {
             key: "_isSsg",
-            value: function _isSsg(href) {
-              var _ref3 = (0, _parseRelativeUrl.parseRelativeUrl)(href),
-                hrefPathname = _ref3.pathname;
-
-              var route = normalizeRoute(hrefPathname);
+            value: function _isSsg(route) {
               return this.promisedSsgManifest.then(function(s) {
                 return s.has(route);
               });
Diff for index.html
@@ -7,27 +7,27 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-b61a93e2802f7678b37a.js"
+      href="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
+      href="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.3f42defbaad29e58243f.js"
+      href="/_next/static/chunks/main-9ab6e83252cf10be1eed.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/pages/_app-a24430c6b07ae4b780ba.js"
+      href="/_next/static/chunks/pages/_app-b27d78b0671a2f452859.js"
       as="script"
     />
     <link
@@ -53,23 +53,23 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-b61a93e2802f7678b37a.js"
+      src="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
+      src="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.3f42defbaad29e58243f.js"
+      src="/_next/static/chunks/main-9ab6e83252cf10be1eed.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-a24430c6b07ae4b780ba.js"
+      src="/_next/static/chunks/pages/_app-b27d78b0671a2f452859.js"
       async=""
     ></script>
     <script
Diff for link.html
@@ -7,32 +7,32 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-b61a93e2802f7678b37a.js"
+      href="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
+      href="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.3f42defbaad29e58243f.js"
+      href="/_next/static/chunks/main-9ab6e83252cf10be1eed.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/pages/_app-a24430c6b07ae4b780ba.js"
+      href="/_next/static/chunks/pages/_app-b27d78b0671a2f452859.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/pages/link-3d75e6578a827afdc3f9.js"
+      href="/_next/static/chunks/pages/link-bf04d9f6f2632168c572.js"
       as="script"
     />
   </head>
@@ -58,27 +58,27 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-b61a93e2802f7678b37a.js"
+      src="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
+      src="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.3f42defbaad29e58243f.js"
+      src="/_next/static/chunks/main-9ab6e83252cf10be1eed.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-a24430c6b07ae4b780ba.js"
+      src="/_next/static/chunks/pages/_app-b27d78b0671a2f452859.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/link-3d75e6578a827afdc3f9.js"
+      src="/_next/static/chunks/pages/link-bf04d9f6f2632168c572.js"
       async=""
     ></script>
     <script src="/_next/static/BUILD_ID/_buildManifest.js" async=""></script>
Diff for withRouter.html
@@ -7,27 +7,27 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-b61a93e2802f7678b37a.js"
+      href="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
+      href="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.3f42defbaad29e58243f.js"
+      href="/_next/static/chunks/main-9ab6e83252cf10be1eed.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/pages/_app-a24430c6b07ae4b780ba.js"
+      href="/_next/static/chunks/pages/_app-b27d78b0671a2f452859.js"
       as="script"
     />
     <link
@@ -53,23 +53,23 @@
       src="/_next/static/chunks/polyfills-020d2be99297a5eb71a0.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-b61a93e2802f7678b37a.js"
+      src="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/webpack-becabbdf5d4df28a038e.js"
+      src="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/framework.c2766659ac6e6a63ca79.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.d5b389c227c16c686519.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.3f42defbaad29e58243f.js"
+      src="/_next/static/chunks/main-9ab6e83252cf10be1eed.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-a24430c6b07ae4b780ba.js"
+      src="/_next/static/chunks/pages/_app-b27d78b0671a2f452859.js"
       async=""
     ></script>
     <script

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
buildDuration 14s 14.9s ⚠️ +857ms
nodeModulesSize 42.8 MB 61.8 MB ⚠️ +18.9 MB
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
677f882d2ed8..a2e7.js gzip 13.4 kB N/A N/A
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.67 kB 7.12 kB ⚠️ +454 B
webpack-HASH.js gzip 751 B 751 B
677f882d2ed8..7edd.js gzip N/A 13.4 kB N/A
Overall change 59.8 kB 60.2 kB ⚠️ +418 B
Legacy Client Bundles (polyfills)
vercel/next.js canary v10.0.9 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 decrease ✓
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
_app-fde3324..9dd1.js gzip 1.28 kB N/A N/A
_error-af59f..582f.js gzip 3.46 kB 3.46 kB
amp-9716187d..0aa8.js gzip 536 B 536 B
hooks-107e90..74c7.js gzip 888 B 888 B
index-ac435c..ecf2.js gzip 227 B 227 B
link-c0d2c96..de48.js gzip 1.67 kB N/A N/A
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
_app-8fbabfc..6440.js gzip N/A 1.28 kB N/A
link-c31053f..c329.js gzip N/A 1.64 kB N/A
Overall change 8.66 kB 8.64 kB -24 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 347 B 370 B ⚠️ +23 B
Overall change 347 B 370 B ⚠️ +23 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
_error.js 1.02 MB 1.36 MB ⚠️ +344 kB
404.html 2.67 kB 2.67 kB
500.html 2.65 kB 2.65 kB
amp.amp.html 10.6 kB 10.6 kB
amp.html 1.86 kB 1.86 kB
hooks.html 1.92 kB 1.92 kB
index.js 1.02 MB 1.36 MB ⚠️ +344 kB
link.js 1.08 MB 1.42 MB ⚠️ +343 kB
routerDirect.js 1.07 MB 1.41 MB ⚠️ +344 kB
withRouter.js 1.07 MB 1.41 MB ⚠️ +344 kB
Overall change 5.27 MB 6.99 MB ⚠️ +1.72 MB

Webpack 5 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
buildDuration 14s 16s ⚠️ +2s
nodeModulesSize 42.8 MB 61.8 MB ⚠️ +18.9 MB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
/ failed reqs 0 0
/ total time (seconds) 2.042 2.102 ⚠️ +0.06
/ avg req/sec 1224.23 1189.61 ⚠️ -34.62
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.286 1.336 ⚠️ +0.05
/error-in-render avg req/sec 1943.69 1871.58 ⚠️ -72.11
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
597-2bc2376a..203d.js gzip 13.3 kB 13.3 kB -51 B
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 6.61 kB 151 B -6.46 kB
webpack-HASH.js gzip 954 B 993 B ⚠️ +39 B
778-f03a6e43..c786.js gzip N/A 7.05 kB N/A
Overall change 60.2 kB 60.8 kB ⚠️ +575 B
Legacy Client Bundles (polyfills) Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB ⚠️ +12 B
Overall change 31.1 kB 31.1 kB ⚠️ +12 B
Client Pages Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
_app-0c62a59..94b7.js gzip 1.26 kB 1.3 kB ⚠️ +40 B
_error-97d24..ed28.js gzip 3.38 kB 3.4 kB ⚠️ +24 B
amp-2926e4c2..9ccc.js gzip 536 B 558 B ⚠️ +22 B
hooks-1ed65b..8908.js gzip 902 B 924 B ⚠️ +22 B
index-6259b6..77d8.js gzip 230 B 243 B ⚠️ +13 B
link-b722682..14a4.js gzip 1.65 kB 1.66 kB ⚠️ +6 B
routerDirect..862a.js gzip 306 B N/A N/A
withRouter-4..76fd.js gzip 302 B 334 B ⚠️ +32 B
routerDirect..5759.js gzip N/A 336 B N/A
Overall change 8.57 kB 8.76 kB ⚠️ +189 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
_buildManifest.js gzip 322 B 349 B ⚠️ +27 B
Overall change 322 B 349 B ⚠️ +27 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary v10.0.9 vercel/next.js refs/heads/canary Change
index.html gzip 587 B 610 B ⚠️ +23 B
link.html gzip 593 B 615 B ⚠️ +22 B
withRouter.html gzip 581 B 605 B ⚠️ +24 B
Overall change 1.76 kB 1.83 kB ⚠️ +69 B

Diffs

Diff for _buildManifest.js
@@ -1,5 +1,5 @@
 self.__BUILD_MANIFEST = {
-  __rewrites: [],
+  __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-ac435c89e537f4e6ecf2.js"],
   "/_error": [
     "static\u002Fchunks\u002Fpages\u002F_error-af59f52346097a29582f.js"
@@ -8,7 +8,7 @@ self.__BUILD_MANIFEST = {
   "/hooks": [
     "static\u002Fchunks\u002Fpages\u002Fhooks-107e903cc2136d5974c7.js"
   ],
-  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-c0d2c9648c4e376cde48.js"],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-c31053f6d096d7dcc329.js"],
   "/routerDirect": [
     "static\u002Fchunks\u002Fpages\u002FrouterDirect-68414267e80493f2dc9d.js"
   ],
Diff for link-c0d2c96..e376cde48.js
@@ -74,34 +74,34 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           d = s.as,
           v = e.children,
           h = e.replace,
-          y = e.shallow,
-          b = e.scroll,
-          g = e.locale;
+          g = e.shallow,
+          y = e.scroll,
+          b = e.locale;
         "string" === typeof v && (v = a.default.createElement("a", null, v));
         var _ = a.Children.only(v),
-          m = _ && "object" === typeof _ && _.ref,
-          w = (0, i.useIntersection)({ rootMargin: "200px" }),
-          E = r(w, 2),
-          L = E[0],
-          M = E[1],
+          w = _ && "object" === typeof _ && _.ref,
+          E = (0, i.useIntersection)({ rootMargin: "200px" }),
+          m = r(E, 2),
+          L = m[0],
+          M = m[1],
           k = a.default.useCallback(
             function(e) {
               L(e),
-                m &&
-                  ("function" === typeof m
-                    ? m(e)
-                    : "object" === typeof m && (m.current = e));
+                w &&
+                  ("function" === typeof w
+                    ? w(e)
+                    : "object" === typeof w && (w.current = e));
             },
-            [m, L]
+            [w, L]
           );
         (0, a.useEffect)(
           function() {
             var e = M && n && (0, c.isLocalURL)(p),
-              r = "undefined" !== typeof g ? g : t && t.locale,
+              r = "undefined" !== typeof b ? b : t && t.locale,
               o = l[p + "%" + d + (r ? "%" + r : "")];
             e && !o && f(t, p, d, { locale: r });
           },
-          [d, p, M, g, n, t]
+          [d, p, M, b, n, t]
         );
         var I = {
           ref: k,
@@ -130,10 +130,8 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       shallow: a,
                       locale: i,
                       scroll: u
-                    }).then(function(e) {
-                      e && u && document.body.focus();
                     }));
-                })(e, t, p, d, h, y, b, g);
+                })(e, t, p, d, h, g, y, b);
           },
           onMouseEnter: function(e) {
             (0, c.isLocalURL)(p) &&
@@ -144,7 +142,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           }
         };
         if (e.passHref || ("a" === _.type && !("href" in _.props))) {
-          var N = "undefined" !== typeof g ? g : t && t.locale,
+          var N = "undefined" !== typeof b ? b : t && t.locale,
             C =
               t &&
               t.isLocaleDomain &&
Diff for 677f882d2ed8..b9064a2e7.js

Diff too large to display

Diff for main-HASH.js
@@ -60,6 +60,37 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
       var n = r("284h")(r("IKlv"));
       (window.next = n), (0, n.default)().catch(console.error);
     },
+    CQWR: function(e, t, r) {
+      "use strict";
+      var n = r("J4zp"),
+        o = r("284h");
+      (t.__esModule = !0), (t.Portal = void 0);
+      var a = o(r("q1tI")),
+        i = r("i8i4");
+      t.Portal = function(e) {
+        var t = e.children,
+          r = e.type,
+          o = a.useRef(null),
+          u = a.useState(),
+          c = n(u, 2)[1];
+        return (
+          a.useEffect(
+            function() {
+              return (
+                (o.current = document.createElement(r)),
+                document.body.appendChild(o.current),
+                c({}),
+                function() {
+                  o.current && document.body.removeChild(o.current);
+                }
+              );
+            },
+            [r]
+          ),
+          o.current ? (0, i.createPortal)(t, o.current) : null
+        );
+      };
+    },
     DqTX: function(e, t, r) {
       "use strict";
       (t.__esModule = !0),
@@ -209,60 +240,62 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           return c(this, r);
         };
       }
-      var p = r("284h"),
-        d = r("TqRt");
+      var d = r("284h"),
+        p = r("TqRt");
       (t.__esModule = !0),
-        (t.render = ae),
-        (t.renderError = ue),
+        (t.render = ue),
+        (t.renderError = se),
         (t.default = t.emitter = t.router = t.version = void 0);
-      var m = d(r("pVnL"));
-      d(r("284h"));
+      var m = p(r("pVnL"));
+      p(r("284h"));
       r("0sNQ");
-      var h = d(r("q1tI")),
-        v = d(r("i8i4")),
+      var h = p(r("q1tI")),
+        v = p(r("i8i4")),
         y = r("FYa8"),
-        g = d(r("dZ6Y")),
+        g = p(r("dZ6Y")),
         b = r("qOIg"),
         S = r("elyg"),
         w = r("/jkW"),
-        _ = p(r("3WeD")),
-        E = p(r("yLiY")),
+        _ = d(r("3WeD")),
+        E = d(r("yLiY")),
         x = r("g/15"),
-        T = d(r("DqTX")),
-        P = d(r("zmvN")),
-        N = d(r("bGXG")),
+        P = r("CQWR"),
+        T = p(r("DqTX")),
+        A = p(r("zmvN")),
+        C = p(r("bGXG")),
+        N = r("oAez"),
         k = r("nOHt"),
-        A = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
-      window.__NEXT_DATA__ = A;
-      t.version = "10.0.9";
-      var C = function(e) {
+        M = JSON.parse(document.getElementById("__NEXT_DATA__").textContent);
+      window.__NEXT_DATA__ = M;
+      t.version = "10.0.10-canary.13";
+      var R = 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,
-        J = D || "";
-      (r.p = "".concat(J, "/_next/")),
-        E.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),
+        L = M.props,
+        F = M.err,
+        I = M.page,
+        D = M.query,
+        O = M.buildId,
+        j = M.assetPrefix,
+        q = M.runtimeConfig,
+        B = M.dynamicIds,
+        H = M.isFallback,
+        X = M.locale,
+        W = M.locales,
+        J = M.domainLocales,
+        G = M.isPreview,
+        Y = M.defaultLocale,
+        U = j || "";
+      (r.p = "".concat(U, "/_next/")),
+        E.setConfig({ serverRuntimeConfig: {}, publicRuntimeConfig: q || {} });
+      var z = (0, x.getURL)();
+      (0, S.hasBasePath)(z) && (z = (0, S.delBasePath)(z));
+      var Q = new A.default(O, U),
         V = function(e) {
           var t = l(e, 2),
             r = t[0],
             n = t[1];
-          return Y.routeLoader.onEntrypoint(r, n);
+          return Q.routeLoader.onEntrypoint(r, n);
         };
       window.__NEXT_P &&
         window.__NEXT_P.map(function(e) {
@@ -272,15 +305,15 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         }),
         (window.__NEXT_P = []),
         (window.__NEXT_P.push = V);
-      var z,
-        Q,
-        Z,
+      var Z,
         K,
-        $ = (0, T.default)(),
-        ee = document.getElementById("__next");
-      t.router = Q;
-      var te,
-        re = (function(e) {
+        $,
+        ee,
+        te = (0, T.default)(),
+        re = document.getElementById("__next");
+      t.router = K;
+      var ne,
+        oe = (function(e) {
           u(r, e);
           var t = f(r);
           function r() {
@@ -298,23 +331,23 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                 key: "componentDidMount",
                 value: function() {
                   this.scrollToHash(),
-                    Q.isSsr &&
-                      (B ||
-                        (A.nextExport &&
-                          ((0, w.isDynamicRoute)(Q.pathname) ||
+                    K.isSsr &&
+                      (H ||
+                        (M.nextExport &&
+                          ((0, w.isDynamicRoute)(K.pathname) ||
                             location.search)) ||
-                        (M && M.__N_SSG && location.search)) &&
-                      Q.replace(
-                        Q.pathname +
+                        (L && L.__N_SSG && location.search)) &&
+                      K.replace(
+                        K.pathname +
                           "?" +
                           String(
                             _.assign(
-                              _.urlQueryToSearchParams(Q.query),
+                              _.urlQueryToSearchParams(K.query),
                               new URLSearchParams(location.search)
                             )
                           ),
-                        U,
-                        { _h: 1, shallow: !B }
+                        z,
+                        { _h: 1, shallow: !H }
                       );
                 }
               },
@@ -347,9 +380,9 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             r
           );
         })(h.default.Component),
-        ne = (0, g.default)();
-      t.emitter = ne;
-      var oe = (function() {
+        ae = (0, g.default)();
+      t.emitter = ae;
+      var ie = (function() {
         var e = o(
           n.mark(function e() {
             var r,
@@ -367,7 +400,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       return (
                         s.length > 0 && void 0 !== s[0] ? s[0] : {},
                         (e.next = 4),
-                        Y.routeLoader.whenEntrypoint("/_app")
+                        Q.routeLoader.whenEntrypoint("/_app")
                       );
                     case 4:
                       if (!("error" in (r = e.sent))) {
@@ -378,10 +411,10 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                     case 7:
                       (o = r.component),
                         (a = r.exports),
-                        (Z = o),
+                        ($ = o),
                         a &&
                           a.reportWebVitals &&
-                          (K = function(e) {
+                          (ee = function(e) {
                             var t,
                               r = e.id,
                               n = e.name,
@@ -408,12 +441,12 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                                     : "web-vital"
                               });
                           }),
-                        (i = L),
+                        (i = F),
                         (e.prev = 11),
                         (e.next = 16);
                       break;
                     case 16:
-                      return (e.next = 18), Y.routeLoader.whenEntrypoint(R);
+                      return (e.next = 18), Q.routeLoader.whenEntrypoint(I);
                     case 18:
                       e.t0 = e.sent;
                     case 19:
@@ -423,7 +456,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       }
                       throw u.error;
                     case 22:
-                      (te = u.component), (e.next = 27);
+                      (ne = u.component), (e.next = 27);
                       break;
                     case 27:
                       e.next = 32;
@@ -435,43 +468,43 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                         e.next = 36;
                         break;
                       }
-                      return (e.next = 36), window.__NEXT_PRELOADREADY(j);
+                      return (e.next = 36), window.__NEXT_PRELOADREADY(B);
                     case 36:
                       return (
-                        (t.router = Q = (0, k.createRouter)(R, F, U, {
-                          initialProps: M,
-                          pageLoader: Y,
-                          App: Z,
-                          Component: te,
-                          wrapApp: me,
+                        (t.router = K = (0, k.createRouter)(I, D, z, {
+                          initialProps: L,
+                          pageLoader: Q,
+                          App: $,
+                          Component: ne,
+                          wrapApp: ve,
                           err: i,
-                          isFallback: Boolean(B),
+                          isFallback: Boolean(H),
                           subscription: function(e, t, r) {
-                            return ae(
+                            return ue(
                               Object.assign({}, e, { App: t, scroll: r })
                             );
                           },
-                          locale: q,
-                          locales: H,
-                          defaultLocale: W,
-                          domainLocales: X,
+                          locale: X,
+                          locales: W,
+                          defaultLocale: Y,
+                          domainLocales: J,
                           isPreview: G
                         })),
-                        ae(
+                        ue(
                           (c = {
-                            App: Z,
+                            App: $,
                             initial: !0,
-                            Component: te,
-                            props: M,
+                            Component: ne,
+                            props: L,
                             err: i
                           })
                         ),
-                        e.abrupt("return", ne)
+                        e.abrupt("return", ae)
                       );
                     case 44:
                       return e.abrupt("return", {
-                        emitter: ne,
-                        render: ae,
+                        emitter: ae,
+                        render: ue,
                         renderCtx: c
                       });
                     case 45:
@@ -489,11 +522,11 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           return e.apply(this, arguments);
         };
       })();
-      function ae(e) {
-        return ie.apply(this, arguments);
+      function ue(e) {
+        return ce.apply(this, arguments);
       }
-      function ie() {
-        return (ie = o(
+      function ce() {
+        return (ce = o(
           n.mark(function e(t) {
             return n.wrap(
               function(e) {
@@ -504,11 +537,11 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                         e.next = 4;
                         break;
                       }
-                      return (e.next = 3), ue(t);
+                      return (e.next = 3), se(t);
                     case 3:
                       return e.abrupt("return");
                     case 4:
-                      return (e.prev = 4), (e.next = 7), he(t);
+                      return (e.prev = 4), (e.next = 7), ye(t);
                     case 7:
                       e.next = 16;
                       break;
@@ -522,7 +555,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       throw e.t0;
                     case 13:
                       return (
-                        (e.next = 16), ue((0, m.default)({}, t, { err: e.t0 }))
+                        (e.next = 16), se((0, m.default)({}, t, { err: e.t0 }))
                       );
                     case 16:
                     case "end":
@@ -536,25 +569,25 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           })
         )).apply(this, arguments);
       }
-      function ue(e) {
+      function se(e) {
         var t = e.App,
           r = e.err;
         return (
           console.error(r),
-          Y.loadPage("/_error").then(function(n) {
+          Q.loadPage("/_error").then(function(n) {
             var o = n.page,
               a = n.styleSheets,
-              i = me(t),
+              i = ve(t),
               u = {
                 Component: o,
                 AppTree: i,
-                router: Q,
-                ctx: { err: r, pathname: R, query: F, asPath: U, AppTree: i }
+                router: K,
+                ctx: { err: r, pathname: I, query: D, asPath: z, AppTree: i }
               };
             return Promise.resolve(
               e.props ? e.props : (0, x.loadGetInitialProps)(t, u)
             ).then(function(t) {
-              return he(
+              return ye(
                 (0, m.default)({}, e, {
                   err: r,
                   Component: o,
@@ -566,9 +599,9 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           })
         );
       }
-      t.default = oe;
-      var ce = "function" === typeof v.default.hydrate;
-      function se() {
+      t.default = ie;
+      var le = "function" === typeof v.default.hydrate;
+      function fe() {
         x.ST &&
           (performance.mark("afterHydrate"),
           performance.measure(
@@ -581,10 +614,10 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             "beforeRender",
             "afterHydrate"
           ),
-          K && performance.getEntriesByName("Next.js-hydration").forEach(K),
-          fe());
+          ee && performance.getEntriesByName("Next.js-hydration").forEach(ee),
+          pe());
       }
-      function le() {
+      function de() {
         if (x.ST) {
           performance.mark("afterRender");
           var e = performance.getEntriesByName("routeChange", "mark");
@@ -599,12 +632,12 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
               "beforeRender",
               "afterRender"
             ),
-            K &&
-              (performance.getEntriesByName("Next.js-render").forEach(K),
+            ee &&
+              (performance.getEntriesByName("Next.js-render").forEach(ee),
               performance
                 .getEntriesByName("Next.js-route-change-to-render")
-                .forEach(K)),
-            fe(),
+                .forEach(ee)),
+            pe(),
             ["Next.js-route-change-to-render", "Next.js-render"].forEach(
               function(e) {
                 return performance.clearMeasures(e);
@@ -612,78 +645,78 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             ));
         }
       }
-      function fe() {
+      function pe() {
         ["beforeRender", "afterHydrate", "afterRender", "routeChange"].forEach(
           function(e) {
             return performance.clearMarks(e);
           }
         );
       }
-      function pe(e) {
+      function me(e) {
         var t = e.children;
         return h.default.createElement(
-          re,
+          oe,
           {
             fn: function(e) {
-              return ue({ App: Z, err: e }).catch(function(e) {
+              return se({ App: $, err: e }).catch(function(e) {
                 return console.error("Error rendering page: ", e);
               });
             }
           },
           h.default.createElement(
             b.RouterContext.Provider,
-            { value: (0, k.makePublicRouterInstance)(Q) },
+            { value: (0, k.makePublicRouterInstance)(K) },
             h.default.createElement(
               y.HeadManagerContext.Provider,
-              { value: $ },
+              { value: te },
               t
             )
           )
         );
       }
-      var de,
-        me = function(e) {
+      var he,
+        ve = function(e) {
           return function(t) {
-            var r = (0, m.default)({}, t, { Component: te, err: L, router: Q });
+            var r = (0, m.default)({}, t, { Component: ne, err: F, router: K });
             return h.default.createElement(
-              pe,
+              me,
               null,
               h.default.createElement(e, r)
             );
           };
         };
-      function he(e) {
+      function ye(e) {
         var t = e.App,
           r = e.Component,
           n = e.props,
           o = e.err,
           a = "initial" in e ? void 0 : e.styleSheets;
-        (r = r || de.Component), (n = n || de.props);
-        var i = (0, m.default)({}, n, { Component: r, err: o, router: Q });
-        de = i;
+        (r = r || he.Component), (n = n || he.props);
+        var i = (0, m.default)({}, n, { Component: r, err: o, router: K });
+        he = i;
         var u,
           c = !1,
           s = new Promise(function(e, t) {
-            z && z(),
+            Z && Z(),
               (u = function() {
-                (z = null), e();
+                (Z = null), e();
               }),
-              (z = function() {
-                (c = !0), (z = null);
+              (Z = function() {
+                (c = !0), (Z = null);
                 var e = new Error("Cancel rendering route");
                 (e.cancelled = !0), t(e);
               });
           });
         var l,
           f,
-          p = h.default.createElement(
-            ve,
+          d = h.default.createElement(
+            ge,
             {
               callback: function() {
                 u();
               }
             },
-            h.default.createElement(ye, {
+            h.default.createElement(be, {
               callback: function() {
                 if (a && !c) {
                   for (
@@ -692,7 +725,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                           return e.href;
                         })
                       ),
-                      r = C(document.querySelectorAll("style[data-n-href]")),
+                      r = R(document.querySelectorAll("style[data-n-href]")),
                       n = r.map(function(e) {
                         return e.getAttribute("data-n-href");
                       }),
@@ -713,7 +746,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       r &&
                         (i.parentNode.insertBefore(r, i.nextSibling), (i = r));
                     }),
-                    C(document.querySelectorAll("link[data-n-p]")).forEach(
+                    R(document.querySelectorAll("link[data-n-p]")).forEach(
                       function(e) {
                         e.parentNode.removeChild(e);
                       }
@@ -723,12 +756,21 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                 e.scroll && window.scrollTo(e.scroll.x, e.scroll.y);
               }
             }),
-            h.default.createElement(pe, null, h.default.createElement(t, i))
+            h.default.createElement(
+              me,
+              null,
+              h.default.createElement(t, i),
+              h.default.createElement(
+                P.Portal,
+                { type: "next-route-announcer" },
+                h.default.createElement(N.RouteAnnouncer, null)
+              )
+            )
           );
         return (
           (function() {
             if (!a) return !1;
-            var e = C(document.querySelectorAll("style[data-n-href]")),
+            var e = R(document.querySelectorAll("style[data-n-href]")),
               t = new Set(
                 e.map(function(e) {
                   return e.getAttribute("data-n-href");
@@ -749,16 +791,16 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
               }
             });
           })(),
-          (l = p),
-          (f = ee),
+          (l = d),
+          (f = re),
           x.ST && performance.mark("beforeRender"),
-          ce
-            ? (v.default.hydrate(l, f, se), (ce = !1))
-            : v.default.render(l, f, le),
+          le
+            ? (v.default.hydrate(l, f, fe), (le = !1))
+            : v.default.render(l, f, de),
           s
         );
       }
-      function ve(e) {
+      function ge(e) {
         var t = e.callback,
           r = e.children;
         return (
@@ -769,12 +811,12 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             [t]
           ),
           h.default.useEffect(function() {
-            (0, N.default)(K);
+            (0, C.default)(ee);
           }, []),
           r
         );
       }
-      function ye(e) {
+      function be(e) {
         var t = e.callback;
         return (
           h.default.useLayoutEffect(
@@ -836,6 +878,59 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             (0, o.getTTFB)(i));
       };
     },
+    oAez: function(e, t, r) {
+      "use strict";
+      var n = r("J4zp"),
+        o = r("284h");
+      (t.__esModule = !0), (t.RouteAnnouncer = u), (t.default = void 0);
+      var a = o(r("q1tI")),
+        i = r("nOHt");
+      function u() {
+        var e = (0, i.useRouter)().asPath,
+          t = (0, a.useState)(""),
+          r = n(t, 2),
+          o = r[0],
+          u = r[1],
+          c = (0, a.useRef)(!1);
+        return (
+          (0, a.useEffect)(
+            function() {
+              if (c.current) {
+                var t,
+                  r = document.querySelector("h1");
+                r && (t = r.innerText || r.textContent),
+                  t || (t = document.title ? document.title : e),
+                  u(t);
+              } else c.current = !0;
+            },
+            [e]
+          ),
+          a.default.createElement(
+            "p",
+            {
+              "aria-live": "assertive",
+              id: "__next-route-announcer__",
+              role: "alert",
+              style: {
+                border: 0,
+                clip: "rect(0 0 0 0)",
+                height: "1px",
+                margin: "-1px",
+                overflow: "hidden",
+                padding: 0,
+                position: "absolute",
+                width: "1px",
+                whiteSpace: "nowrap",
+                wordWrap: "normal"
+              }
+            },
+            o
+          )
+        );
+      }
+      var c = u;
+      t.default = c;
+    },
     p0hA: function(e, t, r) {
       (function(t) {
         e.exports = (function() {
@@ -915,7 +1010,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                               (e(t), (o = t.value)));
                       };
                     },
-                    p = function() {
+                    d = function() {
                       return (
                         void 0 === t &&
                           ((t =
@@ -931,7 +1026,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                         }
                       );
                     },
-                    d = function() {
+                    p = function() {
                       return (
                         r ||
                           (r = new Promise(function(e) {
@@ -970,7 +1065,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                     (e.getFCP = function(e) {
                       var t,
                         r = o("FCP"),
-                        n = p(),
+                        n = d(),
                         i = a("paint", function(e) {
                           "first-contentful-paint" === e.name &&
                             e.startTime < n.timeStamp &&
@@ -983,7 +1078,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                     }),
                     (e.getFID = function(e) {
                       var t = o("FID"),
-                        r = p(),
+                        r = d(),
                         n = function(e) {
                           e.startTime < r.timeStamp &&
                             ((t.value = e.processingStart - e.startTime),
@@ -1023,7 +1118,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                           void 0 !== arguments[1] &&
                           arguments[1],
                         n = o("LCP"),
-                        i = p(),
+                        i = d(),
                         u = function(e) {
                           var r = e.startTime;
                           r < i.timeStamp
@@ -1038,7 +1133,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                           n.isFinal ||
                             (c.takeRecords().map(u), (n.isFinal = !0), t());
                         };
-                        d().then(s), l(s, !0);
+                        p().then(s), l(s, !0);
                       }
                     }),
                     (e.getTTFB = function(e) {
@@ -1132,15 +1227,8 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
         s = r("/jkW"),
         l = r("hS4m"),
         f = r("X24+"),
-        p = a(r("Nh2W"));
-      function d(e) {
-        if ("/" !== e[0])
-          throw new Error(
-            'Route name should start with a "/", got "'.concat(e, '"')
-          );
-        return "/" === e ? e : e.replace(/\/$/, "");
-      }
-      var m = (function() {
+        d = a(r("Nh2W"));
+      var p = (function() {
         function e(t, r) {
           n(this, e),
             (this.buildId = void 0),
@@ -1148,7 +1236,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             (this.promisedSsgManifest = void 0),
             (this.promisedDevPagesManifest = void 0),
             (this.routeLoader = void 0),
-            (this.routeLoader = (0, p.default)(r)),
+            (this.routeLoader = (0, d.default)(r)),
             (this.buildId = t),
             (this.assetPrefix = r),
             (this.promisedSsgManifest = new Promise(function(e) {
@@ -1164,7 +1252,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             {
               key: "getPageList",
               value: function() {
-                return (0, p.getClientBuildManifest)().then(function(e) {
+                return (0, d.getClientBuildManifest)().then(function(e) {
                   return e.sortedPages;
                 });
               }
@@ -1175,11 +1263,20 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                 var o = this,
                   a = (0, l.parseRelativeUrl)(e),
                   i = a.pathname,
-                  p = a.query,
-                  m = a.search,
-                  h = (0, l.parseRelativeUrl)(t).pathname,
-                  v = d(i),
-                  y = function(e) {
+                  d = a.query,
+                  p = a.search,
+                  m = (0, l.parseRelativeUrl)(t).pathname,
+                  h = (function(e) {
+                    if ("/" !== e[0])
+                      throw new Error(
+                        'Route name should start with a "/", got "'.concat(
+                          e,
+                          '"'
+                        )
+                      );
+                    return "/" === e ? e : e.replace(/\/$/, "");
+                  })(i),
+                  v = function(e) {
                     var t = (0, c.default)(
                       (0, f.removePathTrailingSlash)((0, u.addLocale)(e, n)),
                       ".json"
@@ -1188,20 +1285,19 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                       "/_next/data/"
                         .concat(o.buildId)
                         .concat(t)
-                        .concat(r ? "" : m)
+                        .concat(r ? "" : p)
                     );
                   },
-                  g = (0, s.isDynamicRoute)(v),
-                  b = g ? (0, u.interpolateAs)(i, h, p).result : "";
-                return g ? b && y(b) : y(v);
+                  y = (0, s.isDynamicRoute)(h),
+                  g = y ? (0, u.interpolateAs)(i, m, d).result : "";
+                return y ? g && v(g) : v(h);
               }
             },
             {
               key: "_isSsg",
               value: function(e) {
-                var t = d((0, l.parseRelativeUrl)(e).pathname);
-                return this.promisedSsgManifest.then(function(e) {
-                  return e.has(t);
+                return this.promisedSsgManifest.then(function(t) {
+                  return t.has(e);
                 });
               }
             },
@@ -1231,7 +1327,7 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           e
         );
       })();
-      t.default = m;
+      t.default = p;
     }
   },
   [["BMP1", 0, 1, 2]]
Diff for index.html
@@ -7,27 +7,27 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-07a9e16066ee6640e767.js"
+      href="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
+      href="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b916e3dd36c533eb7edd.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.cf6d753e84db9064a2e7.js"
+      href="/_next/static/chunks/main-538e140b5e61e9e424d3.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/pages/_app-fde3324f7822e8719dd1.js"
+      href="/_next/static/chunks/pages/_app-8fbabfcda83bc6e06440.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "1bDaiTQpNxnpR3DafspSH",
+        "buildId": "vTDV_BK9PTSpmMdjOwlTB",
         "isFallback": false,
         "gip": true
       }
@@ -53,23 +53,23 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-07a9e16066ee6640e767.js"
+      src="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
+      src="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b916e3dd36c533eb7edd.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.cf6d753e84db9064a2e7.js"
+      src="/_next/static/chunks/main-538e140b5e61e9e424d3.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-fde3324f7822e8719dd1.js"
+      src="/_next/static/chunks/pages/_app-8fbabfcda83bc6e06440.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/1bDaiTQpNxnpR3DafspSH/_buildManifest.js"
+      src="/_next/static/vTDV_BK9PTSpmMdjOwlTB/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/1bDaiTQpNxnpR3DafspSH/_ssgManifest.js"
+      src="/_next/static/vTDV_BK9PTSpmMdjOwlTB/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -7,32 +7,32 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-07a9e16066ee6640e767.js"
+      href="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
+      href="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b916e3dd36c533eb7edd.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.cf6d753e84db9064a2e7.js"
+      href="/_next/static/chunks/main-538e140b5e61e9e424d3.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/pages/_app-fde3324f7822e8719dd1.js"
+      href="/_next/static/chunks/pages/_app-8fbabfcda83bc6e06440.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/pages/link-c0d2c9648c4e376cde48.js"
+      href="/_next/static/chunks/pages/link-c31053f6d096d7dcc329.js"
       as="script"
     />
   </head>
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "1bDaiTQpNxnpR3DafspSH",
+        "buildId": "vTDV_BK9PTSpmMdjOwlTB",
         "isFallback": false,
         "gip": true
       }
@@ -58,35 +58,35 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-07a9e16066ee6640e767.js"
+      src="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
+      src="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b916e3dd36c533eb7edd.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.cf6d753e84db9064a2e7.js"
+      src="/_next/static/chunks/main-538e140b5e61e9e424d3.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-fde3324f7822e8719dd1.js"
+      src="/_next/static/chunks/pages/_app-8fbabfcda83bc6e06440.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/link-c0d2c9648c4e376cde48.js"
+      src="/_next/static/chunks/pages/link-c31053f6d096d7dcc329.js"
       async=""
     ></script>
     <script
-      src="/_next/static/1bDaiTQpNxnpR3DafspSH/_buildManifest.js"
+      src="/_next/static/vTDV_BK9PTSpmMdjOwlTB/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/1bDaiTQpNxnpR3DafspSH/_ssgManifest.js"
+      src="/_next/static/vTDV_BK9PTSpmMdjOwlTB/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -7,27 +7,27 @@
     <noscript data-n-css=""></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-07a9e16066ee6640e767.js"
+      href="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
+      href="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b916e3dd36c533eb7edd.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.cf6d753e84db9064a2e7.js"
+      href="/_next/static/chunks/main-538e140b5e61e9e424d3.js"
       as="script"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/pages/_app-fde3324f7822e8719dd1.js"
+      href="/_next/static/chunks/pages/_app-8fbabfcda83bc6e06440.js"
       as="script"
     />
     <link
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "1bDaiTQpNxnpR3DafspSH",
+        "buildId": "vTDV_BK9PTSpmMdjOwlTB",
         "isFallback": false,
         "gip": true
       }
@@ -53,23 +53,23 @@
       src="/_next/static/chunks/polyfills-ff94e68042added27a93.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-07a9e16066ee6640e767.js"
+      src="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/webpack-50bee04d1dc61f8adf5b.js"
+      src="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/framework.dc46d8e6c07122d5fb16.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.b916e3dd36c533eb7edd.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.cf6d753e84db9064a2e7.js"
+      src="/_next/static/chunks/main-538e140b5e61e9e424d3.js"
       async=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/_app-fde3324f7822e8719dd1.js"
+      src="/_next/static/chunks/pages/_app-8fbabfcda83bc6e06440.js"
       async=""
     ></script>
     <script
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/1bDaiTQpNxnpR3DafspSH/_buildManifest.js"
+      src="/_next/static/vTDV_BK9PTSpmMdjOwlTB/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/1bDaiTQpNxnpR3DafspSH/_ssgManifest.js"
+      src="/_next/static/vTDV_BK9PTSpmMdjOwlTB/_ssgManifest.js"
       async=""
     ></script>
   </body>

Please sign in to comment.