Skip to content

Commit

Permalink
v9.5.4-canary.2
Browse files Browse the repository at this point in the history
  • Loading branch information
ijjk committed Sep 4, 2020
1 parent d97237a commit f7435b4
Show file tree
Hide file tree
Showing 13 changed files with 16 additions and 16 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": "9.5.4-canary.1"
"version": "9.5.4-canary.2"
}
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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"license": "MIT",
"dependencies": {
"chalk": "4.1.0",
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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"repository": {
"url": "vercel/next.js",
"directory": "packages/next-plugin-storybook"
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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"description": "A polyfill for non-dead, nomodule browsers.",
"main": "dist/polyfill-nomodule.js",
"license": "MIT",
Expand Down
8 changes: 4 additions & 4 deletions packages/next/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "next",
"version": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"description": "The React Framework",
"main": "./dist/server/next.js",
"license": "MIT",
Expand Down Expand Up @@ -77,8 +77,8 @@
"@babel/preset-typescript": "7.10.4",
"@babel/runtime": "7.11.2",
"@babel/types": "7.11.5",
"@next/react-dev-overlay": "9.5.4-canary.1",
"@next/react-refresh-utils": "9.5.4-canary.1",
"@next/react-dev-overlay": "9.5.4-canary.2",
"@next/react-refresh-utils": "9.5.4-canary.2",
"ast-types": "0.13.2",
"babel-plugin-syntax-jsx": "6.18.0",
"babel-plugin-transform-define": "2.0.0",
Expand Down Expand Up @@ -123,7 +123,7 @@
"react-dom": "^16.6.0"
},
"devDependencies": {
"@next/polyfill-nomodule": "9.5.4-canary.1",
"@next/polyfill-nomodule": "9.5.4-canary.2",
"@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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"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": "9.5.4-canary.1",
"version": "9.5.4-canary.2",
"description": "An experimental package providing utilities for React Refresh.",
"repository": {
"url": "vercel/next.js",
Expand Down

1 comment on commit f7435b4

@ijjk
Copy link
Member Author

@ijjk ijjk commented on f7435b4 Sep 4, 2020

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 v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
buildDuration 12.9s 12.8s -76ms
nodeModulesSize 56.7 MB 56.7 MB ⚠️ +12.6 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
/ failed reqs 0 0
/ total time (seconds) 2.329 2.402 ⚠️ +0.07
/ avg req/sec 1073.58 1040.65 ⚠️ -32.93
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.291 1.345 ⚠️ +0.05
/error-in-render avg req/sec 1936.09 1858.62 ⚠️ -77.47
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
677f882d2ed8..9ff9.js gzip 10.3 kB 10.5 kB ⚠️ +248 B
framework.HASH.js gzip 39 kB 39 kB
main-b338f5a..3500.js gzip 7.31 kB 7.08 kB -235 B
webpack-e067..f178.js gzip 751 B 751 B
Overall change 57.3 kB 57.3 kB ⚠️ +13 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
677f882d2ed8..dule.js gzip 6.13 kB 6.4 kB ⚠️ +274 B
framework.HA..dule.js gzip 39 kB 39 kB
main-830c506..dule.js gzip 6.37 kB 6.14 kB -231 B
webpack-07c5..dule.js gzip 751 B 751 B
Overall change 52.2 kB 52.3 kB ⚠️ +43 B
Legacy Client Bundles (polyfills)
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
polyfills-4b..e242.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
_app-9a0b9e1..b37e.js gzip 1.28 kB 1.28 kB
_error-ed1b0..8fbd.js gzip 3.44 kB 3.44 kB
hooks-89731c..c609.js gzip 887 B 887 B
index-17468f..5d83.js gzip 227 B 227 B
link-ae98065..267e.js gzip 1.29 kB 1.3 kB ⚠️ +16 B
routerDirect..924c.js gzip 284 B 284 B
withRouter-7..c13d.js gzip 284 B 284 B
Overall change 7.69 kB 7.71 kB ⚠️ +16 B
Client Pages Modern Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
_app-75d3a82..dule.js gzip 625 B 625 B
_error-4469a..dule.js gzip 2.29 kB 2.29 kB
hooks-cbf13f..dule.js gzip 387 B 387 B
index-b9a643..dule.js gzip 226 B 226 B
link-cb244c4..dule.js gzip 1.26 kB 1.26 kB ⚠️ +5 B
routerDirect..dule.js gzip 284 B 284 B
withRouter-f..dule.js gzip 282 B 282 B
Overall change 5.35 kB 5.36 kB ⚠️ +5 B
Client Build Manifests Overall decrease ✓
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
_buildManifest.js gzip 323 B 322 B -1 B
_buildManife..dule.js gzip 329 B 329 B
Overall change 652 B 651 B -1 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
index.html gzip 971 B 968 B -3 B
link.html gzip 976 B 975 B -1 B
withRouter.html gzip 965 B 962 B -3 B
Overall change 2.91 kB 2.9 kB -7 B

Diffs

Diff for _buildManifest.js
@@ -7,7 +7,7 @@ self.__BUILD_MANIFEST = {
   "/hooks": [
     "static\u002Fchunks\u002Fpages\u002Fhooks-8001dc76075832ee8949.js"
   ],
-  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-46fd48c0b73b2f2d75a4.js"],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-32658e75d53af2daa2e0.js"],
   "/routerDirect": [
     "static\u002Fchunks\u002Fpages\u002FrouterDirect-2e9bfd441bd88cd3382e.js"
   ],
Diff for _buildManifest.module.js
@@ -10,7 +10,7 @@ self.__BUILD_MANIFEST = {
     "static\u002Fchunks\u002Fpages\u002Fhooks-56fa58a6f0993d7d36d7.module.js"
   ],
   "/link": [
-    "static\u002Fchunks\u002Fpages\u002Flink-e2f1e0e7ed02569239da.module.js"
+    "static\u002Fchunks\u002Fpages\u002Flink-cb038f0ac2e648ce4861.module.js"
   ],
   "/routerDirect": [
     "static\u002Fchunks\u002Fpages\u002FrouterDirect-368af3dfef3c9cd99dc3.module.js"
Diff for link-46fd48c..b2f2d75a4.js
@@ -216,12 +216,16 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
 
         var _react$default$useMem = _react["default"].useMemo(
             function() {
-              var resolvedHref = (0, _router.resolveHref)(pathname, props.href);
+              var _ref = (0, _router.resolveHref)(pathname, props.href, true),
+                _ref2 = _slicedToArray(_ref, 2),
+                resolvedHref = _ref2[0],
+                resolvedAs = _ref2[1];
+
               return {
                 href: resolvedHref,
                 as: props.as
                   ? (0, _router.resolveHref)(pathname, props.as)
-                  : resolvedHref
+                  : resolvedAs || resolvedHref
               };
             },
             [pathname, props.href, props.as]
Diff for link-e2f1e0e..da.module.js
@@ -207,12 +207,16 @@
         var pathname = (router && router.pathname) || "/";
 
         var { href, as } = _react.default.useMemo(() => {
-          var resolvedHref = (0, _router.resolveHref)(pathname, props.href);
+          var [resolvedHref, resolvedAs] = (0, _router.resolveHref)(
+            pathname,
+            props.href,
+            true
+          );
           return {
             href: resolvedHref,
             as: props.as
               ? (0, _router.resolveHref)(pathname, props.as)
-              : resolvedHref
+              : resolvedAs || resolvedHref
           };
         }, [pathname, props.href, props.as]);
Diff for 677f882d2ed8..7000fca82.js
@@ -683,6 +683,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       exports.addBasePath = addBasePath;
       exports.delBasePath = delBasePath;
       exports.isLocalURL = isLocalURL;
+      exports.interpolateAs = interpolateAs;
       exports.resolveHref = resolveHref;
       exports.markLoadingError = markLoadingError;
       exports["default"] = void 0;
@@ -709,6 +710,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
       var _routeRegex = __webpack_require__("YTqd");
 
+      var _escapePathDelimiters = _interopRequireDefault(
+        __webpack_require__("fcRV")
+      );
+
       function _interopRequireDefault(obj) {
         return obj && obj.__esModule
           ? obj
@@ -761,12 +766,61 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
           return false;
         }
       }
+
+      function interpolateAs(route, asPathname, query) {
+        var interpolatedRoute = "";
+        var dynamicRegex = (0, _routeRegex.getRouteRegex)(route);
+        var dynamicGroups = dynamicRegex.groups;
+        var dynamicMatches = // Try to match the dynamic route against the asPath
+          (asPathname !== route
+            ? (0, _routeMatcher.getRouteMatcher)(dynamicRegex)(asPathname)
+            : "") || // Fall back to reading the values from the href
+          // TODO: should this take priority; also need to change in the router.
+          query;
+        interpolatedRoute = route;
+
+        if (
+          !Object.keys(dynamicGroups).every(function(param) {
+            var value = dynamicMatches[param] || "";
+            var _dynamicGroups$param = dynamicGroups[param],
+              repeat = _dynamicGroups$param.repeat,
+              optional = _dynamicGroups$param.optional; // support single-level catch-all
+            // TODO: more robust handling for user-error (passing `/`)
+
+            var replaced = "[".concat(repeat ? "..." : "").concat(param, "]");
+
+            if (optional) {
+              replaced = ""
+                .concat(!value ? "/" : "", "[")
+                .concat(replaced, "]");
+            }
+
+            if (repeat && !Array.isArray(value)) value = [value];
+            return (
+              (optional || param in dynamicMatches) && // Interpolate group into data URL if present
+              (interpolatedRoute =
+                interpolatedRoute.replace(
+                  replaced,
+                  repeat
+                    ? value.map(_escapePathDelimiters["default"]).join("/")
+                    : (0, _escapePathDelimiters["default"])(value)
+                ) || "/")
+            );
+          })
+        ) {
+          interpolatedRoute = ""; // did not satisfy all requirements
+          // n.b. We ignore this error because we handle warning for this case in
+          // development in the `<Link>` component directly.
+        }
+
+        return interpolatedRoute;
+      }
       /**
        * Resolves a given hyperlink with a certain router state (basePath not included).
        * Preserves absolute urls.
        */
 
-      function resolveHref(currentPath, href) {
+      function resolveHref(currentPath, href, resolveAs) {
         // we use a dummy base url for relative urls
         var base = new URL(currentPath, "http://n");
         var urlAsString =
@@ -779,13 +833,31 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
           finalUrl.pathname = (0,
           _normalizeTrailingSlash.normalizePathTrailingSlash)(
             finalUrl.pathname
-          ); // if the origin didn't change, it means we received a relative href
+          );
+          var interpolatedAs = "";
+
+          if (
+            (0, _isDynamic.isDynamicRoute)(finalUrl.pathname) &&
+            finalUrl.searchParams &&
+            resolveAs
+          ) {
+            var query = (0, _querystring.searchParamsToUrlQuery)(
+              finalUrl.searchParams
+            );
+            interpolatedAs = interpolateAs(
+              finalUrl.pathname,
+              finalUrl.pathname,
+              query
+            );
+          } // if the origin didn't change, it means we received a relative href
 
-          return finalUrl.origin === base.origin
-            ? finalUrl.href.slice(finalUrl.origin.length)
-            : finalUrl.href;
+          var resolvedHref =
+            finalUrl.origin === base.origin
+              ? finalUrl.href.slice(finalUrl.origin.length)
+              : finalUrl.href;
+          return resolveAs ? [resolvedHref, interpolatedAs] : resolvedHref;
         } catch (_) {
-          return urlAsString;
+          return resolveAs ? [urlAsString] : urlAsString;
         }
       }
 
@@ -1104,7 +1176,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                     parsed,
                     _parsed,
                     pathname,
-                    searchParams,
                     query,
                     route,
                     _options$shallow,
@@ -1185,17 +1256,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             );
                             (_parsed = parsed),
                               (pathname = _parsed.pathname),
-                              (searchParams = _parsed.searchParams);
+                              (query = _parsed.query);
                             parsed = this._resolveHref(parsed, pages);
 
                             if (parsed.pathname !== pathname) {
                               pathname = parsed.pathname;
                               url = (0, _utils.formatWithValidation)(parsed);
-                            }
-
-                            query = (0, _querystring.searchParamsToUrlQuery)(
-                              searchParams
-                            ); // url and as should always be prefixed with basePath by this
+                            } // 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
 
@@ -1233,7 +1300,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             resolvedAs = delBasePath(resolvedAs);
 
                             if (!(0, _isDynamic.isDynamicRoute)(route)) {
-                              _context.next = 47;
+                              _context.next = 46;
                               break;
                             }
 
@@ -1247,7 +1314,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             )(asPathname);
 
                             if (routeMatch) {
-                              _context.next = 46;
+                              _context.next = 45;
                               break;
                             }
 
@@ -1258,7 +1325,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             });
 
                             if (!(missingParams.length > 0)) {
-                              _context.next = 44;
+                              _context.next = 43;
                               break;
                             }
 
@@ -1275,18 +1342,22 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                                 "Read more: https://err.sh/vercel/next.js/incompatible-href-as"
                             );
 
-                          case 44:
-                            _context.next = 47;
+                          case 43:
+                            _context.next = 46;
                             break;
 
-                          case 46:
-                            // Merge params into `query`, overwriting any specified in search
-                            Object.assign(query, routeMatch);
+                          case 45:
+                            if (route === asPathname) {
+                              as = interpolateAs(route, asPathname, query);
+                            } else {
+                              // Merge params into `query`, overwriting any specified in search
+                              Object.assign(query, routeMatch);
+                            }
 
-                          case 47:
+                          case 46:
                             Router.events.emit("routeChangeStart", as);
-                            _context.prev = 48;
-                            _context.next = 51;
+                            _context.prev = 47;
+                            _context.next = 50;
                             return this.getRouteInfo(
                               route,
                               pathname,
@@ -1295,7 +1366,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               shallow
                             );
 
-                          case 51:
+                          case 50:
                             routeInfo = _context.sent;
                             error = routeInfo.error;
                             Router.events.emit("beforeHistoryChange", as);
@@ -1304,7 +1375,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             if (false) {
                             }
 
-                            _context.next = 58;
+                            _context.next = 57;
                             return this.set(
                               route,
                               pathname,
@@ -1316,9 +1387,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                               else throw e;
                             });
 
-                          case 58:
+                          case 57:
                             if (!error) {
-                              _context.next = 61;
+                              _context.next = 60;
                               break;
                             }
 
@@ -1329,28 +1400,28 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                             );
                             throw error;
 
-                          case 61:
+                          case 60:
                             if (false) {
                             }
 
                             Router.events.emit("routeChangeComplete", as);
                             return _context.abrupt("return", true);
 
-                          case 66:
-                            _context.prev = 66;
-                            _context.t0 = _context["catch"](48);
+                          case 65:
+                            _context.prev = 65;
+                            _context.t0 = _context["catch"](47);
 
                             if (!_context.t0.cancelled) {
-                              _context.next = 70;
+                              _context.next = 69;
                               break;
                             }
 
                             return _context.abrupt("return", false);
 
-                          case 70:
+                          case 69:
                             throw _context.t0;
 
-                          case 71:
+                          case 70:
                           case "end":
                             return _context.stop();
                         }
@@ -1358,7 +1429,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                     },
                     _callee,
                     this,
-                    [[48, 66]]
+                    [[47, 65]]
                   );
                 })
               );
@@ -2060,6 +2131,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       /***/
     },
 
+    /***/ fcRV: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports["default"] = escapePathDelimiters; // escape delimiters used by path-to-regexp
+
+      function escapePathDelimiters(segment) {
+        return segment.replace(/[/#?]/g, function(_char) {
+          return encodeURIComponent(_char);
+        });
+      }
+
+      /***/
+    },
+
     /***/ "g/15": /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
@@ -2317,6 +2403,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
       var _utils = __webpack_require__("g/15");
 
+      var _querystring = __webpack_require__("3WeD");
+
       var DUMMY_BASE = new URL(
         false ? undefined : (0, _utils.getLocationOrigin)()
       );
@@ -2348,7 +2436,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
         return {
           pathname: pathname,
-          searchParams: searchParams,
+          query: (0, _querystring.searchParamsToUrlQuery)(searchParams),
           search: search,
           hash: hash,
           href: href.slice(DUMMY_BASE.origin.length)
Diff for 677f882d2ed8..87.module.js
@@ -542,6 +542,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       exports.addBasePath = addBasePath;
       exports.delBasePath = delBasePath;
       exports.isLocalURL = isLocalURL;
+      exports.interpolateAs = interpolateAs;
       exports.resolveHref = resolveHref;
       exports.markLoadingError = markLoadingError;
       exports.default = void 0;
@@ -568,6 +569,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
       var _routeRegex = __webpack_require__("YTqd");
 
+      var _escapePathDelimiters = _interopRequireDefault(
+        __webpack_require__("fcRV")
+      );
+
       function _interopRequireDefault(obj) {
         return obj && obj.__esModule
           ? obj
@@ -620,12 +625,59 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
           return false;
         }
       }
+
+      function interpolateAs(route, asPathname, query) {
+        var interpolatedRoute = "";
+        var dynamicRegex = (0, _routeRegex.getRouteRegex)(route);
+        var dynamicGroups = dynamicRegex.groups;
+        var dynamicMatches = // Try to match the dynamic route against the asPath
+          (asPathname !== route
+            ? (0, _routeMatcher.getRouteMatcher)(dynamicRegex)(asPathname)
+            : "") || // Fall back to reading the values from the href
+          // TODO: should this take priority; also need to change in the router.
+          query;
+        interpolatedRoute = route;
+
+        if (
+          !Object.keys(dynamicGroups).every(param => {
+            var value = dynamicMatches[param] || "";
+            var { repeat, optional } = dynamicGroups[param]; // support single-level catch-all
+            // TODO: more robust handling for user-error (passing `/`)
+
+            var replaced = "[".concat(repeat ? "..." : "").concat(param, "]");
+
+            if (optional) {
+              replaced = ""
+                .concat(!value ? "/" : "", "[")
+                .concat(replaced, "]");
+            }
+
+            if (repeat && !Array.isArray(value)) value = [value];
+            return (
+              (optional || param in dynamicMatches) && // Interpolate group into data URL if present
+              (interpolatedRoute =
+                interpolatedRoute.replace(
+                  replaced,
+                  repeat
+                    ? value.map(_escapePathDelimiters.default).join("/")
+                    : (0, _escapePathDelimiters.default)(value)
+                ) || "/")
+            );
+          })
+        ) {
+          interpolatedRoute = ""; // did not satisfy all requirements
+          // n.b. We ignore this error because we handle warning for this case in
+          // development in the `<Link>` component directly.
+        }
+
+        return interpolatedRoute;
+      }
       /**
        * Resolves a given hyperlink with a certain router state (basePath not included).
        * Preserves absolute urls.
        */
 
-      function resolveHref(currentPath, href) {
+      function resolveHref(currentPath, href, resolveAs) {
         // we use a dummy base url for relative urls
         var base = new URL(currentPath, "http://n");
         var urlAsString =
@@ -638,13 +690,31 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
           finalUrl.pathname = (0,
           _normalizeTrailingSlash.normalizePathTrailingSlash)(
             finalUrl.pathname
-          ); // if the origin didn't change, it means we received a relative href
+          );
+          var interpolatedAs = "";
+
+          if (
+            (0, _isDynamic.isDynamicRoute)(finalUrl.pathname) &&
+            finalUrl.searchParams &&
+            resolveAs
+          ) {
+            var query = (0, _querystring.searchParamsToUrlQuery)(
+              finalUrl.searchParams
+            );
+            interpolatedAs = interpolateAs(
+              finalUrl.pathname,
+              finalUrl.pathname,
+              query
+            );
+          } // if the origin didn't change, it means we received a relative href
 
-          return finalUrl.origin === base.origin
-            ? finalUrl.href.slice(finalUrl.origin.length)
-            : finalUrl.href;
+          var resolvedHref =
+            finalUrl.origin === base.origin
+              ? finalUrl.href.slice(finalUrl.origin.length)
+              : finalUrl.href;
+          return resolveAs ? [resolvedHref, interpolatedAs] : resolvedHref;
         } catch (_) {
-          return urlAsString;
+          return resolveAs ? [urlAsString] : urlAsString;
         }
       }
 
@@ -959,15 +1029,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
           var { __rewrites: rewrites } = await this.pageLoader
             .promisedBuildManifest;
           var parsed = (0, _parseRelativeUrl.parseRelativeUrl)(url);
-          var { pathname, searchParams } = parsed;
+          var { pathname, query } = parsed;
           parsed = this._resolveHref(parsed, pages);
 
           if (parsed.pathname !== pathname) {
             pathname = parsed.pathname;
             url = (0, _utils.formatWithValidation)(parsed);
-          }
-
-          var query = (0, _querystring.searchParamsToUrlQuery)(searchParams); // url and as should always be prefixed with basePath by this
+          } // 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
 
@@ -1025,6 +1093,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
                     "Read more: https://err.sh/vercel/next.js/incompatible-href-as"
                 );
               }
+            } else if (route === asPathname) {
+              as = interpolateAs(route, asPathname, query);
             } else {
               // Merge params into `query`, overwriting any specified in search
               Object.assign(query, routeMatch);
@@ -1443,6 +1513,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       /***/
     },
 
+    /***/ fcRV: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.default = escapePathDelimiters; // escape delimiters used by path-to-regexp
+
+      function escapePathDelimiters(segment) {
+        return segment.replace(/[/#?]/g, char => encodeURIComponent(char));
+      }
+
+      /***/
+    },
+
     /***/ "g/15": /***/ function(module, exports, __webpack_require__) {
       "use strict";
 
@@ -1626,6 +1709,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
       var _utils = __webpack_require__("g/15");
 
+      var _querystring = __webpack_require__("3WeD");
+
       var DUMMY_BASE = new URL(
         false ? undefined : (0, _utils.getLocationOrigin)()
       );
@@ -1657,7 +1742,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
 
         return {
           pathname,
-          searchParams,
+          query: (0, _querystring.searchParamsToUrlQuery)(searchParams),
           search,
           hash,
           href: href.slice(DUMMY_BASE.origin.length)
Diff for main-0d31828..94.module.js
@@ -210,7 +210,7 @@
         document.getElementById("__NEXT_DATA__").textContent
       );
       window.__NEXT_DATA__ = data;
-      var version = "9.5.3";
+      var version = "9.5.4-canary.2";
       exports.version = version;
       var {
         props: hydrateProps,
@@ -895,19 +895,6 @@
       /***/
     },
 
-    /***/ fcRV: /***/ function(module, exports, __webpack_require__) {
-      "use strict";
-
-      exports.__esModule = true;
-      exports.default = escapePathDelimiters; // escape delimiters used by path-to-regexp
-
-      function escapePathDelimiters(segment) {
-        return segment.replace(/[/#?]/g, char => encodeURIComponent(char));
-      }
-
-      /***/
-    },
-
     /***/ pVnL: /***/ function(module, exports) {
       function _extends() {
         module.exports = _extends =
@@ -1214,10 +1201,6 @@
 
       var _router = __webpack_require__("elyg");
 
-      var _escapePathDelimiters = _interopRequireDefault(
-        __webpack_require__("fcRV")
-      );
-
       var _getAssetPathFromRoute = _interopRequireDefault(
         __webpack_require__("Lab5")
       );
@@ -1226,12 +1209,6 @@
 
       var _parseRelativeUrl = __webpack_require__("hS4m");
 
-      var _querystring = __webpack_require__("3WeD");
-
-      var _routeMatcher = __webpack_require__("gguc");
-
-      var _routeRegex = __webpack_require__("YTqd");
-
       var looseToArray = input => [].slice.call(input);
 
       exports.looseToArray = looseToArray;
@@ -1390,9 +1367,8 @@
          */
 
         getDataHref(href, asPath, ssg) {
-          var { pathname: hrefPathname, searchParams, search } = (0,
+          var { pathname: hrefPathname, query, search } = (0,
           _parseRelativeUrl.parseRelativeUrl)(href);
-          var query = (0, _querystring.searchParamsToUrlQuery)(searchParams);
           var { pathname: asPathname } = (0,
           _parseRelativeUrl.parseRelativeUrl)(asPath);
           var route = normalizeRoute(hrefPathname);
@@ -1407,53 +1383,10 @@
             );
           };
 
-          var isDynamic = (0, _isDynamic.isDynamicRoute)(route),
-            interpolatedRoute;
-
-          if (isDynamic) {
-            var dynamicRegex = (0, _routeRegex.getRouteRegex)(route);
-            var dynamicGroups = dynamicRegex.groups;
-            var dynamicMatches = // Try to match the dynamic route against the asPath
-              (0, _routeMatcher.getRouteMatcher)(dynamicRegex)(asPathname) || // Fall back to reading the values from the href
-              // TODO: should this take priority; also need to change in the router.
-              query;
-            interpolatedRoute = route;
-
-            if (
-              !Object.keys(dynamicGroups).every(param => {
-                var value = dynamicMatches[param] || "";
-                var { repeat, optional } = dynamicGroups[param]; // support single-level catch-all
-                // TODO: more robust handling for user-error (passing `/`)
-
-                var replaced = "["
-                  .concat(repeat ? "..." : "")
-                  .concat(param, "]");
-
-                if (optional) {
-                  replaced = ""
-                    .concat(!value ? "/" : "", "[")
-                    .concat(replaced, "]");
-                }
-
-                if (repeat && !Array.isArray(value)) value = [value];
-                return (
-                  (optional || param in dynamicMatches) && // Interpolate group into data URL if present
-                  (interpolatedRoute =
-                    interpolatedRoute.replace(
-                      replaced,
-                      repeat
-                        ? value.map(_escapePathDelimiters.default).join("/")
-                        : (0, _escapePathDelimiters.default)(value)
-                    ) || "/")
-                );
-              })
-            ) {
-              interpolatedRoute = ""; // did not satisfy all requirements
-              // n.b. We ignore this error because we handle warning for this case in
-              // development in the `<Link>` component directly.
-            }
-          }
-
+          var isDynamic = (0, _isDynamic.isDynamicRoute)(route);
+          var interpolatedRoute = isDynamic
+            ? (0, _router.interpolateAs)(hrefPathname, asPathname, query)
+            : "";
           return isDynamic
             ? interpolatedRoute && getHrefForSlug(interpolatedRoute)
             : getHrefForSlug(route);
Diff for main-58fe85d..fac23ae4b.js
@@ -294,7 +294,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         document.getElementById("__NEXT_DATA__").textContent
       );
       window.__NEXT_DATA__ = data;
-      var version = "9.5.3";
+      var version = "9.5.4-canary.2";
       exports.version = version;
       var hydrateProps = data.props,
         hydrateErr = data.err,
@@ -1225,21 +1225,6 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
       /***/
     },
 
-    /***/ fcRV: /***/ function(module, exports, __webpack_require__) {
-      "use strict";
-
-      exports.__esModule = true;
-      exports["default"] = escapePathDelimiters; // escape delimiters used by path-to-regexp
-
-      function escapePathDelimiters(segment) {
-        return segment.replace(/[/#?]/g, function(_char) {
-          return encodeURIComponent(_char);
-        });
-      }
-
-      /***/
-    },
-
     /***/ pVnL: /***/ function(module, exports) {
       function _extends() {
         module.exports = _extends =
@@ -1550,10 +1535,6 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
 
       var _router = __webpack_require__("elyg");
 
-      var _escapePathDelimiters = _interopRequireDefault(
-        __webpack_require__("fcRV")
-      );
-
       var _getAssetPathFromRoute = _interopRequireDefault(
         __webpack_require__("Lab5")
       );
@@ -1562,12 +1543,6 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
 
       var _parseRelativeUrl = __webpack_require__("hS4m");
 
-      var _querystring = __webpack_require__("3WeD");
-
-      var _routeMatcher = __webpack_require__("gguc");
-
-      var _routeRegex = __webpack_require__("YTqd");
-
       var looseToArray = function looseToArray(input) {
         return [].slice.call(input);
       };
@@ -1752,13 +1727,9 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
 
               var _ref = (0, _parseRelativeUrl.parseRelativeUrl)(href),
                 hrefPathname = _ref.pathname,
-                searchParams = _ref.searchParams,
+                query = _ref.query,
                 search = _ref.search;
 
-              var query = (0, _querystring.searchParamsToUrlQuery)(
-                searchParams
-              );
-
               var _ref2 = (0, _parseRelativeUrl.parseRelativeUrl)(asPath),
                 asPathname = _ref2.pathname;
 
@@ -1777,59 +1748,10 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
                 );
               };
 
-              var isDynamic = (0, _isDynamic.isDynamicRoute)(route),
-                interpolatedRoute;
-
-              if (isDynamic) {
-                var dynamicRegex = (0, _routeRegex.getRouteRegex)(route);
-                var dynamicGroups = dynamicRegex.groups;
-                var dynamicMatches = // Try to match the dynamic route against the asPath
-                  (0, _routeMatcher.getRouteMatcher)(dynamicRegex)(
-                    asPathname
-                  ) || // Fall back to reading the values from the href
-                  // TODO: should this take priority; also need to change in the router.
-                  query;
-                interpolatedRoute = route;
-
-                if (
-                  !Object.keys(dynamicGroups).every(function(param) {
-                    var value = dynamicMatches[param] || "";
-                    var _dynamicGroups$param = dynamicGroups[param],
-                      repeat = _dynamicGroups$param.repeat,
-                      optional = _dynamicGroups$param.optional; // support single-level catch-all
-                    // TODO: more robust handling for user-error (passing `/`)
-
-                    var replaced = "["
-                      .concat(repeat ? "..." : "")
-                      .concat(param, "]");
-
-                    if (optional) {
-                      replaced = ""
-                        .concat(!value ? "/" : "", "[")
-                        .concat(replaced, "]");
-                    }
-
-                    if (repeat && !Array.isArray(value)) value = [value];
-                    return (
-                      (optional || param in dynamicMatches) && // Interpolate group into data URL if present
-                      (interpolatedRoute =
-                        interpolatedRoute.replace(
-                          replaced,
-                          repeat
-                            ? value
-                                .map(_escapePathDelimiters["default"])
-                                .join("/")
-                            : (0, _escapePathDelimiters["default"])(value)
-                        ) || "/")
-                    );
-                  })
-                ) {
-                  interpolatedRoute = ""; // did not satisfy all requirements
-                  // n.b. We ignore this error because we handle warning for this case in
-                  // development in the `<Link>` component directly.
-                }
-              }
-
+              var isDynamic = (0, _isDynamic.isDynamicRoute)(route);
+              var interpolatedRoute = isDynamic
+                ? (0, _router.interpolateAs)(hrefPathname, asPathname, query)
+                : "";
               return isDynamic
                 ? interpolatedRoute && getHrefForSlug(interpolatedRoute)
                 : getHrefForSlug(route);
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css="true"></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-0d318286e5f7c6910b94.module.js"
+      href="/_next/static/chunks/main-f3a9e5bb7bff64483f24.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -25,7 +25,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.f48d291f6d1033f6c087.module.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.50e586e3504862d725d1.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -82,13 +82,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-58fe85dd211fac23ae4b.js"
+      src="/_next/static/chunks/main-fac5d4f65990ce4929a6.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-0d318286e5f7c6910b94.module.js"
+      src="/_next/static/chunks/main-f3a9e5bb7bff64483f24.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
@@ -118,13 +118,13 @@
       type="module"
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.abb28f9c6d97000fca82.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.695ae9abdaa5c90f38d1.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.f48d291f6d1033f6c087.module.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.50e586e3504862d725d1.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css="true"></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-0d318286e5f7c6910b94.module.js"
+      href="/_next/static/chunks/main-f3a9e5bb7bff64483f24.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -25,7 +25,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.f48d291f6d1033f6c087.module.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.50e586e3504862d725d1.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -37,7 +37,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/pages/link-e2f1e0e7ed02569239da.module.js"
+      href="/_next/static/chunks/pages/link-cb038f0ac2e648ce4861.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -87,13 +87,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-58fe85dd211fac23ae4b.js"
+      src="/_next/static/chunks/main-fac5d4f65990ce4929a6.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-0d318286e5f7c6910b94.module.js"
+      src="/_next/static/chunks/main-f3a9e5bb7bff64483f24.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
@@ -123,13 +123,13 @@
       type="module"
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.abb28f9c6d97000fca82.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.695ae9abdaa5c90f38d1.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.f48d291f6d1033f6c087.module.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.50e586e3504862d725d1.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
@@ -147,13 +147,13 @@
       type="module"
     ></script>
     <script
-      src="/_next/static/chunks/pages/link-46fd48c0b73b2f2d75a4.js"
+      src="/_next/static/chunks/pages/link-32658e75d53af2daa2e0.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/pages/link-e2f1e0e7ed02569239da.module.js"
+      src="/_next/static/chunks/pages/link-cb038f0ac2e648ce4861.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css="true"></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-0d318286e5f7c6910b94.module.js"
+      href="/_next/static/chunks/main-f3a9e5bb7bff64483f24.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -25,7 +25,7 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.f48d291f6d1033f6c087.module.js"
+      href="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.50e586e3504862d725d1.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -82,13 +82,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-58fe85dd211fac23ae4b.js"
+      src="/_next/static/chunks/main-fac5d4f65990ce4929a6.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-0d318286e5f7c6910b94.module.js"
+      src="/_next/static/chunks/main-f3a9e5bb7bff64483f24.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
@@ -118,13 +118,13 @@
       type="module"
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.abb28f9c6d97000fca82.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.695ae9abdaa5c90f38d1.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.f48d291f6d1033f6c087.module.js"
+      src="/_next/static/chunks/677f882d2ed86fa3467b8979053c1a4c3f8bc4df.50e586e3504862d725d1.module.js"
       async=""
       crossorigin="anonymous"
       type="module"

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
buildDuration 15.3s 14.6s -728ms
nodeModulesSize 56.7 MB 56.7 MB ⚠️ +12.6 kB
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
677f882d2ed8..9ff9.js gzip 10.3 kB N/A N/A
framework.HASH.js gzip 39 kB 39 kB
main-b338f5a..3500.js gzip 7.31 kB N/A N/A
webpack-e067..f178.js gzip 751 B 751 B
677f882d2ed8..b5de.js gzip N/A 10.5 kB N/A
main-195c642..b6b7.js gzip N/A 7.08 kB N/A
Overall change 57.3 kB 57.3 kB ⚠️ +13 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
677f882d2ed8..dule.js gzip 6.13 kB N/A N/A
framework.HA..dule.js gzip 39 kB 39 kB
main-830c506..dule.js gzip 6.37 kB N/A N/A
webpack-07c5..dule.js gzip 751 B 751 B
677f882d2ed8..dule.js gzip N/A 6.4 kB N/A
main-ad445e5..dule.js gzip N/A 6.14 kB N/A
Overall change 52.2 kB 52.3 kB ⚠️ +43 B
Legacy Client Bundles (polyfills)
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
polyfills-4b..e242.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
_app-9a0b9e1..b37e.js gzip 1.28 kB 1.28 kB
_error-ed1b0..8fbd.js gzip 3.44 kB 3.44 kB
hooks-89731c..c609.js gzip 887 B 887 B
index-17468f..5d83.js gzip 227 B 227 B
link-ae98065..267e.js gzip 1.29 kB N/A N/A
routerDirect..924c.js gzip 284 B 284 B
withRouter-7..c13d.js gzip 284 B 284 B
link-d2344ce..8b36.js gzip N/A 1.3 kB N/A
Overall change 7.69 kB 7.71 kB ⚠️ +16 B
Client Pages Modern Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
_app-75d3a82..dule.js gzip 625 B 625 B
_error-4469a..dule.js gzip 2.29 kB 2.29 kB
hooks-cbf13f..dule.js gzip 387 B 387 B
index-b9a643..dule.js gzip 226 B 226 B
link-cb244c4..dule.js gzip 1.26 kB N/A N/A
routerDirect..dule.js gzip 284 B 284 B
withRouter-f..dule.js gzip 282 B 282 B
link-f8c0daf..dule.js gzip N/A 1.26 kB N/A
Overall change 5.35 kB 5.36 kB ⚠️ +5 B
Client Build Manifests Overall decrease ✓
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
_buildManifest.js gzip 323 B 322 B -1 B
_buildManife..dule.js gzip 329 B 329 B
Overall change 652 B 651 B -1 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary v9.5.3 vercel/next.js refs/tags/v9.5.4-canary.2 Change
_error.js 1.03 MB 1.03 MB ⚠️ +225 B
404.html 4.22 kB 4.22 kB
hooks.html 3.86 kB 3.86 kB
index.js 1.03 MB 1.03 MB ⚠️ +225 B
link.js 1.07 MB 1.08 MB ⚠️ +2.64 kB
routerDirect.js 1.07 MB 1.07 MB ⚠️ +2.61 kB
withRouter.js 1.07 MB 1.07 MB ⚠️ +2.61 kB
Overall change 5.28 MB 5.29 MB ⚠️ +8.3 kB

Please sign in to comment.