Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Font optimization #21676

Merged
merged 32 commits into from
Apr 5, 2021
Merged

Font optimization #21676

merged 32 commits into from
Apr 5, 2021

Conversation

janicklas-ralph
Copy link
Contributor

Enable font optimization by default

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

# Conflicts:
#	packages/next/next-server/server/config.ts
@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@ijjk
Copy link
Member

ijjk commented Mar 9, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 12s 11.8s -238ms
nodeModulesSize 42.8 MB 42.8 MB -453 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 2.164 2.698 ⚠️ +0.53
/ avg req/sec 1155.46 926.74 ⚠️ -228.72
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.441 1.473 ⚠️ +0.03
/error-in-render avg req/sec 1734.55 1697.31 ⚠️ -37.24
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..a2e7.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.65 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 59.8 kB 59.8 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB 3.71 kB ⚠️ +255 B
amp-e3e9bc99..932c.js gzip 536 B 536 B
hooks-5023ef..3670.js gzip 888 B 888 B
index-3a2b03..c677.js gzip 227 B 227 B
link-177412b..043e.js gzip 1.67 kB 1.67 kB
routerDirect..1a66.js gzip 303 B 303 B
withRouter-9..1b7d.js gzip 302 B 302 B
Overall change 8.66 kB 8.92 kB ⚠️ +255 B
Client Build Manifests
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Rendered Page Sizes
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 613 B 613 B
link.html gzip 621 B 621 B
withRouter.html gzip 607 B 607 B
Overall change 1.84 kB 1.84 kB

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: [],
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-41b33258dcb27611e3a6.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-e3034768442652eac2c9.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-a2a0931f597d8cdcfe41.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-7d414f857fa594e7cf86.js"],
   "/hooks": [
Diff for _error-e3034..652eac2c9.js
@@ -540,8 +540,23 @@ Also adds support for deduplicated `key` properties
           .map(function(c, i) {
             var key = c.key || i;
 
-            if (false) {
-              var newProps;
+            if (true && !props.inAmpMode) {
+              if (
+                c.type === "link" &&
+                c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.
+                ["https://fonts.googleapis.com/css"].some(function(url) {
+                  return c.props["href"].startsWith(url);
+                })
+              ) {
+                var newProps = _objectSpread({}, c.props || {});
+
+                newProps["data-href"] = newProps["href"];
+                newProps["href"] = undefined;
+                return /*#__PURE__*/ _react["default"].cloneElement(
+                  c,
+                  newProps
+                );
+              }
             }
 
             return /*#__PURE__*/ _react["default"].cloneElement(c, {

Serverless Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 14.3s 14.5s ⚠️ +249ms
nodeModulesSize 42.8 MB 42.8 MB -453 B
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..a2e7.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 6.65 kB 6.65 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 59.8 kB 59.8 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-2a09aa2..4a98.js gzip 1.28 kB 1.28 kB
_error-8b758..aef6.js gzip 3.46 kB N/A N/A
amp-e3e9bc99..932c.js gzip 536 B 536 B
hooks-5023ef..3670.js gzip 888 B 888 B
index-3a2b03..c677.js gzip 227 B 227 B
link-177412b..043e.js gzip 1.67 kB 1.67 kB
routerDirect..1a66.js gzip 303 B 303 B
withRouter-9..1b7d.js gzip 302 B 302 B
_error-a0189..ce42.js gzip N/A 3.71 kB N/A
Overall change 8.66 kB 8.92 kB ⚠️ +255 B
Client Build Manifests
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 347 B 347 B
Overall change 347 B 347 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_error.js 1.02 MB 1.02 MB ⚠️ +1.25 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.02 MB ⚠️ +1.25 kB
link.js 1.08 MB 1.08 MB ⚠️ +1.25 kB
routerDirect.js 1.07 MB 1.07 MB ⚠️ +1.25 kB
withRouter.js 1.07 MB 1.07 MB ⚠️ +1.25 kB
Overall change 5.27 MB 5.28 MB ⚠️ +6.27 kB

Webpack 5 Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 14.9s 15.5s ⚠️ +575ms
nodeModulesSize 42.8 MB 42.8 MB -453 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 2.331 2.729 ⚠️ +0.4
/ avg req/sec 1072.66 916.22 ⚠️ -156.44
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.516 1.578 ⚠️ +0.06
/error-in-render avg req/sec 1649.14 1583.98 ⚠️ -65.16
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
597-2bc2376a..203d.js gzip 13.3 kB 13.3 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 6.59 kB 6.59 kB
webpack-HASH.js gzip 954 B 954 B
Overall change 60.2 kB 60.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-aedc815..1421.js gzip 1.26 kB 1.26 kB
_error-71ec2..1a96.js gzip 3.38 kB 3.65 kB ⚠️ +273 B
amp-33a09cb0..6745.js gzip 536 B 536 B
hooks-4e968a..f870.js gzip 902 B 902 B
index-5c6845..f75c.js gzip 230 B 230 B
link-99f0c6c..b84a.js gzip 1.65 kB 1.65 kB
routerDirect..bb56.js gzip 306 B 306 B
withRouter-7..2133.js gzip 302 B 302 B
Overall change 8.57 kB 8.84 kB ⚠️ +273 B
Client Build Manifests Overall decrease ✓
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 326 B 325 B -1 B
Overall change 326 B 325 B -1 B
Rendered Page Sizes
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 585 B 585 B
link.html gzip 593 B 593 B
withRouter.html gzip 581 B 581 B
Overall change 1.76 kB 1.76 kB

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: [],
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-3a2b03695551a802c677.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-8b758797fbfd831caef6.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-a01894fb12c522a9ce42.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-e3e9bc9915cf2811932c.js"],
   "/hooks": [
Diff for _error-8b758..d831caef6.js
@@ -185,14 +185,26 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
     },
     "8Kt/": function(e, t, n) {
       "use strict";
-      n("lSNA");
-      (t.__esModule = !0), (t.defaultHead = f), (t.default = void 0);
-      var r,
-        o = (function(e) {
+      var r = n("lSNA");
+      function o(e, t) {
+        var n = Object.keys(e);
+        if (Object.getOwnPropertySymbols) {
+          var r = Object.getOwnPropertySymbols(e);
+          t &&
+            (r = r.filter(function(t) {
+              return Object.getOwnPropertyDescriptor(e, t).enumerable;
+            })),
+            n.push.apply(n, r);
+        }
+        return n;
+      }
+      (t.__esModule = !0), (t.defaultHead = p), (t.default = void 0);
+      var a,
+        i = (function(e) {
           if (e && e.__esModule) return e;
           if (null === e || ("object" !== typeof e && "function" !== typeof e))
             return { default: e };
-          var t = s();
+          var t = l();
           if (t && t.has(e)) return t.get(e);
           var n = {},
             r = Object.defineProperty && Object.getOwnPropertyDescriptor;
@@ -206,27 +218,27 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           (n.default = e), t && t.set(e, n);
           return n;
         })(n("q1tI")),
-        a = (r = n("Xuae")) && r.__esModule ? r : { default: r },
-        i = n("lwAK"),
-        u = n("FYa8"),
-        c = n("/0+H");
-      function s() {
+        u = (a = n("Xuae")) && a.__esModule ? a : { default: a },
+        c = n("lwAK"),
+        s = n("FYa8"),
+        f = n("/0+H");
+      function l() {
         if ("function" !== typeof WeakMap) return null;
         var e = new WeakMap();
         return (
-          (s = function() {
+          (l = function() {
             return e;
           }),
           e
         );
       }
-      function f() {
+      function p() {
         var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
-          t = [o.default.createElement("meta", { charSet: "utf-8" })];
+          t = [i.default.createElement("meta", { charSet: "utf-8" })];
         return (
           e ||
             t.push(
-              o.default.createElement("meta", {
+              i.default.createElement("meta", {
                 name: "viewport",
                 content: "width=device-width"
               })
@@ -234,12 +246,12 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           t
         );
       }
-      function l(e, t) {
+      function d(e, t) {
         return "string" === typeof t || "number" === typeof t
           ? e
-          : t.type === o.default.Fragment
+          : t.type === i.default.Fragment
           ? e.concat(
-              o.default.Children.toArray(t.props.children).reduce(function(
+              i.default.Children.toArray(t.props.children).reduce(function(
                 e,
                 t
               ) {
@@ -251,16 +263,16 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             )
           : e.concat(t);
       }
-      var p = ["name", "httpEquiv", "charSet", "itemProp"];
-      function d(e, t) {
+      var y = ["name", "httpEquiv", "charSet", "itemProp"];
+      function h(e, t) {
         return e
           .reduce(function(e, t) {
-            var n = o.default.Children.toArray(t.props.children);
+            var n = i.default.Children.toArray(t.props.children);
             return e.concat(n);
           }, [])
-          .reduce(l, [])
+          .reduce(d, [])
           .reverse()
-          .concat(f(t.inAmpMode))
+          .concat(p(t.inAmpMode))
           .filter(
             (function() {
               var e = new Set(),
@@ -285,15 +297,15 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                     t.has(o.type) ? (a = !1) : t.add(o.type);
                     break;
                   case "meta":
-                    for (var c = 0, s = p.length; c < s; c++) {
-                      var f = p[c];
+                    for (var c = 0, s = y.length; c < s; c++) {
+                      var f = y[c];
                       if (o.props.hasOwnProperty(f))
                         if ("charSet" === f) n.has(f) ? (a = !1) : n.add(f);
                         else {
                           var l = o.props[f],
-                            d = r[f] || new Set();
-                          ("name" === f && i) || !d.has(l)
-                            ? (d.add(l), (r[f] = d))
+                            p = r[f] || new Set();
+                          ("name" === f && i) || !p.has(l)
+                            ? (p.add(l), (r[f] = p))
                             : (a = !1);
                         }
                     }
@@ -303,28 +315,64 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             })()
           )
           .reverse()
-          .map(function(e, t) {
-            var n = e.key || t;
-            return o.default.cloneElement(e, { key: n });
+          .map(function(e, n) {
+            var a = e.key || n;
+            if (
+              !t.inAmpMode &&
+              "link" === e.type &&
+              e.props.href &&
+              ["https://fonts.googleapis.com/css"].some(function(t) {
+                return e.props.href.startsWith(t);
+              })
+            ) {
+              var u = (function(e) {
+                for (var t = 1; t < arguments.length; t++) {
+                  var n = null != arguments[t] ? arguments[t] : {};
+                  t % 2
+                    ? o(Object(n), !0).forEach(function(t) {
+                        r(e, t, n[t]);
+                      })
+                    : Object.getOwnPropertyDescriptors
+                    ? Object.defineProperties(
+                        e,
+                        Object.getOwnPropertyDescriptors(n)
+                      )
+                    : o(Object(n)).forEach(function(t) {
+                        Object.defineProperty(
+                          e,
+                          t,
+                          Object.getOwnPropertyDescriptor(n, t)
+                        );
+                      });
+                }
+                return e;
+              })({}, e.props || {});
+              return (
+                (u["data-href"] = u.href),
+                (u.href = void 0),
+                i.default.cloneElement(e, u)
+              );
+            }
+            return i.default.cloneElement(e, { key: a });
           });
       }
-      function y(e) {
+      function v(e) {
         var t = e.children,
-          n = (0, o.useContext)(i.AmpStateContext),
-          r = (0, o.useContext)(u.HeadManagerContext);
-        return o.default.createElement(
-          a.default,
+          n = (0, i.useContext)(c.AmpStateContext),
+          r = (0, i.useContext)(s.HeadManagerContext);
+        return i.default.createElement(
+          u.default,
           {
-            reduceComponentsToState: d,
+            reduceComponentsToState: h,
             headManager: r,
-            inAmpMode: (0, c.isInAmpMode)(n)
+            inAmpMode: (0, f.isInAmpMode)(n)
           },
           t
         );
       }
-      y.rewind = function() {};
-      var h = y;
-      t.default = h;
+      v.rewind = function() {};
+      var m = v;
+      t.default = m;
     },
     Bnag: function(e, t) {
       e.exports = function() {
Diff for index.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "s9cLbLqzRerb17ZWC08d2",
+        "buildId": "zUNvcO1xsudKw7ThVZgEm",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/s9cLbLqzRerb17ZWC08d2/_buildManifest.js"
+      src="/_next/static/zUNvcO1xsudKw7ThVZgEm/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/s9cLbLqzRerb17ZWC08d2/_ssgManifest.js"
+      src="/_next/static/zUNvcO1xsudKw7ThVZgEm/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "s9cLbLqzRerb17ZWC08d2",
+        "buildId": "zUNvcO1xsudKw7ThVZgEm",
         "isFallback": false,
         "gip": true
       }
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/s9cLbLqzRerb17ZWC08d2/_buildManifest.js"
+      src="/_next/static/zUNvcO1xsudKw7ThVZgEm/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/s9cLbLqzRerb17ZWC08d2/_ssgManifest.js"
+      src="/_next/static/zUNvcO1xsudKw7ThVZgEm/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "s9cLbLqzRerb17ZWC08d2",
+        "buildId": "zUNvcO1xsudKw7ThVZgEm",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/s9cLbLqzRerb17ZWC08d2/_buildManifest.js"
+      src="/_next/static/zUNvcO1xsudKw7ThVZgEm/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/s9cLbLqzRerb17ZWC08d2/_ssgManifest.js"
+      src="/_next/static/zUNvcO1xsudKw7ThVZgEm/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: a4f5193

# Conflicts:
#	packages/next/export/worker.ts
#	test/integration/build-output/test/index.test.js
@ijjk
Copy link
Member

ijjk commented Mar 16, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 11.5s 11.3s -220ms
nodeModulesSize 42.8 MB 42.8 MB -277 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 1.982 2.317 ⚠️ +0.34
/ avg req/sec 1261.34 1078.8 ⚠️ -182.54
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.177 1.244 ⚠️ +0.07
/error-in-render avg req/sec 2123.82 2010.32 ⚠️ -113.5
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..a2e7.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.14 kB 7.14 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.3 kB 60.3 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-fde3324..9dd1.js gzip 1.28 kB 1.28 kB
_error-af59f..582f.js gzip 3.46 kB 3.71 kB ⚠️ +255 B
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-e6cee42..49eb.js gzip 1.64 kB 1.64 kB
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
Overall change 8.64 kB 8.89 kB ⚠️ +255 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 346 B 347 B ⚠️ +1 B
Overall change 346 B 347 B ⚠️ +1 B
Rendered Page Sizes
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 614 B 614 B
link.html gzip 621 B 621 B
withRouter.html gzip 609 B 609 B
Overall change 1.84 kB 1.84 kB

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: [],
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-b1738b6c9dd4aa373c84.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-6fc12bd74dc2417101e6.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-c75557f170c57b2c8979.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-27f75ad11120c5cdedd1.js"],
   "/hooks": [
Diff for _error-6fc12..2417101e6.js
@@ -540,8 +540,23 @@ Also adds support for deduplicated `key` properties
           .map(function(c, i) {
             var key = c.key || i;
 
-            if (false) {
-              var newProps;
+            if (true && !props.inAmpMode) {
+              if (
+                c.type === "link" &&
+                c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.
+                ["https://fonts.googleapis.com/css"].some(function(url) {
+                  return c.props["href"].startsWith(url);
+                })
+              ) {
+                var newProps = _objectSpread({}, c.props || {});
+
+                newProps["data-href"] = newProps["href"];
+                newProps["href"] = undefined;
+                return /*#__PURE__*/ _react["default"].cloneElement(
+                  c,
+                  newProps
+                );
+              }
             }
 
             return /*#__PURE__*/ _react["default"].cloneElement(c, {

Serverless Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 12.9s 12.8s -74ms
nodeModulesSize 42.8 MB 42.8 MB -277 B
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..a2e7.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.14 kB 7.14 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.3 kB 60.3 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-fde3324..9dd1.js gzip 1.28 kB 1.28 kB
_error-af59f..582f.js gzip 3.46 kB N/A N/A
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-e6cee42..49eb.js gzip 1.64 kB 1.64 kB
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
_error-d07ca..ef4d.js gzip N/A 3.71 kB N/A
Overall change 8.64 kB 8.89 kB ⚠️ +255 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 346 B 347 B ⚠️ +1 B
Overall change 346 B 347 B ⚠️ +1 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_error.js 1.02 MB 1.02 MB ⚠️ +1.25 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.02 MB ⚠️ +1.25 kB
link.js 1.08 MB 1.08 MB ⚠️ +1.25 kB
routerDirect.js 1.07 MB 1.07 MB ⚠️ +1.25 kB
withRouter.js 1.07 MB 1.07 MB ⚠️ +1.25 kB
Overall change 5.27 MB 5.28 MB ⚠️ +6.27 kB

Webpack 5 Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 13s 13s ⚠️ +42ms
nodeModulesSize 42.8 MB 42.8 MB -277 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 1.956 2.316 ⚠️ +0.36
/ avg req/sec 1278.17 1079.67 ⚠️ -198.5
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.168 1.228 ⚠️ +0.06
/error-in-render avg req/sec 2140.13 2036.27 ⚠️ -103.86
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
597-2bc2376a..203d.js gzip 13.3 kB 13.3 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 7.08 kB 7.08 kB
webpack-HASH.js gzip 954 B 954 B
Overall change 60.7 kB 60.7 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-0c62a59..94b7.js gzip 1.26 kB 1.26 kB
_error-97d24..ed28.js gzip 3.38 kB 3.65 kB ⚠️ +273 B
amp-2926e4c2..9ccc.js gzip 536 B 536 B
hooks-1ed65b..8908.js gzip 902 B 902 B
index-6259b6..77d8.js gzip 230 B 230 B
link-2a29128..cc6e.js gzip 1.63 kB 1.63 kB
routerDirect..862a.js gzip 306 B 306 B
withRouter-4..76fd.js gzip 302 B 302 B
Overall change 8.54 kB 8.82 kB ⚠️ +273 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 322 B 324 B ⚠️ +2 B
Overall change 322 B 324 B ⚠️ +2 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 585 B 585 B
link.html gzip 593 B 592 B -1 B
withRouter.html gzip 580 B 579 B -1 B
Overall change 1.76 kB 1.76 kB -2 B

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: [],
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-ac435c89e537f4e6ecf2.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-af59f52346097a29582f.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-d07ca8afdf6c45b9ef4d.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-9716187d43cb5ac80aa8.js"],
   "/hooks": [
Diff for _error-af59f..97a29582f.js
@@ -185,14 +185,26 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
     },
     "8Kt/": function(e, t, n) {
       "use strict";
-      n("lSNA");
-      (t.__esModule = !0), (t.defaultHead = f), (t.default = void 0);
-      var r,
-        o = (function(e) {
+      var r = n("lSNA");
+      function o(e, t) {
+        var n = Object.keys(e);
+        if (Object.getOwnPropertySymbols) {
+          var r = Object.getOwnPropertySymbols(e);
+          t &&
+            (r = r.filter(function(t) {
+              return Object.getOwnPropertyDescriptor(e, t).enumerable;
+            })),
+            n.push.apply(n, r);
+        }
+        return n;
+      }
+      (t.__esModule = !0), (t.defaultHead = p), (t.default = void 0);
+      var a,
+        i = (function(e) {
           if (e && e.__esModule) return e;
           if (null === e || ("object" !== typeof e && "function" !== typeof e))
             return { default: e };
-          var t = s();
+          var t = l();
           if (t && t.has(e)) return t.get(e);
           var n = {},
             r = Object.defineProperty && Object.getOwnPropertyDescriptor;
@@ -206,27 +218,27 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           (n.default = e), t && t.set(e, n);
           return n;
         })(n("q1tI")),
-        a = (r = n("Xuae")) && r.__esModule ? r : { default: r },
-        i = n("lwAK"),
-        u = n("FYa8"),
-        c = n("/0+H");
-      function s() {
+        u = (a = n("Xuae")) && a.__esModule ? a : { default: a },
+        c = n("lwAK"),
+        s = n("FYa8"),
+        f = n("/0+H");
+      function l() {
         if ("function" !== typeof WeakMap) return null;
         var e = new WeakMap();
         return (
-          (s = function() {
+          (l = function() {
             return e;
           }),
           e
         );
       }
-      function f() {
+      function p() {
         var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
-          t = [o.default.createElement("meta", { charSet: "utf-8" })];
+          t = [i.default.createElement("meta", { charSet: "utf-8" })];
         return (
           e ||
             t.push(
-              o.default.createElement("meta", {
+              i.default.createElement("meta", {
                 name: "viewport",
                 content: "width=device-width"
               })
@@ -234,12 +246,12 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           t
         );
       }
-      function l(e, t) {
+      function d(e, t) {
         return "string" === typeof t || "number" === typeof t
           ? e
-          : t.type === o.default.Fragment
+          : t.type === i.default.Fragment
           ? e.concat(
-              o.default.Children.toArray(t.props.children).reduce(function(
+              i.default.Children.toArray(t.props.children).reduce(function(
                 e,
                 t
               ) {
@@ -251,16 +263,16 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             )
           : e.concat(t);
       }
-      var p = ["name", "httpEquiv", "charSet", "itemProp"];
-      function d(e, t) {
+      var y = ["name", "httpEquiv", "charSet", "itemProp"];
+      function h(e, t) {
         return e
           .reduce(function(e, t) {
-            var n = o.default.Children.toArray(t.props.children);
+            var n = i.default.Children.toArray(t.props.children);
             return e.concat(n);
           }, [])
-          .reduce(l, [])
+          .reduce(d, [])
           .reverse()
-          .concat(f(t.inAmpMode))
+          .concat(p(t.inAmpMode))
           .filter(
             (function() {
               var e = new Set(),
@@ -285,15 +297,15 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                     t.has(o.type) ? (a = !1) : t.add(o.type);
                     break;
                   case "meta":
-                    for (var c = 0, s = p.length; c < s; c++) {
-                      var f = p[c];
+                    for (var c = 0, s = y.length; c < s; c++) {
+                      var f = y[c];
                       if (o.props.hasOwnProperty(f))
                         if ("charSet" === f) n.has(f) ? (a = !1) : n.add(f);
                         else {
                           var l = o.props[f],
-                            d = r[f] || new Set();
-                          ("name" === f && i) || !d.has(l)
-                            ? (d.add(l), (r[f] = d))
+                            p = r[f] || new Set();
+                          ("name" === f && i) || !p.has(l)
+                            ? (p.add(l), (r[f] = p))
                             : (a = !1);
                         }
                     }
@@ -303,28 +315,64 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             })()
           )
           .reverse()
-          .map(function(e, t) {
-            var n = e.key || t;
-            return o.default.cloneElement(e, { key: n });
+          .map(function(e, n) {
+            var a = e.key || n;
+            if (
+              !t.inAmpMode &&
+              "link" === e.type &&
+              e.props.href &&
+              ["https://fonts.googleapis.com/css"].some(function(t) {
+                return e.props.href.startsWith(t);
+              })
+            ) {
+              var u = (function(e) {
+                for (var t = 1; t < arguments.length; t++) {
+                  var n = null != arguments[t] ? arguments[t] : {};
+                  t % 2
+                    ? o(Object(n), !0).forEach(function(t) {
+                        r(e, t, n[t]);
+                      })
+                    : Object.getOwnPropertyDescriptors
+                    ? Object.defineProperties(
+                        e,
+                        Object.getOwnPropertyDescriptors(n)
+                      )
+                    : o(Object(n)).forEach(function(t) {
+                        Object.defineProperty(
+                          e,
+                          t,
+                          Object.getOwnPropertyDescriptor(n, t)
+                        );
+                      });
+                }
+                return e;
+              })({}, e.props || {});
+              return (
+                (u["data-href"] = u.href),
+                (u.href = void 0),
+                i.default.cloneElement(e, u)
+              );
+            }
+            return i.default.cloneElement(e, { key: a });
           });
       }
-      function y(e) {
+      function v(e) {
         var t = e.children,
-          n = (0, o.useContext)(i.AmpStateContext),
-          r = (0, o.useContext)(u.HeadManagerContext);
-        return o.default.createElement(
-          a.default,
+          n = (0, i.useContext)(c.AmpStateContext),
+          r = (0, i.useContext)(s.HeadManagerContext);
+        return i.default.createElement(
+          u.default,
           {
-            reduceComponentsToState: d,
+            reduceComponentsToState: h,
             headManager: r,
-            inAmpMode: (0, c.isInAmpMode)(n)
+            inAmpMode: (0, f.isInAmpMode)(n)
           },
           t
         );
       }
-      y.rewind = function() {};
-      var h = y;
-      t.default = h;
+      v.rewind = function() {};
+      var m = v;
+      t.default = m;
     },
     Bnag: function(e, t) {
       e.exports = function() {
Diff for index.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "KOpuZaWPzllD51qjnUVnS",
+        "buildId": "l7FuAXL07I2GNyqnNLxkG",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/KOpuZaWPzllD51qjnUVnS/_buildManifest.js"
+      src="/_next/static/l7FuAXL07I2GNyqnNLxkG/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/KOpuZaWPzllD51qjnUVnS/_ssgManifest.js"
+      src="/_next/static/l7FuAXL07I2GNyqnNLxkG/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "KOpuZaWPzllD51qjnUVnS",
+        "buildId": "l7FuAXL07I2GNyqnNLxkG",
         "isFallback": false,
         "gip": true
       }
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/KOpuZaWPzllD51qjnUVnS/_buildManifest.js"
+      src="/_next/static/l7FuAXL07I2GNyqnNLxkG/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/KOpuZaWPzllD51qjnUVnS/_ssgManifest.js"
+      src="/_next/static/l7FuAXL07I2GNyqnNLxkG/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "KOpuZaWPzllD51qjnUVnS",
+        "buildId": "l7FuAXL07I2GNyqnNLxkG",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/KOpuZaWPzllD51qjnUVnS/_buildManifest.js"
+      src="/_next/static/l7FuAXL07I2GNyqnNLxkG/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/KOpuZaWPzllD51qjnUVnS/_ssgManifest.js"
+      src="/_next/static/l7FuAXL07I2GNyqnNLxkG/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: 75cfad7

Copy link
Member

@ijjk ijjk left a comment

Choose a reason for hiding this comment

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

It looks like we currently error if we fail to download fonts, should this be a hard error or should we handle this gracefully and only show a warning?

Screen Shot 2021-03-16 at 6 46 19 PM

If this should still be a hard error we should capture this and show a friendly error saying that we failed to download the fonts during the font optimization step of the build.

result += await getFontForUA(url, IE_UA)
result += await getFontForUA(url, CHROME_UA)
} catch (e) {
console.warn(
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@ijjk Is this the right way to output a warning message ?

Copy link
Member

Choose a reason for hiding this comment

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

We have a log util in build/output that can be used here, example usage here

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done! Please check

@ijjk
Copy link
Member

ijjk commented Apr 1, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 11.4s 11.4s -14ms
nodeModulesSize 45.9 MB 45.9 MB ⚠️ +410 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 1.963 2.348 ⚠️ +0.38
/ avg req/sec 1273.62 1064.67 ⚠️ -208.95
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.278 1.215 -0.06
/error-in-render avg req/sec 1956.21 2058.37 +102.16
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..7edd.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.12 kB 7.12 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.2 kB 60.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-8fbabfc..6440.js gzip 1.28 kB 1.28 kB
_error-af59f..582f.js gzip 3.46 kB 3.71 kB ⚠️ +255 B
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-c31053f..c329.js gzip 1.64 kB 1.64 kB
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
Overall change 8.64 kB 8.89 kB ⚠️ +255 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 370 B 371 B ⚠️ +1 B
Overall change 370 B 371 B ⚠️ +1 B
Rendered Page Sizes
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 613 B 613 B
link.html gzip 621 B 621 B
withRouter.html gzip 608 B 608 B
Overall change 1.84 kB 1.84 kB

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-b1738b6c9dd4aa373c84.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-6fc12bd74dc2417101e6.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-c75557f170c57b2c8979.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-27f75ad11120c5cdedd1.js"],
   "/hooks": [
Diff for _error-6fc12..2417101e6.js
@@ -540,8 +540,23 @@ Also adds support for deduplicated `key` properties
           .map(function(c, i) {
             var key = c.key || i;
 
-            if (false) {
-              var newProps;
+            if (true && !props.inAmpMode) {
+              if (
+                c.type === "link" &&
+                c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.
+                ["https://fonts.googleapis.com/css"].some(function(url) {
+                  return c.props["href"].startsWith(url);
+                })
+              ) {
+                var newProps = _objectSpread({}, c.props || {});
+
+                newProps["data-href"] = newProps["href"];
+                newProps["href"] = undefined;
+                return /*#__PURE__*/ _react["default"].cloneElement(
+                  c,
+                  newProps
+                );
+              }
             }
 
             return /*#__PURE__*/ _react["default"].cloneElement(c, {

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 13.4s 13.4s ⚠️ +31ms
nodeModulesSize 45.9 MB 45.9 MB ⚠️ +410 B
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..7edd.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.12 kB 7.12 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.2 kB 60.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-8fbabfc..6440.js gzip 1.28 kB 1.28 kB
_error-af59f..582f.js gzip 3.46 kB N/A N/A
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-c31053f..c329.js gzip 1.64 kB 1.64 kB
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
_error-d07ca..ef4d.js gzip N/A 3.71 kB N/A
Overall change 8.64 kB 8.89 kB ⚠️ +255 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 370 B 371 B ⚠️ +1 B
Overall change 370 B 371 B ⚠️ +1 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_error.js 1.36 MB 1.36 MB ⚠️ +1.45 kB
404.html 2.67 kB 2.67 kB
500.html 2.65 kB 2.65 kB
amp.amp.html 10.7 kB 10.7 kB
amp.html 1.86 kB 1.86 kB
hooks.html 1.92 kB 1.92 kB
index.js 1.36 MB 1.37 MB ⚠️ +1.45 kB
link.js 1.42 MB 1.42 MB ⚠️ +1.45 kB
routerDirect.js 1.41 MB 1.41 MB ⚠️ +1.45 kB
withRouter.js 1.41 MB 1.41 MB ⚠️ +1.45 kB
Overall change 6.99 MB 7 MB ⚠️ +7.26 kB

Webpack 5 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 13.8s 13.6s -173ms
nodeModulesSize 45.9 MB 45.9 MB ⚠️ +410 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 2.01 2.4 ⚠️ +0.39
/ avg req/sec 1243.53 1041.48 ⚠️ -202.05
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.246 1.241 0
/error-in-render avg req/sec 2007.2 2014.03 +6.83
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
597-e27c5352..db8c.js gzip 13.3 kB 13.3 kB
778-84582755..aa9b.js gzip 7.05 kB 7.05 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 151 B 151 B
webpack-HASH.js gzip 993 B 993 B
Overall change 60.8 kB 60.8 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-5cc66b2..6f03.js gzip 1.3 kB 1.3 kB
_error-b58c1..9b8e.js gzip 3.4 kB 3.68 kB ⚠️ +275 B
amp-89a5460c..567f.js gzip 558 B 558 B
hooks-8c2e74..be37.js gzip 924 B 924 B
index-fec729..83b2.js gzip 243 B 243 B
link-dd34d9b..0ade.js gzip 1.66 kB 1.66 kB
routerDirect..5759.js gzip 336 B 336 B
withRouter-1..98bf.js gzip 334 B 334 B
Overall change 8.76 kB 9.03 kB ⚠️ +275 B
Client Build Manifests
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 349 B 349 B
Overall change 349 B 349 B
Rendered Page Sizes
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 610 B 610 B
link.html gzip 615 B 615 B
withRouter.html gzip 605 B 605 B
Overall change 1.83 kB 1.83 kB

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-ac435c89e537f4e6ecf2.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-af59f52346097a29582f.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-d07ca8afdf6c45b9ef4d.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-9716187d43cb5ac80aa8.js"],
   "/hooks": [
Diff for _error-af59f..97a29582f.js
@@ -185,14 +185,26 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
     },
     "8Kt/": function(e, t, n) {
       "use strict";
-      n("lSNA");
-      (t.__esModule = !0), (t.defaultHead = f), (t.default = void 0);
-      var r,
-        o = (function(e) {
+      var r = n("lSNA");
+      function o(e, t) {
+        var n = Object.keys(e);
+        if (Object.getOwnPropertySymbols) {
+          var r = Object.getOwnPropertySymbols(e);
+          t &&
+            (r = r.filter(function(t) {
+              return Object.getOwnPropertyDescriptor(e, t).enumerable;
+            })),
+            n.push.apply(n, r);
+        }
+        return n;
+      }
+      (t.__esModule = !0), (t.defaultHead = p), (t.default = void 0);
+      var a,
+        i = (function(e) {
           if (e && e.__esModule) return e;
           if (null === e || ("object" !== typeof e && "function" !== typeof e))
             return { default: e };
-          var t = s();
+          var t = l();
           if (t && t.has(e)) return t.get(e);
           var n = {},
             r = Object.defineProperty && Object.getOwnPropertyDescriptor;
@@ -206,27 +218,27 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           (n.default = e), t && t.set(e, n);
           return n;
         })(n("q1tI")),
-        a = (r = n("Xuae")) && r.__esModule ? r : { default: r },
-        i = n("lwAK"),
-        u = n("FYa8"),
-        c = n("/0+H");
-      function s() {
+        u = (a = n("Xuae")) && a.__esModule ? a : { default: a },
+        c = n("lwAK"),
+        s = n("FYa8"),
+        f = n("/0+H");
+      function l() {
         if ("function" !== typeof WeakMap) return null;
         var e = new WeakMap();
         return (
-          (s = function() {
+          (l = function() {
             return e;
           }),
           e
         );
       }
-      function f() {
+      function p() {
         var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
-          t = [o.default.createElement("meta", { charSet: "utf-8" })];
+          t = [i.default.createElement("meta", { charSet: "utf-8" })];
         return (
           e ||
             t.push(
-              o.default.createElement("meta", {
+              i.default.createElement("meta", {
                 name: "viewport",
                 content: "width=device-width"
               })
@@ -234,12 +246,12 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           t
         );
       }
-      function l(e, t) {
+      function d(e, t) {
         return "string" === typeof t || "number" === typeof t
           ? e
-          : t.type === o.default.Fragment
+          : t.type === i.default.Fragment
           ? e.concat(
-              o.default.Children.toArray(t.props.children).reduce(function(
+              i.default.Children.toArray(t.props.children).reduce(function(
                 e,
                 t
               ) {
@@ -251,16 +263,16 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             )
           : e.concat(t);
       }
-      var p = ["name", "httpEquiv", "charSet", "itemProp"];
-      function d(e, t) {
+      var y = ["name", "httpEquiv", "charSet", "itemProp"];
+      function h(e, t) {
         return e
           .reduce(function(e, t) {
-            var n = o.default.Children.toArray(t.props.children);
+            var n = i.default.Children.toArray(t.props.children);
             return e.concat(n);
           }, [])
-          .reduce(l, [])
+          .reduce(d, [])
           .reverse()
-          .concat(f(t.inAmpMode))
+          .concat(p(t.inAmpMode))
           .filter(
             (function() {
               var e = new Set(),
@@ -285,15 +297,15 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                     t.has(o.type) ? (a = !1) : t.add(o.type);
                     break;
                   case "meta":
-                    for (var c = 0, s = p.length; c < s; c++) {
-                      var f = p[c];
+                    for (var c = 0, s = y.length; c < s; c++) {
+                      var f = y[c];
                       if (o.props.hasOwnProperty(f))
                         if ("charSet" === f) n.has(f) ? (a = !1) : n.add(f);
                         else {
                           var l = o.props[f],
-                            d = r[f] || new Set();
-                          ("name" === f && i) || !d.has(l)
-                            ? (d.add(l), (r[f] = d))
+                            p = r[f] || new Set();
+                          ("name" === f && i) || !p.has(l)
+                            ? (p.add(l), (r[f] = p))
                             : (a = !1);
                         }
                     }
@@ -303,28 +315,64 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             })()
           )
           .reverse()
-          .map(function(e, t) {
-            var n = e.key || t;
-            return o.default.cloneElement(e, { key: n });
+          .map(function(e, n) {
+            var a = e.key || n;
+            if (
+              !t.inAmpMode &&
+              "link" === e.type &&
+              e.props.href &&
+              ["https://fonts.googleapis.com/css"].some(function(t) {
+                return e.props.href.startsWith(t);
+              })
+            ) {
+              var u = (function(e) {
+                for (var t = 1; t < arguments.length; t++) {
+                  var n = null != arguments[t] ? arguments[t] : {};
+                  t % 2
+                    ? o(Object(n), !0).forEach(function(t) {
+                        r(e, t, n[t]);
+                      })
+                    : Object.getOwnPropertyDescriptors
+                    ? Object.defineProperties(
+                        e,
+                        Object.getOwnPropertyDescriptors(n)
+                      )
+                    : o(Object(n)).forEach(function(t) {
+                        Object.defineProperty(
+                          e,
+                          t,
+                          Object.getOwnPropertyDescriptor(n, t)
+                        );
+                      });
+                }
+                return e;
+              })({}, e.props || {});
+              return (
+                (u["data-href"] = u.href),
+                (u.href = void 0),
+                i.default.cloneElement(e, u)
+              );
+            }
+            return i.default.cloneElement(e, { key: a });
           });
       }
-      function y(e) {
+      function v(e) {
         var t = e.children,
-          n = (0, o.useContext)(i.AmpStateContext),
-          r = (0, o.useContext)(u.HeadManagerContext);
-        return o.default.createElement(
-          a.default,
+          n = (0, i.useContext)(c.AmpStateContext),
+          r = (0, i.useContext)(s.HeadManagerContext);
+        return i.default.createElement(
+          u.default,
           {
-            reduceComponentsToState: d,
+            reduceComponentsToState: h,
             headManager: r,
-            inAmpMode: (0, c.isInAmpMode)(n)
+            inAmpMode: (0, f.isInAmpMode)(n)
           },
           t
         );
       }
-      y.rewind = function() {};
-      var h = y;
-      t.default = h;
+      v.rewind = function() {};
+      var m = v;
+      t.default = m;
     },
     Bnag: function(e, t) {
       e.exports = function() {
Diff for index.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "BG7YsJmkNtgIQxzKtLAqn",
+        "buildId": "EJ44ysIds3_hRS0mG_r1I",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/BG7YsJmkNtgIQxzKtLAqn/_buildManifest.js"
+      src="/_next/static/EJ44ysIds3_hRS0mG_r1I/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/BG7YsJmkNtgIQxzKtLAqn/_ssgManifest.js"
+      src="/_next/static/EJ44ysIds3_hRS0mG_r1I/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "BG7YsJmkNtgIQxzKtLAqn",
+        "buildId": "EJ44ysIds3_hRS0mG_r1I",
         "isFallback": false,
         "gip": true
       }
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/BG7YsJmkNtgIQxzKtLAqn/_buildManifest.js"
+      src="/_next/static/EJ44ysIds3_hRS0mG_r1I/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/BG7YsJmkNtgIQxzKtLAqn/_ssgManifest.js"
+      src="/_next/static/EJ44ysIds3_hRS0mG_r1I/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "BG7YsJmkNtgIQxzKtLAqn",
+        "buildId": "EJ44ysIds3_hRS0mG_r1I",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/BG7YsJmkNtgIQxzKtLAqn/_buildManifest.js"
+      src="/_next/static/EJ44ysIds3_hRS0mG_r1I/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/BG7YsJmkNtgIQxzKtLAqn/_ssgManifest.js"
+      src="/_next/static/EJ44ysIds3_hRS0mG_r1I/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: 0afba62

@ijjk
Copy link
Member

ijjk commented Apr 1, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 12.1s 12.2s ⚠️ +177ms
nodeModulesSize 45.9 MB 45.9 MB ⚠️ +1.35 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 2.217 2.565 ⚠️ +0.35
/ avg req/sec 1127.7 974.51 ⚠️ -153.19
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.507 1.505 0
/error-in-render avg req/sec 1658.91 1661.35 +2.44
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..7edd.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.12 kB 7.12 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.2 kB 60.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-8fbabfc..6440.js gzip 1.28 kB 1.28 kB
_error-af59f..582f.js gzip 3.46 kB 3.71 kB ⚠️ +255 B
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-c31053f..c329.js gzip 1.64 kB 1.64 kB
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
Overall change 8.64 kB 8.89 kB ⚠️ +255 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 370 B 371 B ⚠️ +1 B
Overall change 370 B 371 B ⚠️ +1 B
Rendered Page Sizes
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 613 B 613 B
link.html gzip 621 B 621 B
withRouter.html gzip 608 B 608 B
Overall change 1.84 kB 1.84 kB

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-b1738b6c9dd4aa373c84.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-6fc12bd74dc2417101e6.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-c75557f170c57b2c8979.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-27f75ad11120c5cdedd1.js"],
   "/hooks": [
Diff for _error-6fc12..2417101e6.js
@@ -540,8 +540,23 @@ Also adds support for deduplicated `key` properties
           .map(function(c, i) {
             var key = c.key || i;
 
-            if (false) {
-              var newProps;
+            if (true && !props.inAmpMode) {
+              if (
+                c.type === "link" &&
+                c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.
+                ["https://fonts.googleapis.com/css"].some(function(url) {
+                  return c.props["href"].startsWith(url);
+                })
+              ) {
+                var newProps = _objectSpread({}, c.props || {});
+
+                newProps["data-href"] = newProps["href"];
+                newProps["href"] = undefined;
+                return /*#__PURE__*/ _react["default"].cloneElement(
+                  c,
+                  newProps
+                );
+              }
             }
 
             return /*#__PURE__*/ _react["default"].cloneElement(c, {

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 14.3s 14.3s -34ms
nodeModulesSize 45.9 MB 45.9 MB ⚠️ +1.35 kB
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..7edd.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.12 kB 7.12 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.2 kB 60.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-8fbabfc..6440.js gzip 1.28 kB 1.28 kB
_error-af59f..582f.js gzip 3.46 kB N/A N/A
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-c31053f..c329.js gzip 1.64 kB 1.64 kB
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
_error-d07ca..ef4d.js gzip N/A 3.71 kB N/A
Overall change 8.64 kB 8.89 kB ⚠️ +255 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 370 B 371 B ⚠️ +1 B
Overall change 370 B 371 B ⚠️ +1 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_error.js 1.36 MB 1.37 MB ⚠️ +2.33 kB
404.html 2.67 kB 2.67 kB
500.html 2.65 kB 2.65 kB
amp.amp.html 10.7 kB 10.7 kB
amp.html 1.86 kB 1.86 kB
hooks.html 1.92 kB 1.92 kB
index.js 1.36 MB 1.37 MB ⚠️ +2.33 kB
link.js 1.42 MB 1.42 MB ⚠️ +2.33 kB
routerDirect.js 1.41 MB 1.42 MB ⚠️ +2.33 kB
withRouter.js 1.41 MB 1.42 MB ⚠️ +2.33 kB
Overall change 6.99 MB 7 MB ⚠️ +11.7 kB

Webpack 5 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 14.7s 14.8s ⚠️ +75ms
nodeModulesSize 45.9 MB 45.9 MB ⚠️ +1.35 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 2.233 2.673 ⚠️ +0.44
/ avg req/sec 1119.58 935.34 ⚠️ -184.24
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.478 1.532 ⚠️ +0.05
/error-in-render avg req/sec 1690.93 1631.79 ⚠️ -59.14
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
597-e27c5352..db8c.js gzip 13.3 kB 13.3 kB
778-84582755..aa9b.js gzip 7.05 kB 7.05 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 151 B 151 B
webpack-HASH.js gzip 993 B 993 B
Overall change 60.8 kB 60.8 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-5cc66b2..6f03.js gzip 1.3 kB 1.3 kB
_error-b58c1..9b8e.js gzip 3.4 kB 3.68 kB ⚠️ +275 B
amp-89a5460c..567f.js gzip 558 B 558 B
hooks-8c2e74..be37.js gzip 924 B 924 B
index-fec729..83b2.js gzip 243 B 243 B
link-dd34d9b..0ade.js gzip 1.66 kB 1.66 kB
routerDirect..5759.js gzip 336 B 336 B
withRouter-1..98bf.js gzip 334 B 334 B
Overall change 8.76 kB 9.03 kB ⚠️ +275 B
Client Build Manifests
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 349 B 349 B
Overall change 349 B 349 B
Rendered Page Sizes
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 610 B 610 B
link.html gzip 615 B 615 B
withRouter.html gzip 605 B 605 B
Overall change 1.83 kB 1.83 kB

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-ac435c89e537f4e6ecf2.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-af59f52346097a29582f.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-d07ca8afdf6c45b9ef4d.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-9716187d43cb5ac80aa8.js"],
   "/hooks": [
Diff for _error-af59f..97a29582f.js
@@ -185,14 +185,26 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
     },
     "8Kt/": function(e, t, n) {
       "use strict";
-      n("lSNA");
-      (t.__esModule = !0), (t.defaultHead = f), (t.default = void 0);
-      var r,
-        o = (function(e) {
+      var r = n("lSNA");
+      function o(e, t) {
+        var n = Object.keys(e);
+        if (Object.getOwnPropertySymbols) {
+          var r = Object.getOwnPropertySymbols(e);
+          t &&
+            (r = r.filter(function(t) {
+              return Object.getOwnPropertyDescriptor(e, t).enumerable;
+            })),
+            n.push.apply(n, r);
+        }
+        return n;
+      }
+      (t.__esModule = !0), (t.defaultHead = p), (t.default = void 0);
+      var a,
+        i = (function(e) {
           if (e && e.__esModule) return e;
           if (null === e || ("object" !== typeof e && "function" !== typeof e))
             return { default: e };
-          var t = s();
+          var t = l();
           if (t && t.has(e)) return t.get(e);
           var n = {},
             r = Object.defineProperty && Object.getOwnPropertyDescriptor;
@@ -206,27 +218,27 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           (n.default = e), t && t.set(e, n);
           return n;
         })(n("q1tI")),
-        a = (r = n("Xuae")) && r.__esModule ? r : { default: r },
-        i = n("lwAK"),
-        u = n("FYa8"),
-        c = n("/0+H");
-      function s() {
+        u = (a = n("Xuae")) && a.__esModule ? a : { default: a },
+        c = n("lwAK"),
+        s = n("FYa8"),
+        f = n("/0+H");
+      function l() {
         if ("function" !== typeof WeakMap) return null;
         var e = new WeakMap();
         return (
-          (s = function() {
+          (l = function() {
             return e;
           }),
           e
         );
       }
-      function f() {
+      function p() {
         var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
-          t = [o.default.createElement("meta", { charSet: "utf-8" })];
+          t = [i.default.createElement("meta", { charSet: "utf-8" })];
         return (
           e ||
             t.push(
-              o.default.createElement("meta", {
+              i.default.createElement("meta", {
                 name: "viewport",
                 content: "width=device-width"
               })
@@ -234,12 +246,12 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           t
         );
       }
-      function l(e, t) {
+      function d(e, t) {
         return "string" === typeof t || "number" === typeof t
           ? e
-          : t.type === o.default.Fragment
+          : t.type === i.default.Fragment
           ? e.concat(
-              o.default.Children.toArray(t.props.children).reduce(function(
+              i.default.Children.toArray(t.props.children).reduce(function(
                 e,
                 t
               ) {
@@ -251,16 +263,16 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             )
           : e.concat(t);
       }
-      var p = ["name", "httpEquiv", "charSet", "itemProp"];
-      function d(e, t) {
+      var y = ["name", "httpEquiv", "charSet", "itemProp"];
+      function h(e, t) {
         return e
           .reduce(function(e, t) {
-            var n = o.default.Children.toArray(t.props.children);
+            var n = i.default.Children.toArray(t.props.children);
             return e.concat(n);
           }, [])
-          .reduce(l, [])
+          .reduce(d, [])
           .reverse()
-          .concat(f(t.inAmpMode))
+          .concat(p(t.inAmpMode))
           .filter(
             (function() {
               var e = new Set(),
@@ -285,15 +297,15 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                     t.has(o.type) ? (a = !1) : t.add(o.type);
                     break;
                   case "meta":
-                    for (var c = 0, s = p.length; c < s; c++) {
-                      var f = p[c];
+                    for (var c = 0, s = y.length; c < s; c++) {
+                      var f = y[c];
                       if (o.props.hasOwnProperty(f))
                         if ("charSet" === f) n.has(f) ? (a = !1) : n.add(f);
                         else {
                           var l = o.props[f],
-                            d = r[f] || new Set();
-                          ("name" === f && i) || !d.has(l)
-                            ? (d.add(l), (r[f] = d))
+                            p = r[f] || new Set();
+                          ("name" === f && i) || !p.has(l)
+                            ? (p.add(l), (r[f] = p))
                             : (a = !1);
                         }
                     }
@@ -303,28 +315,64 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             })()
           )
           .reverse()
-          .map(function(e, t) {
-            var n = e.key || t;
-            return o.default.cloneElement(e, { key: n });
+          .map(function(e, n) {
+            var a = e.key || n;
+            if (
+              !t.inAmpMode &&
+              "link" === e.type &&
+              e.props.href &&
+              ["https://fonts.googleapis.com/css"].some(function(t) {
+                return e.props.href.startsWith(t);
+              })
+            ) {
+              var u = (function(e) {
+                for (var t = 1; t < arguments.length; t++) {
+                  var n = null != arguments[t] ? arguments[t] : {};
+                  t % 2
+                    ? o(Object(n), !0).forEach(function(t) {
+                        r(e, t, n[t]);
+                      })
+                    : Object.getOwnPropertyDescriptors
+                    ? Object.defineProperties(
+                        e,
+                        Object.getOwnPropertyDescriptors(n)
+                      )
+                    : o(Object(n)).forEach(function(t) {
+                        Object.defineProperty(
+                          e,
+                          t,
+                          Object.getOwnPropertyDescriptor(n, t)
+                        );
+                      });
+                }
+                return e;
+              })({}, e.props || {});
+              return (
+                (u["data-href"] = u.href),
+                (u.href = void 0),
+                i.default.cloneElement(e, u)
+              );
+            }
+            return i.default.cloneElement(e, { key: a });
           });
       }
-      function y(e) {
+      function v(e) {
         var t = e.children,
-          n = (0, o.useContext)(i.AmpStateContext),
-          r = (0, o.useContext)(u.HeadManagerContext);
-        return o.default.createElement(
-          a.default,
+          n = (0, i.useContext)(c.AmpStateContext),
+          r = (0, i.useContext)(s.HeadManagerContext);
+        return i.default.createElement(
+          u.default,
           {
-            reduceComponentsToState: d,
+            reduceComponentsToState: h,
             headManager: r,
-            inAmpMode: (0, c.isInAmpMode)(n)
+            inAmpMode: (0, f.isInAmpMode)(n)
           },
           t
         );
       }
-      y.rewind = function() {};
-      var h = y;
-      t.default = h;
+      v.rewind = function() {};
+      var m = v;
+      t.default = m;
     },
     Bnag: function(e, t) {
       e.exports = function() {
Diff for index.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "zEr7abfgxi_G1tSbI5OZV",
+        "buildId": "D6VOn8sbfidzHNrHqswwc",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/zEr7abfgxi_G1tSbI5OZV/_buildManifest.js"
+      src="/_next/static/D6VOn8sbfidzHNrHqswwc/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/zEr7abfgxi_G1tSbI5OZV/_ssgManifest.js"
+      src="/_next/static/D6VOn8sbfidzHNrHqswwc/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "zEr7abfgxi_G1tSbI5OZV",
+        "buildId": "D6VOn8sbfidzHNrHqswwc",
         "isFallback": false,
         "gip": true
       }
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/zEr7abfgxi_G1tSbI5OZV/_buildManifest.js"
+      src="/_next/static/D6VOn8sbfidzHNrHqswwc/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/zEr7abfgxi_G1tSbI5OZV/_ssgManifest.js"
+      src="/_next/static/D6VOn8sbfidzHNrHqswwc/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "zEr7abfgxi_G1tSbI5OZV",
+        "buildId": "D6VOn8sbfidzHNrHqswwc",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/zEr7abfgxi_G1tSbI5OZV/_buildManifest.js"
+      src="/_next/static/D6VOn8sbfidzHNrHqswwc/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/zEr7abfgxi_G1tSbI5OZV/_ssgManifest.js"
+      src="/_next/static/D6VOn8sbfidzHNrHqswwc/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: cf771cd

@ijjk
Copy link
Member

ijjk commented Apr 5, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 12.5s 12.5s ⚠️ +57ms
nodeModulesSize 45.9 MB 45.9 MB ⚠️ +1.35 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 2.27 2.658 ⚠️ +0.39
/ avg req/sec 1101.14 940.5 ⚠️ -160.64
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.544 1.552 ⚠️ +0.01
/error-in-render avg req/sec 1618.91 1610.35 ⚠️ -8.56
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..7edd.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.12 kB 7.12 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.2 kB 60.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-8fbabfc..6440.js gzip 1.28 kB 1.28 kB
_error-af59f..582f.js gzip 3.46 kB 3.71 kB ⚠️ +255 B
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-c31053f..c329.js gzip 1.64 kB 1.64 kB
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
Overall change 8.64 kB 8.89 kB ⚠️ +255 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 370 B 371 B ⚠️ +1 B
Overall change 370 B 371 B ⚠️ +1 B
Rendered Page Sizes
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 615 B 615 B
link.html gzip 621 B 621 B
withRouter.html gzip 608 B 608 B
Overall change 1.84 kB 1.84 kB

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-b1738b6c9dd4aa373c84.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-6fc12bd74dc2417101e6.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-c75557f170c57b2c8979.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-27f75ad11120c5cdedd1.js"],
   "/hooks": [
Diff for _error-6fc12..2417101e6.js
@@ -540,8 +540,23 @@ Also adds support for deduplicated `key` properties
           .map(function(c, i) {
             var key = c.key || i;
 
-            if (false) {
-              var newProps;
+            if (true && !props.inAmpMode) {
+              if (
+                c.type === "link" &&
+                c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.
+                ["https://fonts.googleapis.com/css"].some(function(url) {
+                  return c.props["href"].startsWith(url);
+                })
+              ) {
+                var newProps = _objectSpread({}, c.props || {});
+
+                newProps["data-href"] = newProps["href"];
+                newProps["href"] = undefined;
+                return /*#__PURE__*/ _react["default"].cloneElement(
+                  c,
+                  newProps
+                );
+              }
             }
 
             return /*#__PURE__*/ _react["default"].cloneElement(c, {

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 14.7s 14.7s -68ms
nodeModulesSize 45.9 MB 45.9 MB ⚠️ +1.35 kB
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
677f882d2ed8..7edd.js gzip 13.4 kB 13.4 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.12 kB 7.12 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.2 kB 60.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-8fbabfc..6440.js gzip 1.28 kB 1.28 kB
_error-af59f..582f.js gzip 3.46 kB N/A N/A
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-c31053f..c329.js gzip 1.64 kB 1.64 kB
routerDirect..dc9d.js gzip 303 B 303 B
withRouter-6..0e02.js gzip 302 B 302 B
_error-d07ca..ef4d.js gzip N/A 3.71 kB N/A
Overall change 8.64 kB 8.89 kB ⚠️ +255 B
Client Build Manifests Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 370 B 371 B ⚠️ +1 B
Overall change 370 B 371 B ⚠️ +1 B
Serverless bundles Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_error.js 1.36 MB 1.37 MB ⚠️ +2.33 kB
404.html 2.67 kB 2.67 kB
500.html 2.65 kB 2.65 kB
amp.amp.html 10.7 kB 10.7 kB
amp.html 1.86 kB 1.86 kB
hooks.html 1.92 kB 1.92 kB
index.js 1.36 MB 1.37 MB ⚠️ +2.33 kB
link.js 1.42 MB 1.42 MB ⚠️ +2.33 kB
routerDirect.js 1.41 MB 1.42 MB ⚠️ +2.33 kB
withRouter.js 1.41 MB 1.42 MB ⚠️ +2.33 kB
Overall change 6.99 MB 7 MB ⚠️ +11.7 kB

Webpack 5 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
buildDuration 14.9s 15s ⚠️ +113ms
nodeModulesSize 45.9 MB 45.9 MB ⚠️ +1.35 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
/ failed reqs 0 0
/ total time (seconds) 2.279 2.699 ⚠️ +0.42
/ avg req/sec 1097.05 926.25 ⚠️ -170.8
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.569 1.572 0
/error-in-render avg req/sec 1592.94 1590.17 ⚠️ -2.77
Client Bundles (main, webpack, commons)
vercel/next.js canary janicklas-ralph/next.js font Change
597-e27c5352..db8c.js gzip 13.3 kB 13.3 kB
778-a8e7432f..6391.js gzip 7.05 kB 7.05 kB
framework.HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 151 B 151 B
webpack-HASH.js gzip 993 B 993 B
Overall change 60.8 kB 60.8 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary janicklas-ralph/next.js font Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages Overall increase ⚠️
vercel/next.js canary janicklas-ralph/next.js font Change
_app-5cc66b2..6f03.js gzip 1.3 kB 1.3 kB
_error-b58c1..9b8e.js gzip 3.4 kB 3.68 kB ⚠️ +275 B
amp-89a5460c..567f.js gzip 558 B 558 B
hooks-8c2e74..be37.js gzip 924 B 924 B
index-fec729..83b2.js gzip 243 B 243 B
link-dd34d9b..0ade.js gzip 1.66 kB 1.66 kB
routerDirect..5759.js gzip 336 B 336 B
withRouter-1..98bf.js gzip 334 B 334 B
Overall change 8.76 kB 9.03 kB ⚠️ +275 B
Client Build Manifests
vercel/next.js canary janicklas-ralph/next.js font Change
_buildManifest.js gzip 349 B 349 B
Overall change 349 B 349 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary janicklas-ralph/next.js font Change
index.html gzip 610 B 609 B -1 B
link.html gzip 615 B 615 B
withRouter.html gzip 605 B 605 B
Overall change 1.83 kB 1.83 kB -1 B

Diffs

Diff for _buildManifest.js
@@ -2,7 +2,7 @@ self.__BUILD_MANIFEST = {
   __rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
   "/": ["static\u002Fchunks\u002Fpages\u002Findex-ac435c89e537f4e6ecf2.js"],
   "/_error": [
-    "static\u002Fchunks\u002Fpages\u002F_error-af59f52346097a29582f.js"
+    "static\u002Fchunks\u002Fpages\u002F_error-d07ca8afdf6c45b9ef4d.js"
   ],
   "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-9716187d43cb5ac80aa8.js"],
   "/hooks": [
Diff for _error-af59f..97a29582f.js
@@ -185,14 +185,26 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
     },
     "8Kt/": function(e, t, n) {
       "use strict";
-      n("lSNA");
-      (t.__esModule = !0), (t.defaultHead = f), (t.default = void 0);
-      var r,
-        o = (function(e) {
+      var r = n("lSNA");
+      function o(e, t) {
+        var n = Object.keys(e);
+        if (Object.getOwnPropertySymbols) {
+          var r = Object.getOwnPropertySymbols(e);
+          t &&
+            (r = r.filter(function(t) {
+              return Object.getOwnPropertyDescriptor(e, t).enumerable;
+            })),
+            n.push.apply(n, r);
+        }
+        return n;
+      }
+      (t.__esModule = !0), (t.defaultHead = p), (t.default = void 0);
+      var a,
+        i = (function(e) {
           if (e && e.__esModule) return e;
           if (null === e || ("object" !== typeof e && "function" !== typeof e))
             return { default: e };
-          var t = s();
+          var t = l();
           if (t && t.has(e)) return t.get(e);
           var n = {},
             r = Object.defineProperty && Object.getOwnPropertyDescriptor;
@@ -206,27 +218,27 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           (n.default = e), t && t.set(e, n);
           return n;
         })(n("q1tI")),
-        a = (r = n("Xuae")) && r.__esModule ? r : { default: r },
-        i = n("lwAK"),
-        u = n("FYa8"),
-        c = n("/0+H");
-      function s() {
+        u = (a = n("Xuae")) && a.__esModule ? a : { default: a },
+        c = n("lwAK"),
+        s = n("FYa8"),
+        f = n("/0+H");
+      function l() {
         if ("function" !== typeof WeakMap) return null;
         var e = new WeakMap();
         return (
-          (s = function() {
+          (l = function() {
             return e;
           }),
           e
         );
       }
-      function f() {
+      function p() {
         var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
-          t = [o.default.createElement("meta", { charSet: "utf-8" })];
+          t = [i.default.createElement("meta", { charSet: "utf-8" })];
         return (
           e ||
             t.push(
-              o.default.createElement("meta", {
+              i.default.createElement("meta", {
                 name: "viewport",
                 content: "width=device-width"
               })
@@ -234,12 +246,12 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
           t
         );
       }
-      function l(e, t) {
+      function d(e, t) {
         return "string" === typeof t || "number" === typeof t
           ? e
-          : t.type === o.default.Fragment
+          : t.type === i.default.Fragment
           ? e.concat(
-              o.default.Children.toArray(t.props.children).reduce(function(
+              i.default.Children.toArray(t.props.children).reduce(function(
                 e,
                 t
               ) {
@@ -251,16 +263,16 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             )
           : e.concat(t);
       }
-      var p = ["name", "httpEquiv", "charSet", "itemProp"];
-      function d(e, t) {
+      var y = ["name", "httpEquiv", "charSet", "itemProp"];
+      function h(e, t) {
         return e
           .reduce(function(e, t) {
-            var n = o.default.Children.toArray(t.props.children);
+            var n = i.default.Children.toArray(t.props.children);
             return e.concat(n);
           }, [])
-          .reduce(l, [])
+          .reduce(d, [])
           .reverse()
-          .concat(f(t.inAmpMode))
+          .concat(p(t.inAmpMode))
           .filter(
             (function() {
               var e = new Set(),
@@ -285,15 +297,15 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
                     t.has(o.type) ? (a = !1) : t.add(o.type);
                     break;
                   case "meta":
-                    for (var c = 0, s = p.length; c < s; c++) {
-                      var f = p[c];
+                    for (var c = 0, s = y.length; c < s; c++) {
+                      var f = y[c];
                       if (o.props.hasOwnProperty(f))
                         if ("charSet" === f) n.has(f) ? (a = !1) : n.add(f);
                         else {
                           var l = o.props[f],
-                            d = r[f] || new Set();
-                          ("name" === f && i) || !d.has(l)
-                            ? (d.add(l), (r[f] = d))
+                            p = r[f] || new Set();
+                          ("name" === f && i) || !p.has(l)
+                            ? (p.add(l), (r[f] = p))
                             : (a = !1);
                         }
                     }
@@ -303,28 +315,64 @@ _N_E = (window.webpackJsonp_N_E = window.webpackJsonp_N_E || []).push([
             })()
           )
           .reverse()
-          .map(function(e, t) {
-            var n = e.key || t;
-            return o.default.cloneElement(e, { key: n });
+          .map(function(e, n) {
+            var a = e.key || n;
+            if (
+              !t.inAmpMode &&
+              "link" === e.type &&
+              e.props.href &&
+              ["https://fonts.googleapis.com/css"].some(function(t) {
+                return e.props.href.startsWith(t);
+              })
+            ) {
+              var u = (function(e) {
+                for (var t = 1; t < arguments.length; t++) {
+                  var n = null != arguments[t] ? arguments[t] : {};
+                  t % 2
+                    ? o(Object(n), !0).forEach(function(t) {
+                        r(e, t, n[t]);
+                      })
+                    : Object.getOwnPropertyDescriptors
+                    ? Object.defineProperties(
+                        e,
+                        Object.getOwnPropertyDescriptors(n)
+                      )
+                    : o(Object(n)).forEach(function(t) {
+                        Object.defineProperty(
+                          e,
+                          t,
+                          Object.getOwnPropertyDescriptor(n, t)
+                        );
+                      });
+                }
+                return e;
+              })({}, e.props || {});
+              return (
+                (u["data-href"] = u.href),
+                (u.href = void 0),
+                i.default.cloneElement(e, u)
+              );
+            }
+            return i.default.cloneElement(e, { key: a });
           });
       }
-      function y(e) {
+      function v(e) {
         var t = e.children,
-          n = (0, o.useContext)(i.AmpStateContext),
-          r = (0, o.useContext)(u.HeadManagerContext);
-        return o.default.createElement(
-          a.default,
+          n = (0, i.useContext)(c.AmpStateContext),
+          r = (0, i.useContext)(s.HeadManagerContext);
+        return i.default.createElement(
+          u.default,
           {
-            reduceComponentsToState: d,
+            reduceComponentsToState: h,
             headManager: r,
-            inAmpMode: (0, c.isInAmpMode)(n)
+            inAmpMode: (0, f.isInAmpMode)(n)
           },
           t
         );
       }
-      y.rewind = function() {};
-      var h = y;
-      t.default = h;
+      v.rewind = function() {};
+      var m = v;
+      t.default = m;
     },
     Bnag: function(e, t) {
       e.exports = function() {
Diff for index.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/",
         "query": {},
-        "buildId": "FJmKbQmXwfpAFEg-PQ3ds",
+        "buildId": "YGosTzK1dWaOE2ZRDdd7d",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/FJmKbQmXwfpAFEg-PQ3ds/_buildManifest.js"
+      src="/_next/static/YGosTzK1dWaOE2ZRDdd7d/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/FJmKbQmXwfpAFEg-PQ3ds/_ssgManifest.js"
+      src="/_next/static/YGosTzK1dWaOE2ZRDdd7d/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for link.html
@@ -48,7 +48,7 @@
         "props": { "pageProps": {} },
         "page": "/link",
         "query": {},
-        "buildId": "FJmKbQmXwfpAFEg-PQ3ds",
+        "buildId": "YGosTzK1dWaOE2ZRDdd7d",
         "isFallback": false,
         "gip": true
       }
@@ -82,11 +82,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/FJmKbQmXwfpAFEg-PQ3ds/_buildManifest.js"
+      src="/_next/static/YGosTzK1dWaOE2ZRDdd7d/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/FJmKbQmXwfpAFEg-PQ3ds/_ssgManifest.js"
+      src="/_next/static/YGosTzK1dWaOE2ZRDdd7d/_ssgManifest.js"
       async=""
     ></script>
   </body>
Diff for withRouter.html
@@ -43,7 +43,7 @@
         "props": { "pageProps": {} },
         "page": "/withRouter",
         "query": {},
-        "buildId": "FJmKbQmXwfpAFEg-PQ3ds",
+        "buildId": "YGosTzK1dWaOE2ZRDdd7d",
         "isFallback": false,
         "gip": true
       }
@@ -77,11 +77,11 @@
       async=""
     ></script>
     <script
-      src="/_next/static/FJmKbQmXwfpAFEg-PQ3ds/_buildManifest.js"
+      src="/_next/static/YGosTzK1dWaOE2ZRDdd7d/_buildManifest.js"
       async=""
     ></script>
     <script
-      src="/_next/static/FJmKbQmXwfpAFEg-PQ3ds/_ssgManifest.js"
+      src="/_next/static/YGosTzK1dWaOE2ZRDdd7d/_ssgManifest.js"
       async=""
     ></script>
   </body>
Commit: 964a8bc

@kodiakhq kodiakhq bot merged commit 8fdcc52 into vercel:canary Apr 5, 2021
divmain added a commit to divmain/next.js that referenced this pull request Apr 7, 2021
* origin/canary: (36 commits)
  Fixed issue accessing index page of "with-reason-relay" example (vercel#23780)
  upgrade to webpack 5.31.0 (vercel#23776)
  Add note about prefetching (vercel#23732)
  v10.1.4-canary.2
  Ensure no-op export returns without error (vercel#23752)
  Update to with-supertokens example (vercel#23728)
  Ensure fallback rewrites dont match over pages with i18n (vercel#23674)
  Ensure basePath is not applied for external GSSP redirect (vercel#23673)
  Fix webpack5 cache distDir (vercel#23718)
  v10.1.4-canary.1
  Stop mutating `resolvedAsPath` (vercel#23705)
  Font optimization (vercel#21676)
  v10.1.4-canary.0
  Ensure default fallback values are correct with i18n (vercel#23675)
  Fix: Codeblock Syntax Highlighting (vercel#23545)
  fix with-mqtt-js example. (vercel#23636)
  fix with-styled-jsx-plugins example. (vercel#23635)
  fix with-web-worker example. (vercel#23634)
  fixes a part of vercel#23607 remove with-glamor example (vercel#23639)
  v10.1.3
  ...

# Conflicts:
#	packages/next/package.json
#	yarn.lock
SokratisVidros pushed a commit to SokratisVidros/next.js that referenced this pull request Apr 20, 2021
Enable font optimization by default
kodiakhq bot pushed a commit that referenced this pull request Apr 28, 2021
#21676 moved `fontOptimization` out of the experimental key of `NextConfig` to the top level, so it should be removed from the type

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.

## Documentation / Examples

- [ ] Make sure the linting passes
flybayer pushed a commit to blitz-js/next.js that referenced this pull request Jun 1, 2021
vercel#21676 moved `fontOptimization` out of the experimental key of `NextConfig` to the top level, so it should be removed from the type

## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.

## Documentation / Examples

- [ ] Make sure the linting passes
@vercel vercel locked as resolved and limited conversation to collaborators Jan 28, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants