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

Skip undefined attribute in Head #9856

Merged
merged 22 commits into from Feb 3, 2020
Merged

Conversation

lachlanjc
Copy link
Contributor

@lachlanjc lachlanjc commented Dec 28, 2019

#8655 says tags inside Head (meta, etc) shouldn't render if they're passed props that are undefined. This PR fixes that behavior.

Keeping my first code contribution to Next.js simple :)

Fixes #8655

@ijjk
Copy link
Member

ijjk commented Dec 28, 2019

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 12.9s 13s ⚠️ +151ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +135 B
Client Bundles (main, webpack, commons)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js 18.2 kB 18.2 kB
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js 1.53 kB 1.53 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..1db6754d3.js 12 kB 12 kB
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js 10.9 kB 10.9 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..17cdc0d60.js 38.3 kB 38.3 kB
de003c3a9d30..0d60.js gzip 13.9 kB 13.9 kB
framework.HASH.js 126 kB 126 kB
framework.HASH.js gzip 39.5 kB 39.5 kB
Overall change 206 kB 206 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js 14.4 kB 14.4 kB
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH.module.js 1.53 kB 1.53 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..b9.module.js 14.9 kB N/A N/A
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..e3.module.js 33.1 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HASH.module.js 126 kB 126 kB
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..5c.module.js N/A 14.9 kB N/A
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..59.module.js N/A 33.1 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 189 kB 189 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js 15.3 kB 15.3 kB
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 15.3 kB 15.3 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js 2.94 kB 2.94 kB
_app.js gzip 1.33 kB 1.33 kB
_error.js 10.4 kB 10.8 kB ⚠️ +487 B
_error.js gzip 4.07 kB 4.25 kB ⚠️ +179 B
hooks.js 1.44 kB 1.44 kB
hooks.js gzip 779 B 779 B
index.js 318 B 318 B
index.js gzip 222 B 222 B
link.js 6.88 kB 6.88 kB
link.js gzip 2.93 kB 2.93 kB
routerDirect.js 411 B 411 B
routerDirect.js gzip 283 B 283 B
withRouter.js 421 B 421 B
withRouter.js gzip 282 B 282 B
Overall change 22.8 kB 23.3 kB ⚠️ +487 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js 1.54 kB 1.54 kB
_app.module.js gzip 757 B 757 B
_error.module.js 7.35 kB 7.84 kB ⚠️ +487 B
_error.module.js gzip 3.06 kB 3.24 kB ⚠️ +181 B
hooks.module.js 651 B 651 B
hooks.module.js gzip 371 B 371 B
index.module.js 276 B 276 B
index.module.js gzip 212 B 212 B
link.module.js 5.54 kB 5.54 kB
link.module.js gzip 2.49 kB 2.49 kB
routerDirect.module.js 383 B 383 B
routerDirect..dule.js gzip 273 B 273 B
withRouter.module.js 394 B 394 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 16.1 kB 16.6 kB ⚠️ +487 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js 81 B 81 B
_buildManifest.js gzip 61 B 61 B
_buildManifest.module.js 81 B 81 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 162 B 162 B
Rendered Page Sizes
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html 4.06 kB 4.06 kB
index.html gzip 1.04 kB 1.04 kB -2 B
link.html 4.11 kB 4.11 kB
link.html gzip 1.04 kB 1.05 kB ⚠️ +1 B
withRouter.html 4.12 kB 4.12 kB
withRouter.html gzip 1.03 kB 1.03 kB
Overall change 12.3 kB 12.3 kB

Diffs

Diff for _error.js
@@ -243,12 +243,21 @@ module.exports = _nonIterableSpread;
 
 /***/ }),
 
+/***/ "2wwy":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("nhzr");
+
+/***/ }),
+
 /***/ "8Kt/":
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _Object$values = __webpack_require__("2wwy");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -324,6 +333,7 @@ function unique() {
   var metaTypes = new _Set();
   var metaCategories = {};
   return function (h) {
+    if (_Object$values(h.props).includes(undefined)) return;
     var unique = true;
 
     if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) {
@@ -481,6 +491,34 @@ module.exports = __webpack_require__("+plK");
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -980,6 +1018,22 @@ module.exports = _arrayWithoutHoles;
 
 /***/ }),
 
+/***/ "fW1p":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $values = __webpack_require__("E8gZ")(false);
+
+$export($export.S, 'Object', {
+  values: function values(it) {
+    return $values(it);
+  }
+});
+
+
+/***/ }),
+
 /***/ "lwAK":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -1008,6 +1062,15 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nhzr":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("fW1p");
+module.exports = __webpack_require__("WEpk").Object.values;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for _error.module.js
@@ -171,12 +171,21 @@ var styles = {
 
 /***/ }),
 
+/***/ "2wwy":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("nhzr");
+
+/***/ }),
+
 /***/ "8Kt/":
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
 
+var _Object$values = __webpack_require__("2wwy");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -252,6 +261,7 @@ function unique() {
   var metaTypes = new _Set();
   var metaCategories = {};
   return h => {
+    if (_Object$values(h.props).includes(undefined)) return;
     var unique = true;
 
     if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) {
@@ -384,6 +394,34 @@ module.exports = __webpack_require__("raTm")(SET, function (get) {
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -669,6 +707,22 @@ $export($export.P + $export.R, 'Set', { toJSON: __webpack_require__("8iia")('Set
 
 /***/ }),
 
+/***/ "fW1p":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $values = __webpack_require__("E8gZ")(false);
+
+$export($export.S, 'Object', {
+  values: function values(it) {
+    return $values(it);
+  }
+});
+
+
+/***/ }),
+
 /***/ "lwAK":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -697,6 +751,15 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nhzr":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("fW1p");
+module.exports = __webpack_require__("WEpk").Object.values;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for index.html
@@ -16,9 +16,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
     </head>
     
@@ -56,11 +56,11 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.48a2d28f0c3bd751be36.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/BUILD_ID/_buildManifest.js" async=""
         crossorigin="anonymous" nomodule=""></script>
Diff for link.html
@@ -14,9 +14,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         as="script" crossorigin="anonymous" />
@@ -55,11 +55,11 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.48a2d28f0c3bd751be36.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/runtime/main-9e2d6aced589db67bbc3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
Diff for withRouter.html
@@ -14,9 +14,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         as="script" crossorigin="anonymous" />
@@ -53,11 +53,11 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.48a2d28f0c3bd751be36.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/runtime/main-9e2d6aced589db67bbc3.js"
         async="" crossorigin="anonymous" nomodule=""></script>

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 14.2s 13.7s -497ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +135 B
Client Bundles (main, webpack, commons)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js 18.2 kB 18.2 kB
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js 1.53 kB 1.53 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..1db6754d3.js 12 kB 12 kB
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js 10.9 kB 10.9 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..17cdc0d60.js 38.3 kB 38.3 kB
de003c3a9d30..0d60.js gzip 13.9 kB 13.9 kB
framework.HASH.js 126 kB 126 kB
framework.HASH.js gzip 39.5 kB 39.5 kB
Overall change 206 kB 206 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js 14.4 kB 14.4 kB
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH.module.js 1.53 kB 1.53 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..b9.module.js 14.9 kB N/A N/A
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..e3.module.js 33.1 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HASH.module.js 126 kB 126 kB
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..5c.module.js N/A 14.9 kB N/A
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..59.module.js N/A 33.1 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 189 kB 189 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js 15.3 kB 15.3 kB
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 15.3 kB 15.3 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js 2.94 kB 2.94 kB
_app.js gzip 1.33 kB 1.33 kB
_error.js 10.4 kB 10.8 kB ⚠️ +487 B
_error.js gzip 4.07 kB 4.25 kB ⚠️ +179 B
hooks.js 1.44 kB 1.44 kB
hooks.js gzip 779 B 779 B
index.js 318 B 318 B
index.js gzip 222 B 222 B
link.js 6.88 kB 6.88 kB
link.js gzip 2.93 kB 2.93 kB
routerDirect.js 411 B 411 B
routerDirect.js gzip 283 B 283 B
withRouter.js 421 B 421 B
withRouter.js gzip 282 B 282 B
Overall change 22.8 kB 23.3 kB ⚠️ +487 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js 1.54 kB 1.54 kB
_app.module.js gzip 757 B 757 B
_error.module.js 7.35 kB 7.84 kB ⚠️ +487 B
_error.module.js gzip 3.06 kB 3.24 kB ⚠️ +181 B
hooks.module.js 651 B 651 B
hooks.module.js gzip 371 B 371 B
index.module.js 276 B 276 B
index.module.js gzip 212 B 212 B
link.module.js 5.54 kB 5.54 kB
link.module.js gzip 2.49 kB 2.49 kB
routerDirect.module.js 383 B 383 B
routerDirect..dule.js gzip 273 B 273 B
withRouter.module.js 394 B 394 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 16.1 kB 16.6 kB ⚠️ +487 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js 81 B 81 B
_buildManifest.js gzip 61 B 61 B
_buildManifest.module.js 81 B 81 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 162 B 162 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js 299 kB 300 kB ⚠️ +1.4 kB
_error.js gzip 78.8 kB 79.1 kB ⚠️ +238 B
hooks.html 4.19 kB 4.19 kB
hooks.html gzip 1.07 kB 1.07 kB ⚠️ +1 B
index.js 299 kB 300 kB ⚠️ +1.4 kB
index.js gzip 79.1 kB 79.3 kB ⚠️ +223 B
link.js 306 kB 308 kB ⚠️ +1.4 kB
link.js gzip 81.1 kB 81.4 kB ⚠️ +263 B
routerDirect.js 299 kB 301 kB ⚠️ +1.4 kB
routerDirect.js gzip 79.1 kB 79.3 kB ⚠️ +222 B
withRouter.js 299 kB 300 kB ⚠️ +1.4 kB
withRouter.js gzip 79.3 kB 79.5 kB ⚠️ +223 B
Overall change 1.51 MB 1.51 MB ⚠️ +7 kB

Commit: 69c19b7

Copy link
Member

@timneutkens timneutkens left a comment

Choose a reason for hiding this comment

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

As per my feedback

@ijjk
Copy link
Member

ijjk commented Dec 29, 2019

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13.1s 13.3s ⚠️ +190ms
nodeModulesSize 48.9 MB 48.9 MB -320 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js 18.2 kB 18.2 kB
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js 1.53 kB 1.53 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..1db6754d3.js 12 kB N/A N/A
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js 10.9 kB 11.2 kB ⚠️ +293 B
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..17cdc0d60.js 38.3 kB N/A N/A
de003c3a9d30..0d60.js gzip 13.9 kB N/A N/A
framework.HASH.js 126 kB 126 kB
framework.HASH.js gzip 39.5 kB 39.5 kB
4952ddcd88e7..93016aa78.js N/A 12.6 kB N/A
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..20a8afc49.js N/A 37.3 kB N/A
de003c3a9d30..fc49.js gzip N/A 13.6 kB N/A
Overall change 206 kB 206 kB ⚠️ +293 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js 14.4 kB 14.4 kB
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH.module.js 1.53 kB 1.53 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..b9.module.js 14.9 kB N/A N/A
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..e3.module.js 33.1 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HASH.module.js 126 kB 126 kB
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..5c.module.js N/A 14.9 kB N/A
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..59.module.js N/A 33.1 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 189 kB 189 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js 15.3 kB 15.3 kB
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 15.3 kB 15.3 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js 2.94 kB 2.94 kB
_app.js gzip 1.33 kB 1.33 kB
_error.js 10.4 kB 10.9 kB ⚠️ +574 B
_error.js gzip 4.07 kB 4.29 kB ⚠️ +224 B
hooks.js 1.44 kB 1.14 kB -293 B
hooks.js gzip 779 B 651 B -128 B
index.js 318 B 318 B
index.js gzip 222 B 222 B
link.js 6.88 kB 6.88 kB
link.js gzip 2.93 kB 2.93 kB
routerDirect.js 411 B 411 B
routerDirect.js gzip 283 B 283 B
withRouter.js 421 B 421 B
withRouter.js gzip 282 B 282 B
Overall change 22.8 kB 23 kB ⚠️ +281 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js 1.54 kB 1.54 kB
_app.module.js gzip 757 B 757 B
_error.module.js 7.35 kB 7.89 kB ⚠️ +536 B
_error.module.js gzip 3.06 kB 3.26 kB ⚠️ +204 B
hooks.module.js 651 B 651 B
hooks.module.js gzip 371 B 371 B
index.module.js 276 B 276 B
index.module.js gzip 212 B 212 B
link.module.js 5.54 kB 5.54 kB
link.module.js gzip 2.49 kB 2.49 kB
routerDirect.module.js 383 B 383 B
routerDirect..dule.js gzip 273 B 273 B
withRouter.module.js 394 B 394 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 16.1 kB 16.7 kB ⚠️ +536 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js 81 B 81 B
_buildManifest.js gzip 61 B 61 B
_buildManifest.module.js 81 B 81 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 162 B 162 B
Rendered Page Sizes
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html 4.06 kB 4.06 kB
index.html gzip 1.04 kB 1.04 kB -1 B
link.html 4.11 kB 4.11 kB
link.html gzip 1.04 kB 1.05 kB ⚠️ +1 B
withRouter.html 4.12 kB 4.12 kB
withRouter.html gzip 1.03 kB 1.03 kB ⚠️ +1 B
Overall change 12.3 kB 12.3 kB

Diffs

Diff for commons.HASH.js
@@ -472,6 +472,16 @@ module.exports = function (it, tag, stat) {
 
 /***/ }),
 
+/***/ "Rp86":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("bBy9");
+__webpack_require__("FlQf");
+module.exports = __webpack_require__("fXsU");
+
+
+/***/ }),
+
 /***/ "SBuE":
 /***/ (function(module, exports) {
 
@@ -589,6 +599,13 @@ if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
 
 /***/ }),
 
+/***/ "XXOK":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("Rp86");
+
+/***/ }),
+
 /***/ "Y7ZC":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -768,6 +785,20 @@ module.exports = __webpack_require__("WEpk").getIteratorMethod = function (it) {
 
 /***/ }),
 
+/***/ "fXsU":
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__("5K7Z");
+var get = __webpack_require__("fNZA");
+module.exports = __webpack_require__("WEpk").getIterator = function (it) {
+  var iterFn = get(it);
+  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
+  return anObject(iterFn.call(it));
+};
+
+
+/***/ }),
+
 /***/ "fpC5":
 /***/ (function(module, exports, __webpack_require__) {
Diff for _error.js
@@ -249,6 +249,10 @@ module.exports = _nonIterableSpread;
 "use strict";
 
 
+var _slicedToArray = __webpack_require__("8+Nu");
+
+var _Object$entries = __webpack_require__("LR/J");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -389,10 +393,19 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1["default"].Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map(function (c, i) {
-    var key = c.key || i;
-    return react_1["default"].cloneElement(c, {
-      key: key
+    var props = {
+      key: c.key || i
+    };
+
+    _Object$entries(c.props).forEach(function (_ref) {
+      var _ref2 = _slicedToArray(_ref, 2),
+          key = _ref2[0],
+          val = _ref2[1];
+
+      if (![val, typeof val].includes('undefined')) props[key] = val;
     });
+
+    return react_1["default"].cloneElement(c, props);
   });
 }
 
@@ -402,8 +415,8 @@ var Effect = side_effect_1["default"]();
  * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
  */
 
-function Head(_ref) {
-  var children = _ref.children;
+function Head(_ref3) {
+  var children = _ref3.children;
   return react_1["default"].createElement(amp_context_1.AmpStateContext.Consumer, null, function (ampState) {
     return react_1["default"].createElement(head_manager_context_1.HeadManagerContext.Consumer, null, function (updateHead) {
       return react_1["default"].createElement(Effect, {
@@ -481,6 +494,34 @@ module.exports = __webpack_require__("+plK");
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -540,6 +581,13 @@ module.exports = _assertThisInitialized;
 
 /***/ }),
 
+/***/ "LR/J":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("tgZa");
+
+/***/ }),
+
 /***/ "N9n2":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -1008,6 +1056,31 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nGDx":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $entries = __webpack_require__("E8gZ")(true);
+
+$export($export.S, 'Object', {
+  entries: function entries(it) {
+    return $entries(it);
+  }
+});
+
+
+/***/ }),
+
+/***/ "tgZa":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("nGDx");
+module.exports = __webpack_require__("WEpk").Object.entries;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for hooks.js
@@ -99,37 +99,6 @@ var __jsx = react_default.a.createElement;
 
 /***/ }),
 
-/***/ "Rp86":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("bBy9");
-__webpack_require__("FlQf");
-module.exports = __webpack_require__("fXsU");
-
-
-/***/ }),
-
-/***/ "XXOK":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("Rp86");
-
-/***/ }),
-
-/***/ "fXsU":
-/***/ (function(module, exports, __webpack_require__) {
-
-var anObject = __webpack_require__("5K7Z");
-var get = __webpack_require__("fNZA");
-module.exports = __webpack_require__("WEpk").getIterator = function (it) {
-  var iterFn = get(it);
-  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
-  return anObject(iterFn.call(it));
-};
-
-
-/***/ }),
-
 /***/ "g1vQ":
 /***/ (function(module, exports, __webpack_require__) {
Diff for _error.module.js
@@ -177,6 +177,8 @@ var styles = {
 "use strict";
 
 
+var _Object$entries = __webpack_require__("LR/J");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -317,10 +319,16 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1.default.Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map((c, i) => {
-    var key = c.key || i;
-    return react_1.default.cloneElement(c, {
-      key
+    var props = {
+      key: c.key || i
+    };
+
+    _Object$entries(c.props).forEach((_ref) => {
+      var [key, val] = _ref;
+      if (![val, typeof val].includes('undefined')) props[key] = val;
     });
+
+    return react_1.default.cloneElement(c, props);
   });
 }
 
@@ -330,10 +338,10 @@ var Effect = side_effect_1.default();
  * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
  */
 
-function Head(_ref) {
+function Head(_ref2) {
   var {
     children
-  } = _ref;
+  } = _ref2;
   return react_1.default.createElement(amp_context_1.AmpStateContext.Consumer, null, ampState => react_1.default.createElement(head_manager_context_1.HeadManagerContext.Consumer, null, updateHead => react_1.default.createElement(Effect, {
     reduceComponentsToState: reduceComponents,
     handleStateChange: updateHead,
@@ -384,6 +392,34 @@ module.exports = __webpack_require__("raTm")(SET, function (get) {
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -412,6 +448,13 @@ exports.HeadManagerContext = React.createContext(null);
 
 /***/ }),
 
+/***/ "LR/J":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("tgZa");
+
+/***/ }),
+
 /***/ "RRc/":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -697,6 +740,31 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nGDx":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $entries = __webpack_require__("E8gZ")(true);
+
+$export($export.S, 'Object', {
+  entries: function entries(it) {
+    return $entries(it);
+  }
+});
+
+
+/***/ }),
+
+/***/ "tgZa":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("nGDx");
+module.exports = __webpack_require__("WEpk").Object.entries;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for index.html
@@ -16,9 +16,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
     </head>
     
@@ -52,15 +52,15 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.48a2d28f0c3bd751be36.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.45924f8f8fa85f88da66.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/BUILD_ID/_buildManifest.js" async=""
         crossorigin="anonymous" nomodule=""></script>
Diff for link.html
@@ -14,9 +14,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         as="script" crossorigin="anonymous" />
@@ -51,15 +51,15 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.48a2d28f0c3bd751be36.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.45924f8f8fa85f88da66.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/runtime/main-9e2d6aced589db67bbc3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
Diff for withRouter.html
@@ -14,9 +14,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         as="script" crossorigin="anonymous" />
@@ -49,15 +49,15 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.48a2d28f0c3bd751be36.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.45924f8f8fa85f88da66.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/runtime/main-9e2d6aced589db67bbc3.js"
         async="" crossorigin="anonymous" nomodule=""></script>

Serverless Mode (Increase detected ⚠️)
General Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13.8s 13.6s -290ms
nodeModulesSize 48.9 MB 48.9 MB -320 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js 18.2 kB 18.2 kB
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js 1.53 kB 1.53 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..1db6754d3.js 12 kB N/A N/A
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js 10.9 kB 11.2 kB ⚠️ +293 B
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..17cdc0d60.js 38.3 kB N/A N/A
de003c3a9d30..0d60.js gzip 13.9 kB N/A N/A
framework.HASH.js 126 kB 126 kB
framework.HASH.js gzip 39.5 kB 39.5 kB
4952ddcd88e7..93016aa78.js N/A 12.6 kB N/A
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..20a8afc49.js N/A 37.3 kB N/A
de003c3a9d30..fc49.js gzip N/A 13.6 kB N/A
Overall change 206 kB 206 kB ⚠️ +293 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js 14.4 kB 14.4 kB
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH.module.js 1.53 kB 1.53 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..b9.module.js 14.9 kB N/A N/A
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..e3.module.js 33.1 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HASH.module.js 126 kB 126 kB
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..5c.module.js N/A 14.9 kB N/A
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..59.module.js N/A 33.1 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 189 kB 189 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js 15.3 kB 15.3 kB
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 15.3 kB 15.3 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js 2.94 kB 2.94 kB
_app.js gzip 1.33 kB 1.33 kB
_error.js 10.4 kB 10.9 kB ⚠️ +574 B
_error.js gzip 4.07 kB 4.29 kB ⚠️ +224 B
hooks.js 1.44 kB 1.14 kB -293 B
hooks.js gzip 779 B 651 B -128 B
index.js 318 B 318 B
index.js gzip 222 B 222 B
link.js 6.88 kB 6.88 kB
link.js gzip 2.93 kB 2.93 kB
routerDirect.js 411 B 411 B
routerDirect.js gzip 283 B 283 B
withRouter.js 421 B 421 B
withRouter.js gzip 282 B 282 B
Overall change 22.8 kB 23 kB ⚠️ +281 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js 1.54 kB 1.54 kB
_app.module.js gzip 757 B 757 B
_error.module.js 7.35 kB 7.89 kB ⚠️ +536 B
_error.module.js gzip 3.06 kB 3.26 kB ⚠️ +204 B
hooks.module.js 651 B 651 B
hooks.module.js gzip 371 B 371 B
index.module.js 276 B 276 B
index.module.js gzip 212 B 212 B
link.module.js 5.54 kB 5.54 kB
link.module.js gzip 2.49 kB 2.49 kB
routerDirect.module.js 383 B 383 B
routerDirect..dule.js gzip 273 B 273 B
withRouter.module.js 394 B 394 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 16.1 kB 16.7 kB ⚠️ +536 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js 81 B 81 B
_buildManifest.js gzip 61 B 61 B
_buildManifest.module.js 81 B 81 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 162 B 162 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js 299 kB 300 kB ⚠️ +1.49 kB
_error.js gzip 78.8 kB 79.1 kB ⚠️ +291 B
hooks.html 4.19 kB 4.19 kB
hooks.html gzip 1.07 kB 1.07 kB ⚠️ +1 B
index.js 299 kB 300 kB ⚠️ +1.49 kB
index.js gzip 79.1 kB 79.4 kB ⚠️ +277 B
link.js 306 kB 308 kB ⚠️ +1.49 kB
link.js gzip 81.1 kB 81.5 kB ⚠️ +307 B
routerDirect.js 299 kB 301 kB ⚠️ +1.49 kB
routerDirect.js gzip 79.1 kB 79.4 kB ⚠️ +278 B
withRouter.js 299 kB 301 kB ⚠️ +1.49 kB
withRouter.js gzip 79.3 kB 79.5 kB ⚠️ +284 B
Overall change 1.51 MB 1.51 MB ⚠️ +7.43 kB

Commit: 7a35d88

@ijjk
Copy link
Member

ijjk commented Dec 29, 2019

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 14.3s 14.3s ⚠️ +74ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +336 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js 18.2 kB 18.2 kB
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js 1.53 kB 1.53 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..1db6754d3.js 12 kB N/A N/A
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js 10.9 kB 11.2 kB ⚠️ +293 B
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..17cdc0d60.js 38.3 kB N/A N/A
de003c3a9d30..0d60.js gzip 13.9 kB N/A N/A
framework.HASH.js 126 kB 126 kB
framework.HASH.js gzip 39.5 kB 39.5 kB
4952ddcd88e7..93016aa78.js N/A 12.6 kB N/A
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..20a8afc49.js N/A 37.3 kB N/A
de003c3a9d30..fc49.js gzip N/A 13.6 kB N/A
Overall change 206 kB 206 kB ⚠️ +293 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js 14.4 kB 14.4 kB
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH.module.js 1.53 kB 1.53 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..b9.module.js 14.9 kB N/A N/A
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..e3.module.js 33.1 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HASH.module.js 126 kB 126 kB
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..5c.module.js N/A 14.9 kB N/A
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..59.module.js N/A 33.1 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 189 kB 189 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js 15.3 kB 15.3 kB
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 15.3 kB 15.3 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js 2.94 kB 2.94 kB
_app.js gzip 1.33 kB 1.33 kB
_error.js 10.4 kB 10.9 kB ⚠️ +574 B
_error.js gzip 4.07 kB 4.29 kB ⚠️ +224 B
hooks.js 1.44 kB 1.14 kB -293 B
hooks.js gzip 779 B 651 B -128 B
index.js 318 B 318 B
index.js gzip 222 B 222 B
link.js 6.88 kB 6.88 kB
link.js gzip 2.93 kB 2.93 kB
routerDirect.js 411 B 411 B
routerDirect.js gzip 283 B 283 B
withRouter.js 421 B 421 B
withRouter.js gzip 282 B 282 B
Overall change 22.8 kB 23 kB ⚠️ +281 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js 1.54 kB 1.54 kB
_app.module.js gzip 757 B 757 B
_error.module.js 7.35 kB 7.89 kB ⚠️ +536 B
_error.module.js gzip 3.06 kB 3.26 kB ⚠️ +204 B
hooks.module.js 651 B 651 B
hooks.module.js gzip 371 B 371 B
index.module.js 276 B 276 B
index.module.js gzip 212 B 212 B
link.module.js 5.54 kB 5.54 kB
link.module.js gzip 2.49 kB 2.49 kB
routerDirect.module.js 383 B 383 B
routerDirect..dule.js gzip 273 B 273 B
withRouter.module.js 394 B 394 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 16.1 kB 16.7 kB ⚠️ +536 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js 81 B 81 B
_buildManifest.js gzip 61 B 61 B
_buildManifest.module.js 81 B 81 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 162 B 162 B
Rendered Page Sizes
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html 4.06 kB 4.06 kB
index.html gzip 1.04 kB 1.04 kB -1 B
link.html 4.11 kB 4.11 kB
link.html gzip 1.04 kB 1.05 kB ⚠️ +1 B
withRouter.html 4.12 kB 4.12 kB
withRouter.html gzip 1.03 kB 1.03 kB ⚠️ +1 B
Overall change 12.3 kB 12.3 kB

Diffs

Diff for commons.HASH.js
@@ -472,6 +472,16 @@ module.exports = function (it, tag, stat) {
 
 /***/ }),
 
+/***/ "Rp86":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("bBy9");
+__webpack_require__("FlQf");
+module.exports = __webpack_require__("fXsU");
+
+
+/***/ }),
+
 /***/ "SBuE":
 /***/ (function(module, exports) {
 
@@ -589,6 +599,13 @@ if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
 
 /***/ }),
 
+/***/ "XXOK":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("Rp86");
+
+/***/ }),
+
 /***/ "Y7ZC":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -768,6 +785,20 @@ module.exports = __webpack_require__("WEpk").getIteratorMethod = function (it) {
 
 /***/ }),
 
+/***/ "fXsU":
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__("5K7Z");
+var get = __webpack_require__("fNZA");
+module.exports = __webpack_require__("WEpk").getIterator = function (it) {
+  var iterFn = get(it);
+  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
+  return anObject(iterFn.call(it));
+};
+
+
+/***/ }),
+
 /***/ "fpC5":
 /***/ (function(module, exports, __webpack_require__) {
Diff for _error.js
@@ -249,6 +249,10 @@ module.exports = _nonIterableSpread;
 "use strict";
 
 
+var _slicedToArray = __webpack_require__("8+Nu");
+
+var _Object$entries = __webpack_require__("LR/J");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -389,10 +393,19 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1["default"].Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map(function (c, i) {
-    var key = c.key || i;
-    return react_1["default"].cloneElement(c, {
-      key: key
+    var props = {
+      key: c.key || i
+    };
+
+    _Object$entries(c.props).forEach(function (_ref) {
+      var _ref2 = _slicedToArray(_ref, 2),
+          key = _ref2[0],
+          val = _ref2[1];
+
+      if (![val, typeof val].includes('undefined')) props[key] = val;
     });
+
+    return react_1["default"].cloneElement(c, props);
   });
 }
 
@@ -402,8 +415,8 @@ var Effect = side_effect_1["default"]();
  * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
  */
 
-function Head(_ref) {
-  var children = _ref.children;
+function Head(_ref3) {
+  var children = _ref3.children;
   return react_1["default"].createElement(amp_context_1.AmpStateContext.Consumer, null, function (ampState) {
     return react_1["default"].createElement(head_manager_context_1.HeadManagerContext.Consumer, null, function (updateHead) {
       return react_1["default"].createElement(Effect, {
@@ -481,6 +494,34 @@ module.exports = __webpack_require__("+plK");
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -540,6 +581,13 @@ module.exports = _assertThisInitialized;
 
 /***/ }),
 
+/***/ "LR/J":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("tgZa");
+
+/***/ }),
+
 /***/ "N9n2":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -1008,6 +1056,31 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nGDx":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $entries = __webpack_require__("E8gZ")(true);
+
+$export($export.S, 'Object', {
+  entries: function entries(it) {
+    return $entries(it);
+  }
+});
+
+
+/***/ }),
+
+/***/ "tgZa":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("nGDx");
+module.exports = __webpack_require__("WEpk").Object.entries;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for hooks.js
@@ -99,37 +99,6 @@ var __jsx = react_default.a.createElement;
 
 /***/ }),
 
-/***/ "Rp86":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("bBy9");
-__webpack_require__("FlQf");
-module.exports = __webpack_require__("fXsU");
-
-
-/***/ }),
-
-/***/ "XXOK":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("Rp86");
-
-/***/ }),
-
-/***/ "fXsU":
-/***/ (function(module, exports, __webpack_require__) {
-
-var anObject = __webpack_require__("5K7Z");
-var get = __webpack_require__("fNZA");
-module.exports = __webpack_require__("WEpk").getIterator = function (it) {
-  var iterFn = get(it);
-  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
-  return anObject(iterFn.call(it));
-};
-
-
-/***/ }),
-
 /***/ "g1vQ":
 /***/ (function(module, exports, __webpack_require__) {
Diff for _error.module.js
@@ -177,6 +177,8 @@ var styles = {
 "use strict";
 
 
+var _Object$entries = __webpack_require__("LR/J");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -317,10 +319,16 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1.default.Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map((c, i) => {
-    var key = c.key || i;
-    return react_1.default.cloneElement(c, {
-      key
+    var props = {
+      key: c.key || i
+    };
+
+    _Object$entries(c.props).forEach((_ref) => {
+      var [key, val] = _ref;
+      if (![val, typeof val].includes('undefined')) props[key] = val;
     });
+
+    return react_1.default.cloneElement(c, props);
   });
 }
 
@@ -330,10 +338,10 @@ var Effect = side_effect_1.default();
  * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
  */
 
-function Head(_ref) {
+function Head(_ref2) {
   var {
     children
-  } = _ref;
+  } = _ref2;
   return react_1.default.createElement(amp_context_1.AmpStateContext.Consumer, null, ampState => react_1.default.createElement(head_manager_context_1.HeadManagerContext.Consumer, null, updateHead => react_1.default.createElement(Effect, {
     reduceComponentsToState: reduceComponents,
     handleStateChange: updateHead,
@@ -384,6 +392,34 @@ module.exports = __webpack_require__("raTm")(SET, function (get) {
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -412,6 +448,13 @@ exports.HeadManagerContext = React.createContext(null);
 
 /***/ }),
 
+/***/ "LR/J":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("tgZa");
+
+/***/ }),
+
 /***/ "RRc/":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -697,6 +740,31 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nGDx":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $entries = __webpack_require__("E8gZ")(true);
+
+$export($export.S, 'Object', {
+  entries: function entries(it) {
+    return $entries(it);
+  }
+});
+
+
+/***/ }),
+
+/***/ "tgZa":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("nGDx");
+module.exports = __webpack_require__("WEpk").Object.entries;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for index.html
@@ -16,9 +16,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
     </head>
     
@@ -52,15 +52,15 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.48a2d28f0c3bd751be36.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.45924f8f8fa85f88da66.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/BUILD_ID/_buildManifest.js" async=""
         crossorigin="anonymous" nomodule=""></script>
Diff for link.html
@@ -14,9 +14,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         as="script" crossorigin="anonymous" />
@@ -51,15 +51,15 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.48a2d28f0c3bd751be36.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.45924f8f8fa85f88da66.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/runtime/main-9e2d6aced589db67bbc3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
Diff for withRouter.html
@@ -14,9 +14,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         as="script" crossorigin="anonymous" />
@@ -49,15 +49,15 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.48a2d28f0c3bd751be36.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.45924f8f8fa85f88da66.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bdb1895cb5ac008f5797.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/runtime/main-9e2d6aced589db67bbc3.js"
         async="" crossorigin="anonymous" nomodule=""></script>

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 14.7s 15s ⚠️ +367ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +336 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js 18.2 kB 18.2 kB
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js 1.53 kB 1.53 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..1db6754d3.js 12 kB N/A N/A
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js 10.9 kB 11.2 kB ⚠️ +293 B
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..17cdc0d60.js 38.3 kB N/A N/A
de003c3a9d30..0d60.js gzip 13.9 kB N/A N/A
framework.HASH.js 126 kB 126 kB
framework.HASH.js gzip 39.5 kB 39.5 kB
4952ddcd88e7..93016aa78.js N/A 12.6 kB N/A
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..20a8afc49.js N/A 37.3 kB N/A
de003c3a9d30..fc49.js gzip N/A 13.6 kB N/A
Overall change 206 kB 206 kB ⚠️ +293 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js 14.4 kB 14.4 kB
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH.module.js 1.53 kB 1.53 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..b9.module.js 14.9 kB N/A N/A
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..e3.module.js 33.1 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HASH.module.js 126 kB 126 kB
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..5c.module.js N/A 14.9 kB N/A
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..59.module.js N/A 33.1 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 189 kB 189 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js 15.3 kB 15.3 kB
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 15.3 kB 15.3 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js 2.94 kB 2.94 kB
_app.js gzip 1.33 kB 1.33 kB
_error.js 10.4 kB 10.9 kB ⚠️ +574 B
_error.js gzip 4.07 kB 4.29 kB ⚠️ +224 B
hooks.js 1.44 kB 1.14 kB -293 B
hooks.js gzip 779 B 651 B -128 B
index.js 318 B 318 B
index.js gzip 222 B 222 B
link.js 6.88 kB 6.88 kB
link.js gzip 2.93 kB 2.93 kB
routerDirect.js 411 B 411 B
routerDirect.js gzip 283 B 283 B
withRouter.js 421 B 421 B
withRouter.js gzip 282 B 282 B
Overall change 22.8 kB 23 kB ⚠️ +281 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js 1.54 kB 1.54 kB
_app.module.js gzip 757 B 757 B
_error.module.js 7.35 kB 7.89 kB ⚠️ +536 B
_error.module.js gzip 3.06 kB 3.26 kB ⚠️ +204 B
hooks.module.js 651 B 651 B
hooks.module.js gzip 371 B 371 B
index.module.js 276 B 276 B
index.module.js gzip 212 B 212 B
link.module.js 5.54 kB 5.54 kB
link.module.js gzip 2.49 kB 2.49 kB
routerDirect.module.js 383 B 383 B
routerDirect..dule.js gzip 273 B 273 B
withRouter.module.js 394 B 394 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 16.1 kB 16.7 kB ⚠️ +536 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js 81 B 81 B
_buildManifest.js gzip 61 B 61 B
_buildManifest.module.js 81 B 81 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 162 B 162 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js 299 kB 300 kB ⚠️ +1.49 kB
_error.js gzip 78.8 kB 79.1 kB ⚠️ +291 B
hooks.html 4.19 kB 4.19 kB
hooks.html gzip 1.07 kB 1.07 kB ⚠️ +1 B
index.js 299 kB 300 kB ⚠️ +1.49 kB
index.js gzip 79.1 kB 79.4 kB ⚠️ +277 B
link.js 306 kB 308 kB ⚠️ +1.49 kB
link.js gzip 81.1 kB 81.5 kB ⚠️ +307 B
routerDirect.js 299 kB 301 kB ⚠️ +1.49 kB
routerDirect.js gzip 79.1 kB 79.4 kB ⚠️ +278 B
withRouter.js 299 kB 301 kB ⚠️ +1.49 kB
withRouter.js gzip 79.3 kB 79.5 kB ⚠️ +284 B
Overall change 1.51 MB 1.51 MB ⚠️ +7.43 kB

Commit: 3756877

Co-Authored-By: Tim Neutkens <tim@timneutkens.nl>
@ijjk
Copy link
Member

ijjk commented Dec 30, 2019

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 14.3s 14s -285ms
nodeModulesSize 48.9 MB 48.9 MB -8.94 kB
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js 18.2 kB 18.2 kB
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js 1.53 kB 1.53 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..1db6754d3.js 12 kB N/A N/A
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js 10.9 kB 11.2 kB ⚠️ +293 B
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..983268ea6.js 38.1 kB N/A N/A
de003c3a9d30..8ea6.js gzip 13.8 kB N/A N/A
framework.HASH.js 126 kB 126 kB
framework.HASH.js gzip 39.5 kB 39.5 kB
4952ddcd88e7..93016aa78.js N/A 12.6 kB N/A
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..20a8afc49.js N/A 37.3 kB N/A
de003c3a9d30..fc49.js gzip N/A 13.6 kB N/A
Overall change 206 kB 206 kB ⚠️ +293 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js 14.4 kB 14.4 kB
main-HASH.module.js gzip 5.42 kB 5.42 kB -1 B
webpack-HASH.module.js 1.53 kB 1.53 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..b9.module.js 14.9 kB N/A N/A
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..21.module.js 33.2 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HASH.module.js 126 kB 126 kB
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..5c.module.js N/A 14.9 kB N/A
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..59.module.js N/A 33.1 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 189 kB 189 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js 15.3 kB 15.3 kB
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 15.3 kB 15.3 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js 2.94 kB 2.94 kB
_app.js gzip 1.33 kB 1.33 kB
_error.js 10.4 kB 10.9 kB ⚠️ +562 B
_error.js gzip 4.07 kB 4.28 kB ⚠️ +212 B
hooks.js 1.44 kB 1.14 kB -293 B
hooks.js gzip 779 B 651 B -128 B
index.js 318 B 318 B
index.js gzip 222 B 222 B
link.js 6.88 kB 6.88 kB
link.js gzip 2.93 kB 2.93 kB
routerDirect.js 411 B 411 B
routerDirect.js gzip 283 B 283 B
withRouter.js 421 B 421 B
withRouter.js gzip 282 B 282 B
Overall change 22.8 kB 23 kB ⚠️ +269 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js 1.54 kB 1.54 kB
_app.module.js gzip 757 B 757 B
_error.module.js 7.35 kB 7.88 kB ⚠️ +524 B
_error.module.js gzip 3.06 kB 3.25 kB ⚠️ +193 B
hooks.module.js 651 B 651 B
hooks.module.js gzip 371 B 371 B
index.module.js 276 B 276 B
index.module.js gzip 212 B 212 B
link.module.js 5.54 kB 5.54 kB
link.module.js gzip 2.49 kB 2.49 kB
routerDirect.module.js 383 B 383 B
routerDirect..dule.js gzip 273 B 273 B
withRouter.module.js 394 B 394 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 16.1 kB 16.7 kB ⚠️ +524 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js 81 B 81 B
_buildManifest.js gzip 61 B 61 B
_buildManifest.module.js 81 B 81 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 162 B 162 B
Rendered Page Sizes
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html 4.06 kB 4.06 kB
index.html gzip 1.03 kB 1.04 kB ⚠️ +2 B
link.html 4.11 kB 4.11 kB
link.html gzip 1.04 kB 1.05 kB ⚠️ +1 B
withRouter.html 4.12 kB 4.12 kB
withRouter.html gzip 1.03 kB 1.03 kB ⚠️ +1 B
Overall change 12.3 kB 12.3 kB

Diffs

Diff for main-HASH.js
@@ -437,7 +437,7 @@ if (!window.Promise) {
 
 var data = JSON.parse(document.getElementById('__NEXT_DATA__').textContent);
 window.__NEXT_DATA__ = data;
-var version = "9.1.7-canary.9";
+var version = "9.1.7-canary.7";
 exports.version = version;
 var props = data.props,
     err = data.err,
Diff for commons.HASH.js
@@ -472,6 +472,16 @@ module.exports = function (it, tag, stat) {
 
 /***/ }),
 
+/***/ "Rp86":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("bBy9");
+__webpack_require__("FlQf");
+module.exports = __webpack_require__("fXsU");
+
+
+/***/ }),
+
 /***/ "SBuE":
 /***/ (function(module, exports) {
 
@@ -589,6 +599,13 @@ if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
 
 /***/ }),
 
+/***/ "XXOK":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("Rp86");
+
+/***/ }),
+
 /***/ "Y7ZC":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -768,6 +785,20 @@ module.exports = __webpack_require__("WEpk").getIteratorMethod = function (it) {
 
 /***/ }),
 
+/***/ "fXsU":
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__("5K7Z");
+var get = __webpack_require__("fNZA");
+module.exports = __webpack_require__("WEpk").getIterator = function (it) {
+  var iterFn = get(it);
+  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
+  return anObject(iterFn.call(it));
+};
+
+
+/***/ }),
+
 /***/ "fpC5":
 /***/ (function(module, exports, __webpack_require__) {
Diff for main-HASH.module.js
@@ -341,7 +341,7 @@ if (!window.Promise) {
 
 var data = JSON.parse(document.getElementById('__NEXT_DATA__').textContent);
 window.__NEXT_DATA__ = data;
-var version = "9.1.7-canary.9";
+var version = "9.1.7-canary.7";
 exports.version = version;
 var {
   props,
Diff for _error.js
@@ -249,6 +249,10 @@ module.exports = _nonIterableSpread;
 "use strict";
 
 
+var _slicedToArray = __webpack_require__("8+Nu");
+
+var _Object$entries = __webpack_require__("LR/J");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -389,10 +393,19 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1["default"].Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map(function (c, i) {
-    var key = c.key || i;
-    return react_1["default"].cloneElement(c, {
-      key: key
+    var props = {
+      key: c.key || i
+    };
+
+    _Object$entries(c.props).forEach(function (_ref) {
+      var _ref2 = _slicedToArray(_ref, 2),
+          key = _ref2[0],
+          val = _ref2[1];
+
+      if (typeof val !== 'undefined') props[key] = val;
     });
+
+    return react_1["default"].cloneElement(c, props);
   });
 }
 
@@ -402,8 +415,8 @@ var Effect = side_effect_1["default"]();
  * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
  */
 
-function Head(_ref) {
-  var children = _ref.children;
+function Head(_ref3) {
+  var children = _ref3.children;
   return react_1["default"].createElement(amp_context_1.AmpStateContext.Consumer, null, function (ampState) {
     return react_1["default"].createElement(head_manager_context_1.HeadManagerContext.Consumer, null, function (updateHead) {
       return react_1["default"].createElement(Effect, {
@@ -481,6 +494,34 @@ module.exports = __webpack_require__("+plK");
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -540,6 +581,13 @@ module.exports = _assertThisInitialized;
 
 /***/ }),
 
+/***/ "LR/J":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("tgZa");
+
+/***/ }),
+
 /***/ "N9n2":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -1008,6 +1056,31 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nGDx":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $entries = __webpack_require__("E8gZ")(true);
+
+$export($export.S, 'Object', {
+  entries: function entries(it) {
+    return $entries(it);
+  }
+});
+
+
+/***/ }),
+
+/***/ "tgZa":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("nGDx");
+module.exports = __webpack_require__("WEpk").Object.entries;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for hooks.js
@@ -99,37 +99,6 @@ var __jsx = react_default.a.createElement;
 
 /***/ }),
 
-/***/ "Rp86":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("bBy9");
-__webpack_require__("FlQf");
-module.exports = __webpack_require__("fXsU");
-
-
-/***/ }),
-
-/***/ "XXOK":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("Rp86");
-
-/***/ }),
-
-/***/ "fXsU":
-/***/ (function(module, exports, __webpack_require__) {
-
-var anObject = __webpack_require__("5K7Z");
-var get = __webpack_require__("fNZA");
-module.exports = __webpack_require__("WEpk").getIterator = function (it) {
-  var iterFn = get(it);
-  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
-  return anObject(iterFn.call(it));
-};
-
-
-/***/ }),
-
 /***/ "g1vQ":
 /***/ (function(module, exports, __webpack_require__) {
Diff for _error.module.js
@@ -177,6 +177,8 @@ var styles = {
 "use strict";
 
 
+var _Object$entries = __webpack_require__("LR/J");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -317,10 +319,16 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1.default.Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map((c, i) => {
-    var key = c.key || i;
-    return react_1.default.cloneElement(c, {
-      key
+    var props = {
+      key: c.key || i
+    };
+
+    _Object$entries(c.props).forEach((_ref) => {
+      var [key, val] = _ref;
+      if (typeof val !== 'undefined') props[key] = val;
     });
+
+    return react_1.default.cloneElement(c, props);
   });
 }
 
@@ -330,10 +338,10 @@ var Effect = side_effect_1.default();
  * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
  */
 
-function Head(_ref) {
+function Head(_ref2) {
   var {
     children
-  } = _ref;
+  } = _ref2;
   return react_1.default.createElement(amp_context_1.AmpStateContext.Consumer, null, ampState => react_1.default.createElement(head_manager_context_1.HeadManagerContext.Consumer, null, updateHead => react_1.default.createElement(Effect, {
     reduceComponentsToState: reduceComponents,
     handleStateChange: updateHead,
@@ -384,6 +392,34 @@ module.exports = __webpack_require__("raTm")(SET, function (get) {
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -412,6 +448,13 @@ exports.HeadManagerContext = React.createContext(null);
 
 /***/ }),
 
+/***/ "LR/J":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("tgZa");
+
+/***/ }),
+
 /***/ "RRc/":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -697,6 +740,31 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nGDx":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $entries = __webpack_require__("E8gZ")(true);
+
+$export($export.S, 'Object', {
+  entries: function entries(it) {
+    return $entries(it);
+  }
+});
+
+
+/***/ }),
+
+/***/ "tgZa":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("nGDx");
+module.exports = __webpack_require__("WEpk").Object.entries;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for index.html
@@ -12,13 +12,13 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/webpack-7928590be3ef2e55b835.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/runtime/main-a76669429e4d5dbad7bb.module.js"
+        <link rel="preload" href="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
     </head>
     
@@ -44,23 +44,23 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/runtime/webpack-7928590be3ef2e55b835.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/runtime/main-5fffc529a37748b62b44.js"
+        <script src="/_next/static/runtime/main-9e2d6aced589db67bbc3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/runtime/main-a76669429e4d5dbad7bb.module.js"
+        <script src="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/chunks/framework.4c64484d8a631a55b435.js"
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3792c332c845d635729d.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.45924f8f8fa85f88da66.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/BUILD_ID/_buildManifest.js" async=""
         crossorigin="anonymous" nomodule=""></script>
Diff for link.html
@@ -14,11 +14,11 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/runtime/main-a76669429e4d5dbad7bb.module.js"
+        <link rel="preload" href="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         as="script" crossorigin="anonymous" />
     </head>
     
@@ -51,19 +51,19 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3792c332c845d635729d.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.45924f8f8fa85f88da66.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/runtime/main-5fffc529a37748b62b44.js"
+        <script src="/_next/static/runtime/main-9e2d6aced589db67bbc3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/runtime/main-a76669429e4d5dbad7bb.module.js"
+        <script src="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/BUILD_ID/_buildManifest.js" async=""
         crossorigin="anonymous" nomodule=""></script>
Diff for withRouter.html
@@ -14,11 +14,11 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/runtime/main-a76669429e4d5dbad7bb.module.js"
+        <link rel="preload" href="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         as="script" crossorigin="anonymous" />
     </head>
     
@@ -49,19 +49,19 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3792c332c845d635729d.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.45924f8f8fa85f88da66.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c95210ca095709699aa7.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/runtime/main-5fffc529a37748b62b44.js"
+        <script src="/_next/static/runtime/main-9e2d6aced589db67bbc3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/runtime/main-a76669429e4d5dbad7bb.module.js"
+        <script src="/_next/static/runtime/main-aa390d7127bc86496460.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/BUILD_ID/_buildManifest.js" async=""
         crossorigin="anonymous" nomodule=""></script>

Serverless Mode (Increase detected ⚠️)
General Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 14.4s 14.3s -47ms
nodeModulesSize 48.9 MB 48.9 MB -8.94 kB
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js 18.2 kB 18.2 kB
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js 1.53 kB 1.53 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..1db6754d3.js 12 kB N/A N/A
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js 10.9 kB 11.2 kB ⚠️ +293 B
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..983268ea6.js 38.1 kB N/A N/A
de003c3a9d30..8ea6.js gzip 13.8 kB N/A N/A
framework.HASH.js 126 kB 126 kB
framework.HASH.js gzip 39.5 kB 39.5 kB
4952ddcd88e7..93016aa78.js N/A 12.6 kB N/A
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..20a8afc49.js N/A 37.3 kB N/A
de003c3a9d30..fc49.js gzip N/A 13.6 kB N/A
Overall change 206 kB 206 kB ⚠️ +293 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js 14.4 kB 14.4 kB
main-HASH.module.js gzip 5.42 kB 5.42 kB -1 B
webpack-HASH.module.js 1.53 kB 1.53 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..b9.module.js 14.9 kB N/A N/A
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..21.module.js 33.2 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HASH.module.js 126 kB 126 kB
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..5c.module.js N/A 14.9 kB N/A
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..59.module.js N/A 33.1 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 189 kB 189 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js 15.3 kB 15.3 kB
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 15.3 kB 15.3 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js 2.94 kB 2.94 kB
_app.js gzip 1.33 kB 1.33 kB
_error.js 10.4 kB 10.9 kB ⚠️ +562 B
_error.js gzip 4.07 kB 4.28 kB ⚠️ +212 B
hooks.js 1.44 kB 1.14 kB -293 B
hooks.js gzip 779 B 651 B -128 B
index.js 318 B 318 B
index.js gzip 222 B 222 B
link.js 6.88 kB 6.88 kB
link.js gzip 2.93 kB 2.93 kB
routerDirect.js 411 B 411 B
routerDirect.js gzip 283 B 283 B
withRouter.js 421 B 421 B
withRouter.js gzip 282 B 282 B
Overall change 22.8 kB 23 kB ⚠️ +269 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js 1.54 kB 1.54 kB
_app.module.js gzip 757 B 757 B
_error.module.js 7.35 kB 7.88 kB ⚠️ +524 B
_error.module.js gzip 3.06 kB 3.25 kB ⚠️ +193 B
hooks.module.js 651 B 651 B
hooks.module.js gzip 371 B 371 B
index.module.js 276 B 276 B
index.module.js gzip 212 B 212 B
link.module.js 5.54 kB 5.54 kB
link.module.js gzip 2.49 kB 2.49 kB
routerDirect.module.js 383 B 383 B
routerDirect..dule.js gzip 273 B 273 B
withRouter.module.js 394 B 394 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 16.1 kB 16.7 kB ⚠️ +524 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js 81 B 81 B
_buildManifest.js gzip 61 B 61 B
_buildManifest.module.js 81 B 81 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 162 B 162 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js 299 kB 300 kB ⚠️ +1.48 kB
_error.js gzip 78.8 kB 79.1 kB ⚠️ +314 B
hooks.html 4.19 kB 4.19 kB
hooks.html gzip 1.07 kB 1.07 kB ⚠️ +2 B
index.js 299 kB 300 kB ⚠️ +1.43 kB
index.js gzip 79.1 kB 79.4 kB ⚠️ +297 B
link.js 306 kB 308 kB ⚠️ +1.43 kB
link.js gzip 81.2 kB 81.4 kB ⚠️ +230 B
routerDirect.js 299 kB 301 kB ⚠️ +1.43 kB
routerDirect.js gzip 79.1 kB 79.4 kB ⚠️ +251 B
withRouter.js 299 kB 301 kB ⚠️ +1.43 kB
withRouter.js gzip 79.2 kB 79.5 kB ⚠️ +293 B
Overall change 1.51 MB 1.51 MB ⚠️ +7.18 kB

Commit: c247ee6

@ijjk
Copy link
Member

ijjk commented Dec 30, 2019

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 12.5s 13s ⚠️ +543ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +308 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..8ea6.js gzip 13.8 kB N/A N/A
framework.HASH.js gzip 39.5 kB 39.5 kB
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..aacf.js gzip N/A 13.5 kB N/A
Overall change 69.2 kB 69.2 kB ⚠️ +55 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 63.7 kB 63.7 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.28 kB ⚠️ +212 B
hooks.js gzip 779 B 651 B -128 B
index.js gzip 222 B 222 B
link.js gzip 2.93 kB 2.93 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.89 kB 9.98 kB ⚠️ +84 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.25 kB ⚠️ +193 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.49 kB 2.49 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.43 kB 7.63 kB ⚠️ +193 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html gzip 1.03 kB 1.08 kB ⚠️ +43 B
link.html gzip 1.04 kB 1.09 kB ⚠️ +44 B
withRouter.html gzip 1.03 kB 1.07 kB ⚠️ +42 B
Overall change 3.11 kB 3.24 kB ⚠️ +129 B

Diffs

Diff for _error.js
@@ -249,6 +249,10 @@ module.exports = _nonIterableSpread;
 "use strict";
 
 
+var _slicedToArray = __webpack_require__("8+Nu");
+
+var _Object$entries = __webpack_require__("LR/J");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -389,10 +393,19 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1["default"].Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map(function (c, i) {
-    var key = c.key || i;
-    return react_1["default"].cloneElement(c, {
-      key: key
+    var props = {
+      key: c.key || i
+    };
+
+    _Object$entries(c.props).forEach(function (_ref) {
+      var _ref2 = _slicedToArray(_ref, 2),
+          key = _ref2[0],
+          val = _ref2[1];
+
+      if (typeof val !== 'undefined') props[key] = val;
     });
+
+    return react_1["default"].cloneElement(c, props);
   });
 }
 
@@ -402,8 +415,8 @@ var Effect = side_effect_1["default"]();
  * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
  */
 
-function Head(_ref) {
-  var children = _ref.children;
+function Head(_ref3) {
+  var children = _ref3.children;
   return react_1["default"].createElement(amp_context_1.AmpStateContext.Consumer, null, function (ampState) {
     return react_1["default"].createElement(head_manager_context_1.HeadManagerContext.Consumer, null, function (updateHead) {
       return react_1["default"].createElement(Effect, {
@@ -481,6 +494,34 @@ module.exports = __webpack_require__("+plK");
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -540,6 +581,13 @@ module.exports = _assertThisInitialized;
 
 /***/ }),
 
+/***/ "LR/J":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("tgZa");
+
+/***/ }),
+
 /***/ "N9n2":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -1008,6 +1056,31 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nGDx":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $entries = __webpack_require__("E8gZ")(true);
+
+$export($export.S, 'Object', {
+  entries: function entries(it) {
+    return $entries(it);
+  }
+});
+
+
+/***/ }),
+
+/***/ "tgZa":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("nGDx");
+module.exports = __webpack_require__("WEpk").Object.entries;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for _error.module.js
@@ -177,6 +177,8 @@ var styles = {
 "use strict";
 
 
+var _Object$entries = __webpack_require__("LR/J");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -317,10 +319,16 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1.default.Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map((c, i) => {
-    var key = c.key || i;
-    return react_1.default.cloneElement(c, {
-      key
+    var props = {
+      key: c.key || i
+    };
+
+    _Object$entries(c.props).forEach((_ref) => {
+      var [key, val] = _ref;
+      if (typeof val !== 'undefined') props[key] = val;
     });
+
+    return react_1.default.cloneElement(c, props);
   });
 }
 
@@ -330,10 +338,10 @@ var Effect = side_effect_1.default();
  * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
  */
 
-function Head(_ref) {
+function Head(_ref2) {
   var {
     children
-  } = _ref;
+  } = _ref2;
   return react_1.default.createElement(amp_context_1.AmpStateContext.Consumer, null, ampState => react_1.default.createElement(head_manager_context_1.HeadManagerContext.Consumer, null, updateHead => react_1.default.createElement(Effect, {
     reduceComponentsToState: reduceComponents,
     handleStateChange: updateHead,
@@ -384,6 +392,34 @@ module.exports = __webpack_require__("raTm")(SET, function (get) {
 
 /***/ }),
 
+/***/ "E8gZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var DESCRIPTORS = __webpack_require__("jmDH");
+var getKeys = __webpack_require__("w6GO");
+var toIObject = __webpack_require__("NsO/");
+var isEnum = __webpack_require__("NV0k").f;
+module.exports = function (isEntries) {
+  return function (it) {
+    var O = toIObject(it);
+    var keys = getKeys(O);
+    var length = keys.length;
+    var i = 0;
+    var result = [];
+    var key;
+    while (length > i) {
+      key = keys[i++];
+      if (!DESCRIPTORS || isEnum.call(O, key)) {
+        result.push(isEntries ? [key, O[key]] : O[key]);
+      }
+    }
+    return result;
+  };
+};
+
+
+/***/ }),
+
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -412,6 +448,13 @@ exports.HeadManagerContext = React.createContext(null);
 
 /***/ }),
 
+/***/ "LR/J":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("tgZa");
+
+/***/ }),
+
 /***/ "RRc/":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -697,6 +740,31 @@ exports.AmpStateContext = React.createContext({});
 
 /***/ }),
 
+/***/ "nGDx":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/tc39/proposal-object-values-entries
+var $export = __webpack_require__("Y7ZC");
+var $entries = __webpack_require__("E8gZ")(true);
+
+$export($export.S, 'Object', {
+  entries: function entries(it) {
+    return $entries(it);
+  }
+});
+
+
+/***/ }),
+
+/***/ "tgZa":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("nGDx");
+module.exports = __webpack_require__("WEpk").Object.entries;
+
+
+/***/ }),
+
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {
Diff for hooks.js
@@ -99,37 +99,6 @@ var __jsx = react_default.a.createElement;
 
 /***/ }),
 
-/***/ "Rp86":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("bBy9");
-__webpack_require__("FlQf");
-module.exports = __webpack_require__("fXsU");
-
-
-/***/ }),
-
-/***/ "XXOK":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("Rp86");
-
-/***/ }),
-
-/***/ "fXsU":
-/***/ (function(module, exports, __webpack_require__) {
-
-var anObject = __webpack_require__("5K7Z");
-var get = __webpack_require__("fNZA");
-module.exports = __webpack_require__("WEpk").getIterator = function (it) {
-  var iterFn = get(it);
-  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
-  return anObject(iterFn.call(it));
-};
-
-
-/***/ }),
-
 /***/ "g1vQ":
 /***/ (function(module, exports, __webpack_require__) {
Diff for 4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js
@@ -0,0 +1,1178 @@
+(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[3],{
+
+/***/ "+SFK":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("AUvm");
+__webpack_require__("wgeU");
+__webpack_require__("adOz");
+__webpack_require__("dl0q");
+module.exports = __webpack_require__("WEpk").Symbol;
+
+
+/***/ }),
+
+/***/ "/HRN":
+/***/ (function(module, exports) {
+
+function _classCallCheck(instance, Constructor) {
+  if (!(instance instanceof Constructor)) {
+    throw new TypeError("Cannot call a class as a function");
+  }
+}
+
+module.exports = _classCallCheck;
+
+/***/ }),
+
+/***/ "2Nb0":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("FlQf");
+__webpack_require__("bBy9");
+module.exports = __webpack_require__("zLkG").f('iterator');
+
+
+/***/ }),
+
+/***/ "3GJH":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("lCc8");
+var $Object = __webpack_require__("WEpk").Object;
+module.exports = function create(P, D) {
+  return $Object.create(P, D);
+};
+
+
+/***/ }),
+
+/***/ "6/1s":
+/***/ (function(module, exports, __webpack_require__) {
+
+var META = __webpack_require__("YqAc")('meta');
+var isObject = __webpack_require__("93I4");
+var has = __webpack_require__("B+OT");
+var setDesc = __webpack_require__("2faE").f;
+var id = 0;
+var isExtensible = Object.isExtensible || function () {
+  return true;
+};
+var FREEZE = !__webpack_require__("KUxP")(function () {
+  return isExtensible(Object.preventExtensions({}));
+});
+var setMeta = function (it) {
+  setDesc(it, META, { value: {
+    i: 'O' + ++id, // object ID
+    w: {}          // weak collections IDs
+  } });
+};
+var fastKey = function (it, create) {
+  // return primitive with prefix
+  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+  if (!has(it, META)) {
+    // can't set metadata to uncaught frozen object
+    if (!isExtensible(it)) return 'F';
+    // not necessary to add metadata
+    if (!create) return 'E';
+    // add missing metadata
+    setMeta(it);
+  // return object ID
+  } return it[META].i;
+};
+var getWeak = function (it, create) {
+  if (!has(it, META)) {
+    // can't set metadata to uncaught frozen object
+    if (!isExtensible(it)) return true;
+    // not necessary to add metadata
+    if (!create) return false;
+    // add missing metadata
+    setMeta(it);
+  // return hash weak collections IDs
+  } return it[META].w;
+};
+// add metadata on freeze-family methods calling
+var onFreeze = function (it) {
+  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
+  return it;
+};
+var meta = module.exports = {
+  KEY: META,
+  NEED: false,
+  fastKey: fastKey,
+  getWeak: getWeak,
+  onFreeze: onFreeze
+};
+
+
+/***/ }),
+
+/***/ "6tYh":
+/***/ (function(module, exports, __webpack_require__) {
+
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+/* eslint-disable no-proto */
+var isObject = __webpack_require__("93I4");
+var anObject = __webpack_require__("5K7Z");
+var check = function (O, proto) {
+  anObject(O);
+  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
+};
+module.exports = {
+  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+    function (test, buggy, set) {
+      try {
+        set = __webpack_require__("2GTP")(Function.call, __webpack_require__("vwuL").f(Object.prototype, '__proto__').set, 2);
+        set(test, []);
+        buggy = !(test instanceof Array);
+      } catch (e) { buggy = true; }
+      return function setPrototypeOf(O, proto) {
+        check(O, proto);
+        if (buggy) O.__proto__ = proto;
+        else set(O, proto);
+        return O;
+      };
+    }({}, false) : undefined),
+  check: check
+};
+
+
+/***/ }),
+
+/***/ "8+Nu":
+/***/ (function(module, exports, __webpack_require__) {
+
+var arrayWithHoles = __webpack_require__("8bdy");
+
+var iterableToArrayLimit = __webpack_require__("fprZ");
+
+var nonIterableRest = __webpack_require__("Bh1o");
+
+function _slicedToArray(arr, i) {
+  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
+}
+
+module.exports = _slicedToArray;
+
+/***/ }),
+
+/***/ "8bdy":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Array$isArray = __webpack_require__("p0XB");
+
+function _arrayWithHoles(arr) {
+  if (_Array$isArray(arr)) return arr;
+}
+
+module.exports = _arrayWithHoles;
+
+/***/ }),
+
+/***/ "A5Xg":
+/***/ (function(module, exports, __webpack_require__) {
+
+// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+var toIObject = __webpack_require__("NsO/");
+var gOPN = __webpack_require__("ar/p").f;
+var toString = {}.toString;
+
+var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+  ? Object.getOwnPropertyNames(window) : [];
+
+var getWindowNames = function (it) {
+  try {
+    return gOPN(it);
+  } catch (e) {
+    return windowNames.slice();
+  }
+};
+
+module.exports.f = function getOwnPropertyNames(it) {
+  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
+};
+
+
+/***/ }),
+
+/***/ "AUvm":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// ECMAScript 6 symbols shim
+var global = __webpack_require__("5T2Y");
+var has = __webpack_require__("B+OT");
+var DESCRIPTORS = __webpack_require__("jmDH");
+var $export = __webpack_require__("Y7ZC");
+var redefine = __webpack_require__("kTiW");
+var META = __webpack_require__("6/1s").KEY;
+var $fails = __webpack_require__("KUxP");
+var shared = __webpack_require__("29s/");
+var setToStringTag = __webpack_require__("RfKB");
+var uid = __webpack_require__("YqAc");
+var wks = __webpack_require__("UWiX");
+var wksExt = __webpack_require__("zLkG");
+var wksDefine = __webpack_require__("Zxgi");
+var enumKeys = __webpack_require__("R+7+");
+var isArray = __webpack_require__("kAMH");
+var anObject = __webpack_require__("5K7Z");
+var isObject = __webpack_require__("93I4");
+var toObject = __webpack_require__("JB68");
+var toIObject = __webpack_require__("NsO/");
+var toPrimitive = __webpack_require__("G8Mo");
+var createDesc = __webpack_require__("rr1i");
+var _create = __webpack_require__("oVml");
+var gOPNExt = __webpack_require__("A5Xg");
+var $GOPD = __webpack_require__("vwuL");
+var $GOPS = __webpack_require__("mqlF");
+var $DP = __webpack_require__("2faE");
+var $keys = __webpack_require__("w6GO");
+var gOPD = $GOPD.f;
+var dP = $DP.f;
+var gOPN = gOPNExt.f;
+var $Symbol = global.Symbol;
+var $JSON = global.JSON;
+var _stringify = $JSON && $JSON.stringify;
+var PROTOTYPE = 'prototype';
+var HIDDEN = wks('_hidden');
+var TO_PRIMITIVE = wks('toPrimitive');
+var isEnum = {}.propertyIsEnumerable;
+var SymbolRegistry = shared('symbol-registry');
+var AllSymbols = shared('symbols');
+var OPSymbols = shared('op-symbols');
+var ObjectProto = Object[PROTOTYPE];
+var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
+var QObject = global.QObject;
+// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
+
+// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+var setSymbolDesc = DESCRIPTORS && $fails(function () {
+  return _create(dP({}, 'a', {
+    get: function () { return dP(this, 'a', { value: 7 }).a; }
+  })).a != 7;
+}) ? function (it, key, D) {
+  var protoDesc = gOPD(ObjectProto, key);
+  if (protoDesc) delete ObjectProto[key];
+  dP(it, key, D);
+  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
+} : dP;
+
+var wrap = function (tag) {
+  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
+  sym._k = tag;
+  return sym;
+};
+
+var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
+  return typeof it == 'symbol';
+} : function (it) {
+  return it instanceof $Symbol;
+};
+
+var $defineProperty = function defineProperty(it, key, D) {
+  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
+  anObject(it);
+  key = toPrimitive(key, true);
+  anObject(D);
+  if (has(AllSymbols, key)) {
+    if (!D.enumerable) {
+      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
+      it[HIDDEN][key] = true;
+    } else {
+      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
+      D = _create(D, { enumerable: createDesc(0, false) });
+    } return setSymbolDesc(it, key, D);
+  } return dP(it, key, D);
+};
+var $defineProperties = function defineProperties(it, P) {
+  anObject(it);
+  var keys = enumKeys(P = toIObject(P));
+  var i = 0;
+  var l = keys.length;
+  var key;
+  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
+  return it;
+};
+var $create = function create(it, P) {
+  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+};
+var $propertyIsEnumerable = function propertyIsEnumerable(key) {
+  var E = isEnum.call(this, key = toPrimitive(key, true));
+  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
+  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
+};
+var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
+  it = toIObject(it);
+  key = toPrimitive(key, true);
+  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
+  var D = gOPD(it, key);
+  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
+  return D;
+};
+var $getOwnPropertyNames = function getOwnPropertyNames(it) {
+  var names = gOPN(toIObject(it));
+  var result = [];
+  var i = 0;
+  var key;
+  while (names.length > i) {
+    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
+  } return result;
+};
+var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
+  var IS_OP = it === ObjectProto;
+  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
+  var result = [];
+  var i = 0;
+  var key;
+  while (names.length > i) {
+    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
+  } return result;
+};
+
+// 19.4.1.1 Symbol([description])
+if (!USE_NATIVE) {
+  $Symbol = function Symbol() {
+    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
+    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
+    var $set = function (value) {
+      if (this === ObjectProto) $set.call(OPSymbols, value);
+      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
+      setSymbolDesc(this, tag, createDesc(1, value));
+    };
+    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
+    return wrap(tag);
+  };
+  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
+    return this._k;
+  });
+
+  $GOPD.f = $getOwnPropertyDescriptor;
+  $DP.f = $defineProperty;
+  __webpack_require__("ar/p").f = gOPNExt.f = $getOwnPropertyNames;
+  __webpack_require__("NV0k").f = $propertyIsEnumerable;
+  $GOPS.f = $getOwnPropertySymbols;
+
+  if (DESCRIPTORS && !__webpack_require__("uOPS")) {
+    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
+  }
+
+  wksExt.f = function (name) {
+    return wrap(wks(name));
+  };
+}
+
+$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
+
+for (var es6Symbols = (
+  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
+  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
+).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);
+
+for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
+
+$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
+  // 19.4.2.1 Symbol.for(key)
+  'for': function (key) {
+    return has(SymbolRegistry, key += '')
+      ? SymbolRegistry[key]
+      : SymbolRegistry[key] = $Symbol(key);
+  },
+  // 19.4.2.5 Symbol.keyFor(sym)
+  keyFor: function keyFor(sym) {
+    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
+    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
+  },
+  useSetter: function () { setter = true; },
+  useSimple: function () { setter = false; }
+});
+
+$export($export.S + $export.F * !USE_NATIVE, 'Object', {
+  // 19.1.2.2 Object.create(O [, Properties])
+  create: $create,
+  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+  defineProperty: $defineProperty,
+  // 19.1.2.3 Object.defineProperties(O, Properties)
+  defineProperties: $defineProperties,
+  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+  // 19.1.2.7 Object.getOwnPropertyNames(O)
+  getOwnPropertyNames: $getOwnPropertyNames,
+  // 19.1.2.8 Object.getOwnPropertySymbols(O)
+  getOwnPropertySymbols: $getOwnPropertySymbols
+});
+
+// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
+// https://bugs.chromium.org/p/v8/issues/detail?id=3443
+var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });
+
+$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
+  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
+    return $GOPS.f(toObject(it));
+  }
+});
+
+// 24.3.2 JSON.stringify(value [, replacer [, space]])
+$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
+  var S = $Symbol();
+  // MS Edge converts symbol values to JSON as {}
+  // WebKit converts symbol values to JSON as null
+  // V8 throws on boxed symbols
+  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
+})), 'JSON', {
+  stringify: function stringify(it) {
+    var args = [it];
+    var i = 1;
+    var replacer, $replacer;
+    while (arguments.length > i) args.push(arguments[i++]);
+    $replacer = replacer = args[1];
+    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
+    if (!isArray(replacer)) replacer = function (key, value) {
+      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
+      if (!isSymbol(value)) return value;
+    };
+    args[1] = replacer;
+    return _stringify.apply($JSON, args);
+  }
+});
+
+// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
+$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__("NegM")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
+// 19.4.3.5 Symbol.prototype[@@toStringTag]
+setToStringTag($Symbol, 'Symbol');
+// 20.2.1.9 Math[@@toStringTag]
+setToStringTag(Math, 'Math', true);
+// 24.3.3 JSON[@@toStringTag]
+setToStringTag(global.JSON, 'JSON', true);
+
+
+/***/ }),
+
+/***/ "Bh1o":
+/***/ (function(module, exports) {
+
+function _nonIterableRest() {
+  throw new TypeError("Invalid attempt to destructure non-iterable instance");
+}
+
+module.exports = _nonIterableRest;
+
+/***/ }),
+
+/***/ "C2SN":
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__("93I4");
+var isArray = __webpack_require__("kAMH");
+var SPECIES = __webpack_require__("UWiX")('species');
+
+module.exports = function (original) {
+  var C;
+  if (isArray(original)) {
+    C = original.constructor;
+    // cross-realm fallback
+    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
+    if (isObject(C)) {
+      C = C[SPECIES];
+      if (C === null) C = undefined;
+    }
+  } return C === undefined ? Array : C;
+};
+
+
+/***/ }),
+
+/***/ "EXMj":
+/***/ (function(module, exports) {
+
+module.exports = function (it, Constructor, name, forbiddenField) {
+  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
+    throw TypeError(name + ': incorrect invocation!');
+  } return it;
+};
+
+
+/***/ }),
+
+/***/ "Hfiw":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.3.19 Object.setPrototypeOf(O, proto)
+var $export = __webpack_require__("Y7ZC");
+$export($export.S, 'Object', { setPrototypeOf: __webpack_require__("6tYh").set });
+
+
+/***/ }),
+
+/***/ "JbBM":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("Hfiw");
+module.exports = __webpack_require__("WEpk").Object.setPrototypeOf;
+
+
+/***/ }),
+
+/***/ "KI45":
+/***/ (function(module, exports) {
+
+function _interopRequireDefault(obj) {
+  return obj && obj.__esModule ? obj : {
+    "default": obj
+  };
+}
+
+module.exports = _interopRequireDefault;
+
+/***/ }),
+
+/***/ "NV0k":
+/***/ (function(module, exports) {
+
+exports.f = {}.propertyIsEnumerable;
+
+
+/***/ }),
+
+/***/ "NwJ3":
+/***/ (function(module, exports, __webpack_require__) {
+
+// check on default Array iterator
+var Iterators = __webpack_require__("SBuE");
+var ITERATOR = __webpack_require__("UWiX")('iterator');
+var ArrayProto = Array.prototype;
+
+module.exports = function (it) {
+  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+};
+
+
+/***/ }),
+
+/***/ "R+7+":
+/***/ (function(module, exports, __webpack_require__) {
+
+// all enumerable object keys, includes symbols
+var getKeys = __webpack_require__("w6GO");
+var gOPS = __webpack_require__("mqlF");
+var pIE = __webpack_require__("NV0k");
+module.exports = function (it) {
+  var result = getKeys(it);
+  var getSymbols = gOPS.f;
+  if (getSymbols) {
+    var symbols = getSymbols(it);
+    var isEnum = pIE.f;
+    var i = 0;
+    var key;
+    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
+  } return result;
+};
+
+
+/***/ }),
+
+/***/ "RU/L":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("Rqdy");
+var $Object = __webpack_require__("WEpk").Object;
+module.exports = function defineProperty(it, key, desc) {
+  return $Object.defineProperty(it, key, desc);
+};
+
+
+/***/ }),
+
+/***/ "Rqdy":
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__("Y7ZC");
+// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+$export($export.S + $export.F * !__webpack_require__("jmDH"), 'Object', { defineProperty: __webpack_require__("2faE").f });
+
+
+/***/ }),
+
+/***/ "SqZg":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("3GJH");
+
+/***/ }),
+
+/***/ "TJWN":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var global = __webpack_require__("5T2Y");
+var core = __webpack_require__("WEpk");
+var dP = __webpack_require__("2faE");
+var DESCRIPTORS = __webpack_require__("jmDH");
+var SPECIES = __webpack_require__("UWiX")('species');
+
+module.exports = function (KEY) {
+  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
+  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
+    configurable: true,
+    get: function () { return this; }
+  });
+};
+
+
+/***/ }),
+
+/***/ "TRZx":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("JbBM");
+
+/***/ }),
+
+/***/ "TuGD":
+/***/ (function(module, exports, __webpack_require__) {
+
+var ITERATOR = __webpack_require__("UWiX")('iterator');
+var SAFE_CLOSING = false;
+
+try {
+  var riter = [7][ITERATOR]();
+  riter['return'] = function () { SAFE_CLOSING = true; };
+  // eslint-disable-next-line no-throw-literal
+  Array.from(riter, function () { throw 2; });
+} catch (e) { /* empty */ }
+
+module.exports = function (exec, skipClosing) {
+  if (!skipClosing && !SAFE_CLOSING) return false;
+  var safe = false;
+  try {
+    var arr = [7];
+    var iter = arr[ITERATOR]();
+    iter.next = function () { return { done: safe = true }; };
+    arr[ITERATOR] = function () { return iter; };
+    exec(arr);
+  } catch (e) { /* empty */ }
+  return safe;
+};
+
+
+/***/ }),
+
+/***/ "V7Et":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 0 -> Array#forEach
+// 1 -> Array#map
+// 2 -> Array#filter
+// 3 -> Array#some
+// 4 -> Array#every
+// 5 -> Array#find
+// 6 -> Array#findIndex
+var ctx = __webpack_require__("2GTP");
+var IObject = __webpack_require__("M1xp");
+var toObject = __webpack_require__("JB68");
+var toLength = __webpack_require__("tEej");
+var asc = __webpack_require__("v6xn");
+module.exports = function (TYPE, $create) {
+  var IS_MAP = TYPE == 1;
+  var IS_FILTER = TYPE == 2;
+  var IS_SOME = TYPE == 3;
+  var IS_EVERY = TYPE == 4;
+  var IS_FIND_INDEX = TYPE == 6;
+  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
+  var create = $create || asc;
+  return function ($this, callbackfn, that) {
+    var O = toObject($this);
+    var self = IObject(O);
+    var f = ctx(callbackfn, that, 3);
+    var length = toLength(self.length);
+    var index = 0;
+    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
+    var val, res;
+    for (;length > index; index++) if (NO_HOLES || index in self) {
+      val = self[index];
+      res = f(val, index, O);
+      if (TYPE) {
+        if (IS_MAP) result[index] = res;   // map
+        else if (res) switch (TYPE) {
+          case 3: return true;             // some
+          case 5: return val;              // find
+          case 6: return index;            // findIndex
+          case 2: result.push(val);        // filter
+        } else if (IS_EVERY) return false; // every
+      }
+    }
+    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+  };
+};
+
+
+/***/ }),
+
+/***/ "WaGi":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Object$defineProperty = __webpack_require__("hfKm");
+
+function _defineProperties(target, props) {
+  for (var i = 0; i < props.length; i++) {
+    var descriptor = props[i];
+    descriptor.enumerable = descriptor.enumerable || false;
+    descriptor.configurable = true;
+    if ("value" in descriptor) descriptor.writable = true;
+
+    _Object$defineProperty(target, descriptor.key, descriptor);
+  }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+  if (staticProps) _defineProperties(Constructor, staticProps);
+  return Constructor;
+}
+
+module.exports = _createClass;
+
+/***/ }),
+
+/***/ "XJU/":
+/***/ (function(module, exports, __webpack_require__) {
+
+var hide = __webpack_require__("NegM");
+module.exports = function (target, src, safe) {
+  for (var key in src) {
+    if (safe && target[key]) target[key] = src[key];
+    else hide(target, key, src[key]);
+  } return target;
+};
+
+
+/***/ }),
+
+/***/ "XVgq":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("2Nb0");
+
+/***/ }),
+
+/***/ "Z7t5":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("+SFK");
+
+/***/ }),
+
+/***/ "Zxgi":
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__("5T2Y");
+var core = __webpack_require__("WEpk");
+var LIBRARY = __webpack_require__("uOPS");
+var wksExt = __webpack_require__("zLkG");
+var defineProperty = __webpack_require__("2faE").f;
+module.exports = function (name) {
+  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
+  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
+};
+
+
+/***/ }),
+
+/***/ "aPfg":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// https://tc39.github.io/proposal-setmap-offrom/
+var $export = __webpack_require__("Y7ZC");
+var aFunction = __webpack_require__("eaoh");
+var ctx = __webpack_require__("2GTP");
+var forOf = __webpack_require__("oioR");
+
+module.exports = function (COLLECTION) {
+  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
+    var mapFn = arguments[1];
+    var mapping, A, n, cb;
+    aFunction(this);
+    mapping = mapFn !== undefined;
+    if (mapping) aFunction(mapFn);
+    if (source == undefined) return new this();
+    A = [];
+    if (mapping) {
+      n = 0;
+      cb = ctx(mapFn, arguments[2], 2);
+      forOf(source, false, function (nextItem) {
+        A.push(cb(nextItem, n++));
+      });
+    } else {
+      forOf(source, false, A.push, A);
+    }
+    return new this(A);
+  } });
+};
+
+
+/***/ }),
+
+/***/ "adOz":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("Zxgi")('asyncIterator');
+
+
+/***/ }),
+
+/***/ "ar/p":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+var $keys = __webpack_require__("5vMV");
+var hiddenKeys = __webpack_require__("FpHa").concat('length', 'prototype');
+
+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
+  return $keys(O, hiddenKeys);
+};
+
+
+/***/ }),
+
+/***/ "cHUd":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+// https://tc39.github.io/proposal-setmap-offrom/
+var $export = __webpack_require__("Y7ZC");
+
+module.exports = function (COLLECTION) {
+  $export($export.S, COLLECTION, { of: function of() {
+    var length = arguments.length;
+    var A = new Array(length);
+    while (length--) A[length] = arguments[length];
+    return new this(A);
+  } });
+};
+
+
+/***/ }),
+
+/***/ "dl0q":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("Zxgi")('observable');
+
+
+/***/ }),
+
+/***/ "fprZ":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _getIterator = __webpack_require__("XXOK");
+
+var _isIterable = __webpack_require__("yLu3");
+
+function _iterableToArrayLimit(arr, i) {
+  if (!(_isIterable(Object(arr)) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
+    return;
+  }
+
+  var _arr = [];
+  var _n = true;
+  var _d = false;
+  var _e = undefined;
+
+  try {
+    for (var _i = _getIterator(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {
+      _arr.push(_s.value);
+
+      if (i && _arr.length === i) break;
+    }
+  } catch (err) {
+    _d = true;
+    _e = err;
+  } finally {
+    try {
+      if (!_n && _i["return"] != null) _i["return"]();
+    } finally {
+      if (_d) throw _e;
+    }
+  }
+
+  return _arr;
+}
+
+module.exports = _iterableToArrayLimit;
+
+/***/ }),
+
+/***/ "hfKm":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("RU/L");
+
+/***/ }),
+
+/***/ "iZP3":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Symbol$iterator = __webpack_require__("XVgq");
+
+var _Symbol = __webpack_require__("Z7t5");
+
+function _typeof2(obj) { if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
+
+function _typeof(obj) {
+  if (typeof _Symbol === "function" && _typeof2(_Symbol$iterator) === "symbol") {
+    module.exports = _typeof = function _typeof(obj) {
+      return _typeof2(obj);
+    };
+  } else {
+    module.exports = _typeof = function _typeof(obj) {
+      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : _typeof2(obj);
+    };
+  }
+
+  return _typeof(obj);
+}
+
+module.exports = _typeof;
+
+/***/ }),
+
+/***/ "lCc8":
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__("Y7ZC");
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+$export($export.S, 'Object', { create: __webpack_require__("oVml") });
+
+
+/***/ }),
+
+/***/ "mqlF":
+/***/ (function(module, exports) {
+
+exports.f = Object.getOwnPropertySymbols;
+
+
+/***/ }),
+
+/***/ "n3ko":
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__("93I4");
+module.exports = function (it, TYPE) {
+  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
+  return it;
+};
+
+
+/***/ }),
+
+/***/ "oioR":
+/***/ (function(module, exports, __webpack_require__) {
+
+var ctx = __webpack_require__("2GTP");
+var call = __webpack_require__("sNwI");
+var isArrayIter = __webpack_require__("NwJ3");
+var anObject = __webpack_require__("5K7Z");
+var toLength = __webpack_require__("tEej");
+var getIterFn = __webpack_require__("fNZA");
+var BREAK = {};
+var RETURN = {};
+var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
+  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
+  var f = ctx(fn, that, entries ? 2 : 1);
+  var index = 0;
+  var length, step, iterator, result;
+  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
+  // fast case for arrays with default iterator
+  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
+    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+    if (result === BREAK || result === RETURN) return result;
+  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
+    result = call(iterator, f, step.value, entries);
+    if (result === BREAK || result === RETURN) return result;
+  }
+};
+exports.BREAK = BREAK;
+exports.RETURN = RETURN;
+
+
+/***/ }),
+
+/***/ "raTm":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var global = __webpack_require__("5T2Y");
+var $export = __webpack_require__("Y7ZC");
+var meta = __webpack_require__("6/1s");
+var fails = __webpack_require__("KUxP");
+var hide = __webpack_require__("NegM");
+var redefineAll = __webpack_require__("XJU/");
+var forOf = __webpack_require__("oioR");
+var anInstance = __webpack_require__("EXMj");
+var isObject = __webpack_require__("93I4");
+var setToStringTag = __webpack_require__("RfKB");
+var dP = __webpack_require__("2faE").f;
+var each = __webpack_require__("V7Et")(0);
+var DESCRIPTORS = __webpack_require__("jmDH");
+
+module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
+  var Base = global[NAME];
+  var C = Base;
+  var ADDER = IS_MAP ? 'set' : 'add';
+  var proto = C && C.prototype;
+  var O = {};
+  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
+    new C().entries().next();
+  }))) {
+    // create collection constructor
+    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+    redefineAll(C.prototype, methods);
+    meta.NEED = true;
+  } else {
+    C = wrapper(function (target, iterable) {
+      anInstance(target, C, NAME, '_c');
+      target._c = new Base();
+      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);
+    });
+    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {
+      var IS_ADDER = KEY == 'add' || KEY == 'set';
+      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {
+        anInstance(this, C, KEY);
+        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;
+        var result = this._c[KEY](a === 0 ? 0 : a, b);
+        return IS_ADDER ? this : result;
+      });
+    });
+    IS_WEAK || dP(C.prototype, 'size', {
+      get: function () {
+        return this._c.size;
+      }
+    });
+  }
+
+  setToStringTag(C, NAME);
+
+  O[NAME] = C;
+  $export($export.G + $export.W + $export.F, O);
+
+  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
+
+  return C;
+};
+
+
+/***/ }),
+
+/***/ "sNwI":
+/***/ (function(module, exports, __webpack_require__) {
+
+// call something on iterator step with safe closing on error
+var anObject = __webpack_require__("5K7Z");
+module.exports = function (iterator, fn, value, entries) {
+  try {
+    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+  // 7.4.6 IteratorClose(iterator, completion)
+  } catch (e) {
+    var ret = iterator['return'];
+    if (ret !== undefined) anObject(ret.call(iterator));
+    throw e;
+  }
+};
+
+
+/***/ }),
+
+/***/ "v6xn":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+var speciesConstructor = __webpack_require__("C2SN");
+
+module.exports = function (original, length) {
+  return new (speciesConstructor(original))(length);
+};
+
+
+/***/ }),
+
+/***/ "vjea":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Object$setPrototypeOf = __webpack_require__("TRZx");
+
+function _setPrototypeOf(o, p) {
+  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
+    o.__proto__ = p;
+    return o;
+  };
+
+  return _setPrototypeOf(o, p);
+}
+
+module.exports = _setPrototypeOf;
+
+/***/ }),
+
+/***/ "vwuL":
+/***/ (function(module, exports, __webpack_require__) {
+
+var pIE = __webpack_require__("NV0k");
+var createDesc = __webpack_require__("rr1i");
+var toIObject = __webpack_require__("NsO/");
+var toPrimitive = __webpack_require__("G8Mo");
+var has = __webpack_require__("B+OT");
+var IE8_DOM_DEFINE = __webpack_require__("eUtF");
+var gOPD = Object.getOwnPropertyDescriptor;
+
+exports.f = __webpack_require__("jmDH") ? gOPD : function getOwnPropertyDescriptor(O, P) {
+  O = toIObject(O);
+  P = toPrimitive(P, true);
+  if (IE8_DOM_DEFINE) try {
+    return gOPD(O, P);
+  } catch (e) { /* empty */ }
+  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
+};
+
+
+/***/ }),
+
+/***/ "wgeU":
+/***/ (function(module, exports) {
+
+
+
+/***/ }),
+
+/***/ "zLkG":
+/***/ (function(module, exports, __webpack_require__) {
+
+exports.f = __webpack_require__("UWiX");
+
+
+/***/ }),
+
+/***/ "zn7N":
+/***/ (function(module, exports, __webpack_require__) {
+
+// most Object methods by ES6 should accept primitives
+var $export = __webpack_require__("Y7ZC");
+var core = __webpack_require__("WEpk");
+var fails = __webpack_require__("KUxP");
+module.exports = function (KEY, exec) {
+  var fn = (core.Object || {})[KEY] || Object[KEY];
+  var exp = {};
+  exp[KEY] = exec(fn);
+  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
+};
+
+
+/***/ })
+
+}]);
\ No newline at end of file
Diff for 4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js
deleted
Diff for 4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js
deleted
Diff for 4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js

Diff too large to display

Diff for commons.HASH.js
@@ -472,6 +472,16 @@ module.exports = function (it, tag, stat) {
 
 /***/ }),
 
+/***/ "Rp86":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("bBy9");
+__webpack_require__("FlQf");
+module.exports = __webpack_require__("fXsU");
+
+
+/***/ }),
+
 /***/ "SBuE":
 /***/ (function(module, exports) {
 
@@ -589,6 +599,13 @@ if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
 
 /***/ }),
 
+/***/ "XXOK":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("Rp86");
+
+/***/ }),
+
 /***/ "Y7ZC":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -768,6 +785,20 @@ module.exports = __webpack_require__("WEpk").getIteratorMethod = function (it) {
 
 /***/ }),
 
+/***/ "fXsU":
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__("5K7Z");
+var get = __webpack_require__("fNZA");
+module.exports = __webpack_require__("WEpk").getIterator = function (it) {
+  var iterFn = get(it);
+  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');
+  return anObject(iterFn.call(it));
+};
+
+
+/***/ }),
+
 /***/ "fpC5":
 /***/ (function(module, exports, __webpack_require__) {
Diff for de003c3a9d308750aa009870a5926f9b18ab31f4.3792c332c845d635729d.js
deleted
Diff for de003c3a9d308750aa009870a5926f9b18ab31f4.794f07276d413f17bc5e.module.js

Diff too large to display

Diff for de003c3a9d308750aa009870a5926f9b18ab31f4.930a80ca146afff2252b.js

Diff too large to display

Diff for de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js
deleted
Diff for index.html
@@ -16,9 +16,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.794f07276d413f17bc5e.module.js"
         as="script" crossorigin="anonymous" />
     </head>
     
@@ -52,15 +52,15 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3792c332c845d635729d.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.930a80ca146afff2252b.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.794f07276d413f17bc5e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/BUILD_ID/_buildManifest.js" async=""
         crossorigin="anonymous" nomodule=""></script>
Diff for link.html
@@ -14,9 +14,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.794f07276d413f17bc5e.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/main-a76669429e4d5dbad7bb.module.js"
         as="script" crossorigin="anonymous" />
@@ -51,15 +51,15 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3792c332c845d635729d.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.930a80ca146afff2252b.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.794f07276d413f17bc5e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/runtime/main-5fffc529a37748b62b44.js"
         async="" crossorigin="anonymous" nomodule=""></script>
Diff for withRouter.html
@@ -14,9 +14,9 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.794f07276d413f17bc5e.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/main-a76669429e4d5dbad7bb.module.js"
         as="script" crossorigin="anonymous" />
@@ -49,15 +49,15 @@
         async="" crossorigin="anonymous" nomodule=""></script>
         <script src="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+        <script src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+        <script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
         async="" crossorigin="anonymous" type="module"></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3792c332c845d635729d.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.930a80ca146afff2252b.js"
         async="" crossorigin="anonymous" nomodule=""></script>
-        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ec390e327d71a1625c8c.module.js"
+        <script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.794f07276d413f17bc5e.module.js"
         async="" crossorigin="anonymous" type="module"></script>
         <script src="/_next/static/runtime/main-5fffc529a37748b62b44.js"
         async="" crossorigin="anonymous" nomodule=""></script>

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 12.8s 13s ⚠️ +167ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +308 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..8ea6.js gzip 13.8 kB N/A N/A
framework.HASH.js gzip 39.5 kB 39.5 kB
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..aacf.js gzip N/A 13.5 kB N/A
Overall change 69.2 kB 69.2 kB ⚠️ +55 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..dule.js gzip N/A 12.5 kB N/A
Overall change 63.7 kB 63.7 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.28 kB ⚠️ +212 B
hooks.js gzip 779 B 651 B -128 B
index.js gzip 222 B 222 B
link.js gzip 2.93 kB 2.93 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.89 kB 9.98 kB ⚠️ +84 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.25 kB ⚠️ +193 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.49 kB 2.49 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.43 kB 7.63 kB ⚠️ +193 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js gzip 78.8 kB 79.1 kB ⚠️ +266 B
hooks.html gzip 1.07 kB 1.07 kB -1 B
index.js gzip 79.1 kB 79.3 kB ⚠️ +265 B
link.js gzip 81.2 kB 81.5 kB ⚠️ +297 B
routerDirect.js gzip 79.1 kB 79.4 kB ⚠️ +268 B
withRouter.js gzip 79.2 kB 79.5 kB ⚠️ +291 B
Overall change 399 kB 400 kB ⚠️ +1.39 kB

Commit: ef8c6b0

@ijjk
Copy link
Member

ijjk commented Dec 31, 2019

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 12.5s 12.6s ⚠️ +126ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +308 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.92 kB ⚠️ +237 B
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..6ef5.js gzip 13.8 kB 13.6 kB -276 B
framework.HASH.js gzip 39.5 kB 39.5 kB
Overall change 69.2 kB 69.2 kB ⚠️ +16 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.57 kB ⚠️ +15 B
de003c3a9d30..dule.js gzip 12.6 kB 12.6 kB -12 B
framework.HA..dule.js gzip 39.4 kB 39.4 kB
Overall change 63.7 kB 63.7 kB ⚠️ +3 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.28 kB ⚠️ +212 B
hooks.js gzip 779 B 651 B -128 B
index.js gzip 222 B 222 B
link.js gzip 2.93 kB 2.93 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.89 kB 9.98 kB ⚠️ +84 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.25 kB ⚠️ +193 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.49 kB 2.49 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.43 kB 7.63 kB ⚠️ +193 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html gzip 1.04 kB 1.04 kB ⚠️ +1 B
link.html gzip 1.04 kB 1.04 kB ⚠️ +1 B
withRouter.html gzip 1.03 kB 1.03 kB ⚠️ +1 B
Overall change 3.11 kB 3.11 kB ⚠️ +3 B

Diffs

Diff for _error.js
@@ -303,6 +303,10 @@
     /***/ '8Kt/': /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
+      var _slicedToArray = __webpack_require__('8+Nu')
+
+      var _Object$entries = __webpack_require__('LR/J')
+
       var _Set = __webpack_require__('ttDY')
 
       var _Object$defineProperty = __webpack_require__('hfKm')
@@ -468,10 +472,19 @@
           .filter(unique())
           .reverse()
           .map(function(c, i) {
-            var key = c.key || i
-            return react_1['default'].cloneElement(c, {
-              key: key,
+            var props = {
+              key: c.key || i,
+            }
+
+            _Object$entries(c.props).forEach(function(_ref) {
+              var _ref2 = _slicedToArray(_ref, 2),
+                key = _ref2[0],
+                val = _ref2[1]
+
+              if (typeof val !== 'undefined') props[key] = val
             })
+
+            return react_1['default'].cloneElement(c, props)
           })
       }
 
@@ -481,8 +494,8 @@
        * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
        */
 
-      function Head(_ref) {
-        var children = _ref.children
+      function Head(_ref3) {
+        var children = _ref3.children
         return react_1['default'].createElement(
           amp_context_1.AmpStateContext.Consumer,
           null,
@@ -578,6 +591,32 @@
       /***/
     },
 
+    /***/ E8gZ: /***/ function(module, exports, __webpack_require__) {
+      var DESCRIPTORS = __webpack_require__('jmDH')
+      var getKeys = __webpack_require__('w6GO')
+      var toIObject = __webpack_require__('NsO/')
+      var isEnum = __webpack_require__('NV0k').f
+      module.exports = function(isEntries) {
+        return function(it) {
+          var O = toIObject(it)
+          var keys = getKeys(O)
+          var length = keys.length
+          var i = 0
+          var result = []
+          var key
+          while (length > i) {
+            key = keys[i++]
+            if (!DESCRIPTORS || isEnum.call(O, key)) {
+              result.push(isEntries ? [key, O[key]] : O[key])
+            }
+          }
+          return result
+        }
+      }
+
+      /***/
+    },
+
     /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
@@ -638,6 +677,12 @@
       /***/
     },
 
+    /***/ 'LR/J': /***/ function(module, exports, __webpack_require__) {
+      module.exports = __webpack_require__('tgZa')
+
+      /***/
+    },
+
     /***/ N9n2: /***/ function(module, exports, __webpack_require__) {
       var _Object$create = __webpack_require__('SqZg')
 
@@ -1168,6 +1213,27 @@
       /***/
     },
 
+    /***/ nGDx: /***/ function(module, exports, __webpack_require__) {
+      // https://github.com/tc39/proposal-object-values-entries
+      var $export = __webpack_require__('Y7ZC')
+      var $entries = __webpack_require__('E8gZ')(true)
+
+      $export($export.S, 'Object', {
+        entries: function entries(it) {
+          return $entries(it)
+        },
+      })
+
+      /***/
+    },
+
+    /***/ tgZa: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__('nGDx')
+      module.exports = __webpack_require__('WEpk').Object.entries
+
+      /***/
+    },
+
     /***/ ttDY: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('+iuc')
Diff for _error.module.js
@@ -208,6 +208,8 @@
     /***/ '8Kt/': /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
+      var _Object$entries = __webpack_require__('LR/J')
+
       var _Set = __webpack_require__('ttDY')
 
       var _Object$defineProperty = __webpack_require__('hfKm')
@@ -373,10 +375,16 @@
           .filter(unique())
           .reverse()
           .map((c, i) => {
-            var key = c.key || i
-            return react_1.default.cloneElement(c, {
-              key,
+            var props = {
+              key: c.key || i,
+            }
+
+            _Object$entries(c.props).forEach(_ref => {
+              var [key, val] = _ref
+              if (typeof val !== 'undefined') props[key] = val
             })
+
+            return react_1.default.cloneElement(c, props)
           })
       }
 
@@ -386,8 +394,8 @@
        * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
        */
 
-      function Head(_ref) {
-        var { children } = _ref
+      function Head(_ref2) {
+        var { children } = _ref2
         return react_1.default.createElement(
           amp_context_1.AmpStateContext.Consumer,
           null,
@@ -461,6 +469,32 @@
       /***/
     },
 
+    /***/ E8gZ: /***/ function(module, exports, __webpack_require__) {
+      var DESCRIPTORS = __webpack_require__('jmDH')
+      var getKeys = __webpack_require__('w6GO')
+      var toIObject = __webpack_require__('NsO/')
+      var isEnum = __webpack_require__('NV0k').f
+      module.exports = function(isEntries) {
+        return function(it) {
+          var O = toIObject(it)
+          var keys = getKeys(O)
+          var length = keys.length
+          var i = 0
+          var result = []
+          var key
+          while (length > i) {
+            key = keys[i++]
+            if (!DESCRIPTORS || isEnum.call(O, key)) {
+              result.push(isEntries ? [key, O[key]] : O[key])
+            }
+          }
+          return result
+        }
+      }
+
+      /***/
+    },
+
     /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
@@ -490,6 +524,12 @@
       /***/
     },
 
+    /***/ 'LR/J': /***/ function(module, exports, __webpack_require__) {
+      module.exports = __webpack_require__('tgZa')
+
+      /***/
+    },
+
     /***/ 'RRc/': /***/ function(module, exports, __webpack_require__) {
       var forOf = __webpack_require__('oioR')
 
@@ -795,6 +835,27 @@
       /***/
     },
 
+    /***/ nGDx: /***/ function(module, exports, __webpack_require__) {
+      // https://github.com/tc39/proposal-object-values-entries
+      var $export = __webpack_require__('Y7ZC')
+      var $entries = __webpack_require__('E8gZ')(true)
+
+      $export($export.S, 'Object', {
+        entries: function entries(it) {
+          return $entries(it)
+        },
+      })
+
+      /***/
+    },
+
+    /***/ tgZa: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__('nGDx')
+      module.exports = __webpack_require__('WEpk').Object.entries
+
+      /***/
+    },
+
     /***/ ttDY: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('+iuc')
Diff for hooks.js
@@ -140,33 +140,6 @@
       /***/
     },
 
-    /***/ Rp86: /***/ function(module, exports, __webpack_require__) {
-      __webpack_require__('bBy9')
-      __webpack_require__('FlQf')
-      module.exports = __webpack_require__('fXsU')
-
-      /***/
-    },
-
-    /***/ XXOK: /***/ function(module, exports, __webpack_require__) {
-      module.exports = __webpack_require__('Rp86')
-
-      /***/
-    },
-
-    /***/ fXsU: /***/ function(module, exports, __webpack_require__) {
-      var anObject = __webpack_require__('5K7Z')
-      var get = __webpack_require__('fNZA')
-      module.exports = __webpack_require__('WEpk').getIterator = function(it) {
-        var iterFn = get(it)
-        if (typeof iterFn != 'function')
-          throw TypeError(it + ' is not iterable!')
-        return anObject(iterFn.call(it))
-      }
-
-      /***/
-    },
-
     /***/ g1vQ: /***/ function(module, exports, __webpack_require__) {
       ;(window.__NEXT_P = window.__NEXT_P || []).push([
         '/hooks',
Diff for 4952ddcd88e7..16.module.js
@@ -512,6 +512,12 @@
       /***/
     },
 
+    /***/ NV0k: /***/ function(module, exports) {
+      exports.f = {}.propertyIsEnumerable
+
+      /***/
+    },
+
     /***/ NegM: /***/ function(module, exports, __webpack_require__) {
       var dP = __webpack_require__('2faE')
       var createDesc = __webpack_require__('rr1i')
Diff for 4952ddcd88e7..92a927903.js
@@ -150,6 +150,38 @@
       /***/
     },
 
+    /***/ '8+Nu': /***/ function(module, exports, __webpack_require__) {
+      var arrayWithHoles = __webpack_require__('8bdy')
+
+      var iterableToArrayLimit = __webpack_require__('fprZ')
+
+      var nonIterableRest = __webpack_require__('Bh1o')
+
+      function _slicedToArray(arr, i) {
+        return (
+          arrayWithHoles(arr) ||
+          iterableToArrayLimit(arr, i) ||
+          nonIterableRest()
+        )
+      }
+
+      module.exports = _slicedToArray
+
+      /***/
+    },
+
+    /***/ '8bdy': /***/ function(module, exports, __webpack_require__) {
+      var _Array$isArray = __webpack_require__('p0XB')
+
+      function _arrayWithHoles(arr) {
+        if (_Array$isArray(arr)) return arr
+      }
+
+      module.exports = _arrayWithHoles
+
+      /***/
+    },
+
     /***/ A5Xg: /***/ function(module, exports, __webpack_require__) {
       // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
       var toIObject = __webpack_require__('NsO/')
@@ -521,6 +553,18 @@
       /***/
     },
 
+    /***/ Bh1o: /***/ function(module, exports) {
+      function _nonIterableRest() {
+        throw new TypeError(
+          'Invalid attempt to destructure non-iterable instance'
+        )
+      }
+
+      module.exports = _nonIterableRest
+
+      /***/
+    },
+
     /***/ C2SN: /***/ function(module, exports, __webpack_require__) {
       var isObject = __webpack_require__('93I4')
       var isArray = __webpack_require__('kAMH')
@@ -936,6 +980,55 @@
       /***/
     },
 
+    /***/ fprZ: /***/ function(module, exports, __webpack_require__) {
+      var _getIterator = __webpack_require__('XXOK')
+
+      var _isIterable = __webpack_require__('yLu3')
+
+      function _iterableToArrayLimit(arr, i) {
+        if (
+          !(
+            _isIterable(Object(arr)) ||
+            Object.prototype.toString.call(arr) === '[object Arguments]'
+          )
+        ) {
+          return
+        }
+
+        var _arr = []
+        var _n = true
+        var _d = false
+        var _e = undefined
+
+        try {
+          for (
+            var _i = _getIterator(arr), _s;
+            !(_n = (_s = _i.next()).done);
+            _n = true
+          ) {
+            _arr.push(_s.value)
+
+            if (i && _arr.length === i) break
+          }
+        } catch (err) {
+          _d = true
+          _e = err
+        } finally {
+          try {
+            if (!_n && _i['return'] != null) _i['return']()
+          } finally {
+            if (_d) throw _e
+          }
+        }
+
+        return _arr
+      }
+
+      module.exports = _iterableToArrayLimit
+
+      /***/
+    },
+
     /***/ hfKm: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('RU/L')
Diff for commons.HASH.js
@@ -510,6 +510,14 @@
       /***/
     },
 
+    /***/ Rp86: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__('bBy9')
+      __webpack_require__('FlQf')
+      module.exports = __webpack_require__('fXsU')
+
+      /***/
+    },
+
     /***/ SBuE: /***/ function(module, exports) {
       module.exports = {}
 
@@ -626,6 +634,12 @@
       /***/
     },
 
+    /***/ XXOK: /***/ function(module, exports, __webpack_require__) {
+      module.exports = __webpack_require__('Rp86')
+
+      /***/
+    },
+
     /***/ Y7ZC: /***/ function(module, exports, __webpack_require__) {
       var global = __webpack_require__('5T2Y')
       var core = __webpack_require__('WEpk')
@@ -829,6 +843,19 @@
       /***/
     },
 
+    /***/ fXsU: /***/ function(module, exports, __webpack_require__) {
+      var anObject = __webpack_require__('5K7Z')
+      var get = __webpack_require__('fNZA')
+      module.exports = __webpack_require__('WEpk').getIterator = function(it) {
+        var iterFn = get(it)
+        if (typeof iterFn != 'function')
+          throw TypeError(it + ' is not iterable!')
+        return anObject(iterFn.call(it))
+      }
+
+      /***/
+    },
+
     /***/ fpC5: /***/ function(module, exports, __webpack_require__) {
       var dP = __webpack_require__('2faE')
       var anObject = __webpack_require__('5K7Z')
Diff for de003c3a9d30..9a.module.js
@@ -1045,12 +1045,6 @@
       /***/
     },
 
-    /***/ NV0k: /***/ function(module, exports) {
-      exports.f = {}.propertyIsEnumerable
-
-      /***/
-    },
-
     /***/ Oc8Q: /***/ function(module, exports, __webpack_require__) {
       'use strict'
Diff for de003c3a9d30..5fa7da92f.js
@@ -246,38 +246,6 @@
       /***/
     },
 
-    /***/ '8+Nu': /***/ function(module, exports, __webpack_require__) {
-      var arrayWithHoles = __webpack_require__('8bdy')
-
-      var iterableToArrayLimit = __webpack_require__('fprZ')
-
-      var nonIterableRest = __webpack_require__('Bh1o')
-
-      function _slicedToArray(arr, i) {
-        return (
-          arrayWithHoles(arr) ||
-          iterableToArrayLimit(arr, i) ||
-          nonIterableRest()
-        )
-      }
-
-      module.exports = _slicedToArray
-
-      /***/
-    },
-
-    /***/ '8bdy': /***/ function(module, exports, __webpack_require__) {
-      var _Array$isArray = __webpack_require__('p0XB')
-
-      function _arrayWithHoles(arr) {
-        if (_Array$isArray(arr)) return arr
-      }
-
-      module.exports = _arrayWithHoles
-
-      /***/
-    },
-
     /***/ '8gHz': /***/ function(module, exports, __webpack_require__) {
       // 7.3.20 SpeciesConstructor(O, defaultConstructor)
       var anObject = __webpack_require__('5K7Z')
@@ -301,18 +269,6 @@
       /***/
     },
 
-    /***/ Bh1o: /***/ function(module, exports) {
-      function _nonIterableRest() {
-        throw new TypeError(
-          'Invalid attempt to destructure non-iterable instance'
-        )
-      }
-
-      module.exports = _nonIterableRest
-
-      /***/
-    },
-
     /***/ G4HQ: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('m5qO')
 
@@ -1148,14 +1104,6 @@
       /***/
     },
 
-    /***/ Rp86: /***/ function(module, exports, __webpack_require__) {
-      __webpack_require__('bBy9')
-      __webpack_require__('FlQf')
-      module.exports = __webpack_require__('fXsU')
-
-      /***/
-    },
-
     /***/ UXZV: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('UbbE')
 
@@ -1169,12 +1117,6 @@
       /***/
     },
 
-    /***/ XXOK: /***/ function(module, exports, __webpack_require__) {
-      module.exports = __webpack_require__('Rp86')
-
-      /***/
-    },
-
     /***/ YTqd: /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
@@ -2272,68 +2214,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       /***/
     },
 
-    /***/ fXsU: /***/ function(module, exports, __webpack_require__) {
-      var anObject = __webpack_require__('5K7Z')
-      var get = __webpack_require__('fNZA')
-      module.exports = __webpack_require__('WEpk').getIterator = function(it) {
-        var iterFn = get(it)
-        if (typeof iterFn != 'function')
-          throw TypeError(it + ' is not iterable!')
-        return anObject(iterFn.call(it))
-      }
-
-      /***/
-    },
-
-    /***/ fprZ: /***/ function(module, exports, __webpack_require__) {
-      var _getIterator = __webpack_require__('XXOK')
-
-      var _isIterable = __webpack_require__('yLu3')
-
-      function _iterableToArrayLimit(arr, i) {
-        if (
-          !(
-            _isIterable(Object(arr)) ||
-            Object.prototype.toString.call(arr) === '[object Arguments]'
-          )
-        ) {
-          return
-        }
-
-        var _arr = []
-        var _n = true
-        var _d = false
-        var _e = undefined
-
-        try {
-          for (
-            var _i = _getIterator(arr), _s;
-            !(_n = (_s = _i.next()).done);
-            _n = true
-          ) {
-            _arr.push(_s.value)
-
-            if (i && _arr.length === i) break
-          }
-        } catch (err) {
-          _d = true
-          _e = err
-        } finally {
-          try {
-            if (!_n && _i['return'] != null) _i['return']()
-          } finally {
-            if (_d) throw _e
-          }
-        }
-
-        return _arr
-      }
-
-      module.exports = _iterableToArrayLimit
-
-      /***/
-    },
-
     /***/ 'g/15': /***/ function(module, exports, __webpack_require__) {
       'use strict'
Diff for index.html
@@ -39,13 +39,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.08c4064758778ec3689a.module.js"
+      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c91627ab62e3976c5d1.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -145,31 +145,31 @@
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+      src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.a956fdaeb9a5fa7da92f.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.99fe99f4856ca0e33bbe.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.08c4064758778ec3689a.module.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c91627ab62e3976c5d1.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for link.html
@@ -33,13 +33,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.08c4064758778ec3689a.module.js"
+      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c91627ab62e3976c5d1.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -138,31 +138,31 @@
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+      src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.a956fdaeb9a5fa7da92f.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.99fe99f4856ca0e33bbe.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.08c4064758778ec3689a.module.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c91627ab62e3976c5d1.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for withRouter.html
@@ -33,13 +33,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.08c4064758778ec3689a.module.js"
+      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c91627ab62e3976c5d1.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -133,31 +133,31 @@
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+      src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.a956fdaeb9a5fa7da92f.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.99fe99f4856ca0e33bbe.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.08c4064758778ec3689a.module.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c91627ab62e3976c5d1.module.js"
       async=""
       crossorigin="anonymous"
       type="module"

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 12.6s 12.7s ⚠️ +96ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +308 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 6.44 kB 6.44 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..6ef5.js gzip 13.8 kB N/A N/A
framework.HASH.js gzip 39.5 kB 39.5 kB
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..a077.js gzip N/A 13.6 kB N/A
Overall change 69.2 kB 69.2 kB ⚠️ +55 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 5.42 kB 5.42 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..dule.js gzip 12.6 kB N/A N/A
framework.HA..dule.js gzip 39.4 kB 39.4 kB
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..dule.js gzip N/A 12.6 kB N/A
Overall change 63.7 kB 63.7 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.28 kB ⚠️ +212 B
hooks.js gzip 779 B 651 B -128 B
index.js gzip 222 B 222 B
link.js gzip 2.93 kB 2.93 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.89 kB 9.98 kB ⚠️ +84 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.25 kB ⚠️ +193 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.49 kB 2.49 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.43 kB 7.63 kB ⚠️ +193 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js gzip 78.9 kB 79.2 kB ⚠️ +267 B
hooks.html gzip 1.07 kB 1.07 kB ⚠️ +1 B
index.js gzip 79.1 kB 79.4 kB ⚠️ +268 B
link.js gzip 81.3 kB 81.6 kB ⚠️ +293 B
routerDirect.js gzip 79.2 kB 79.5 kB ⚠️ +268 B
withRouter.js gzip 79.3 kB 79.6 kB ⚠️ +294 B
Overall change 399 kB 400 kB ⚠️ +1.39 kB

Commit: f317700

Copy link
Member

@timneutkens timneutkens left a comment

Choose a reason for hiding this comment

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

As per the feedback.

@ijjk
Copy link
Member

ijjk commented Jan 6, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13.3s 13.2s -164ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +308 B
Client Bundles (main, webpack, commons) Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.92 kB ⚠️ +237 B
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..4cf7.js gzip 13.7 kB 13.4 kB -296 B
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB -4 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.19 kB 4.19 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.57 kB ⚠️ +15 B
de003c3a9d30..dule.js gzip 12.5 kB 12.4 kB -13 B
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB ⚠️ +2 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.28 kB ⚠️ +212 B
hooks.js gzip 779 B 651 B -128 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.95 kB ⚠️ +84 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.25 kB ⚠️ +193 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.41 kB 7.61 kB ⚠️ +193 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html gzip 1.02 kB 1.02 kB -1 B
link.html gzip 1.03 kB 1.03 kB -1 B
withRouter.html gzip 1.02 kB 1.02 kB
Overall change 3.07 kB 3.07 kB -2 B

Diffs

Diff for _error.js
@@ -303,6 +303,10 @@
     /***/ '8Kt/': /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
+      var _slicedToArray = __webpack_require__('8+Nu')
+
+      var _Object$entries = __webpack_require__('LR/J')
+
       var _Set = __webpack_require__('ttDY')
 
       var _Object$defineProperty = __webpack_require__('hfKm')
@@ -468,10 +472,19 @@
           .filter(unique())
           .reverse()
           .map(function(c, i) {
-            var key = c.key || i
-            return react_1['default'].cloneElement(c, {
-              key: key,
+            var props = {
+              key: c.key || i,
+            }
+
+            _Object$entries(c.props).forEach(function(_ref) {
+              var _ref2 = _slicedToArray(_ref, 2),
+                key = _ref2[0],
+                val = _ref2[1]
+
+              if (typeof val !== 'undefined') props[key] = val
             })
+
+            return react_1['default'].cloneElement(c, props)
           })
       }
 
@@ -481,8 +494,8 @@
        * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
        */
 
-      function Head(_ref) {
-        var children = _ref.children
+      function Head(_ref3) {
+        var children = _ref3.children
         return react_1['default'].createElement(
           amp_context_1.AmpStateContext.Consumer,
           null,
@@ -578,6 +591,32 @@
       /***/
     },
 
+    /***/ E8gZ: /***/ function(module, exports, __webpack_require__) {
+      var DESCRIPTORS = __webpack_require__('jmDH')
+      var getKeys = __webpack_require__('w6GO')
+      var toIObject = __webpack_require__('NsO/')
+      var isEnum = __webpack_require__('NV0k').f
+      module.exports = function(isEntries) {
+        return function(it) {
+          var O = toIObject(it)
+          var keys = getKeys(O)
+          var length = keys.length
+          var i = 0
+          var result = []
+          var key
+          while (length > i) {
+            key = keys[i++]
+            if (!DESCRIPTORS || isEnum.call(O, key)) {
+              result.push(isEntries ? [key, O[key]] : O[key])
+            }
+          }
+          return result
+        }
+      }
+
+      /***/
+    },
+
     /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
@@ -638,6 +677,12 @@
       /***/
     },
 
+    /***/ 'LR/J': /***/ function(module, exports, __webpack_require__) {
+      module.exports = __webpack_require__('tgZa')
+
+      /***/
+    },
+
     /***/ N9n2: /***/ function(module, exports, __webpack_require__) {
       var _Object$create = __webpack_require__('SqZg')
 
@@ -1168,6 +1213,27 @@
       /***/
     },
 
+    /***/ nGDx: /***/ function(module, exports, __webpack_require__) {
+      // https://github.com/tc39/proposal-object-values-entries
+      var $export = __webpack_require__('Y7ZC')
+      var $entries = __webpack_require__('E8gZ')(true)
+
+      $export($export.S, 'Object', {
+        entries: function entries(it) {
+          return $entries(it)
+        },
+      })
+
+      /***/
+    },
+
+    /***/ tgZa: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__('nGDx')
+      module.exports = __webpack_require__('WEpk').Object.entries
+
+      /***/
+    },
+
     /***/ ttDY: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('+iuc')
Diff for _error.module.js
@@ -208,6 +208,8 @@
     /***/ '8Kt/': /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
+      var _Object$entries = __webpack_require__('LR/J')
+
       var _Set = __webpack_require__('ttDY')
 
       var _Object$defineProperty = __webpack_require__('hfKm')
@@ -373,10 +375,16 @@
           .filter(unique())
           .reverse()
           .map((c, i) => {
-            var key = c.key || i
-            return react_1.default.cloneElement(c, {
-              key,
+            var props = {
+              key: c.key || i,
+            }
+
+            _Object$entries(c.props).forEach(_ref => {
+              var [key, val] = _ref
+              if (typeof val !== 'undefined') props[key] = val
             })
+
+            return react_1.default.cloneElement(c, props)
           })
       }
 
@@ -386,8 +394,8 @@
        * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
        */
 
-      function Head(_ref) {
-        var { children } = _ref
+      function Head(_ref2) {
+        var { children } = _ref2
         return react_1.default.createElement(
           amp_context_1.AmpStateContext.Consumer,
           null,
@@ -461,6 +469,32 @@
       /***/
     },
 
+    /***/ E8gZ: /***/ function(module, exports, __webpack_require__) {
+      var DESCRIPTORS = __webpack_require__('jmDH')
+      var getKeys = __webpack_require__('w6GO')
+      var toIObject = __webpack_require__('NsO/')
+      var isEnum = __webpack_require__('NV0k').f
+      module.exports = function(isEntries) {
+        return function(it) {
+          var O = toIObject(it)
+          var keys = getKeys(O)
+          var length = keys.length
+          var i = 0
+          var result = []
+          var key
+          while (length > i) {
+            key = keys[i++]
+            if (!DESCRIPTORS || isEnum.call(O, key)) {
+              result.push(isEntries ? [key, O[key]] : O[key])
+            }
+          }
+          return result
+        }
+      }
+
+      /***/
+    },
+
     /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
@@ -490,6 +524,12 @@
       /***/
     },
 
+    /***/ 'LR/J': /***/ function(module, exports, __webpack_require__) {
+      module.exports = __webpack_require__('tgZa')
+
+      /***/
+    },
+
     /***/ 'RRc/': /***/ function(module, exports, __webpack_require__) {
       var forOf = __webpack_require__('oioR')
 
@@ -795,6 +835,27 @@
       /***/
     },
 
+    /***/ nGDx: /***/ function(module, exports, __webpack_require__) {
+      // https://github.com/tc39/proposal-object-values-entries
+      var $export = __webpack_require__('Y7ZC')
+      var $entries = __webpack_require__('E8gZ')(true)
+
+      $export($export.S, 'Object', {
+        entries: function entries(it) {
+          return $entries(it)
+        },
+      })
+
+      /***/
+    },
+
+    /***/ tgZa: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__('nGDx')
+      module.exports = __webpack_require__('WEpk').Object.entries
+
+      /***/
+    },
+
     /***/ ttDY: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('+iuc')
Diff for hooks.js
@@ -140,33 +140,6 @@
       /***/
     },
 
-    /***/ Rp86: /***/ function(module, exports, __webpack_require__) {
-      __webpack_require__('bBy9')
-      __webpack_require__('FlQf')
-      module.exports = __webpack_require__('fXsU')
-
-      /***/
-    },
-
-    /***/ XXOK: /***/ function(module, exports, __webpack_require__) {
-      module.exports = __webpack_require__('Rp86')
-
-      /***/
-    },
-
-    /***/ fXsU: /***/ function(module, exports, __webpack_require__) {
-      var anObject = __webpack_require__('5K7Z')
-      var get = __webpack_require__('fNZA')
-      module.exports = __webpack_require__('WEpk').getIterator = function(it) {
-        var iterFn = get(it)
-        if (typeof iterFn != 'function')
-          throw TypeError(it + ' is not iterable!')
-        return anObject(iterFn.call(it))
-      }
-
-      /***/
-    },
-
     /***/ g1vQ: /***/ function(module, exports, __webpack_require__) {
       ;(window.__NEXT_P = window.__NEXT_P || []).push([
         '/hooks',
Diff for 4952ddcd88e7..16.module.js
@@ -512,6 +512,12 @@
       /***/
     },
 
+    /***/ NV0k: /***/ function(module, exports) {
+      exports.f = {}.propertyIsEnumerable
+
+      /***/
+    },
+
     /***/ NegM: /***/ function(module, exports, __webpack_require__) {
       var dP = __webpack_require__('2faE')
       var createDesc = __webpack_require__('rr1i')
Diff for 4952ddcd88e7..92a927903.js
@@ -150,6 +150,38 @@
       /***/
     },
 
+    /***/ '8+Nu': /***/ function(module, exports, __webpack_require__) {
+      var arrayWithHoles = __webpack_require__('8bdy')
+
+      var iterableToArrayLimit = __webpack_require__('fprZ')
+
+      var nonIterableRest = __webpack_require__('Bh1o')
+
+      function _slicedToArray(arr, i) {
+        return (
+          arrayWithHoles(arr) ||
+          iterableToArrayLimit(arr, i) ||
+          nonIterableRest()
+        )
+      }
+
+      module.exports = _slicedToArray
+
+      /***/
+    },
+
+    /***/ '8bdy': /***/ function(module, exports, __webpack_require__) {
+      var _Array$isArray = __webpack_require__('p0XB')
+
+      function _arrayWithHoles(arr) {
+        if (_Array$isArray(arr)) return arr
+      }
+
+      module.exports = _arrayWithHoles
+
+      /***/
+    },
+
     /***/ A5Xg: /***/ function(module, exports, __webpack_require__) {
       // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
       var toIObject = __webpack_require__('NsO/')
@@ -521,6 +553,18 @@
       /***/
     },
 
+    /***/ Bh1o: /***/ function(module, exports) {
+      function _nonIterableRest() {
+        throw new TypeError(
+          'Invalid attempt to destructure non-iterable instance'
+        )
+      }
+
+      module.exports = _nonIterableRest
+
+      /***/
+    },
+
     /***/ C2SN: /***/ function(module, exports, __webpack_require__) {
       var isObject = __webpack_require__('93I4')
       var isArray = __webpack_require__('kAMH')
@@ -936,6 +980,55 @@
       /***/
     },
 
+    /***/ fprZ: /***/ function(module, exports, __webpack_require__) {
+      var _getIterator = __webpack_require__('XXOK')
+
+      var _isIterable = __webpack_require__('yLu3')
+
+      function _iterableToArrayLimit(arr, i) {
+        if (
+          !(
+            _isIterable(Object(arr)) ||
+            Object.prototype.toString.call(arr) === '[object Arguments]'
+          )
+        ) {
+          return
+        }
+
+        var _arr = []
+        var _n = true
+        var _d = false
+        var _e = undefined
+
+        try {
+          for (
+            var _i = _getIterator(arr), _s;
+            !(_n = (_s = _i.next()).done);
+            _n = true
+          ) {
+            _arr.push(_s.value)
+
+            if (i && _arr.length === i) break
+          }
+        } catch (err) {
+          _d = true
+          _e = err
+        } finally {
+          try {
+            if (!_n && _i['return'] != null) _i['return']()
+          } finally {
+            if (_d) throw _e
+          }
+        }
+
+        return _arr
+      }
+
+      module.exports = _iterableToArrayLimit
+
+      /***/
+    },
+
     /***/ hfKm: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('RU/L')
Diff for commons.HASH.js
@@ -510,6 +510,14 @@
       /***/
     },
 
+    /***/ Rp86: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__('bBy9')
+      __webpack_require__('FlQf')
+      module.exports = __webpack_require__('fXsU')
+
+      /***/
+    },
+
     /***/ SBuE: /***/ function(module, exports) {
       module.exports = {}
 
@@ -626,6 +634,12 @@
       /***/
     },
 
+    /***/ XXOK: /***/ function(module, exports, __webpack_require__) {
+      module.exports = __webpack_require__('Rp86')
+
+      /***/
+    },
+
     /***/ Y7ZC: /***/ function(module, exports, __webpack_require__) {
       var global = __webpack_require__('5T2Y')
       var core = __webpack_require__('WEpk')
@@ -829,6 +843,19 @@
       /***/
     },
 
+    /***/ fXsU: /***/ function(module, exports, __webpack_require__) {
+      var anObject = __webpack_require__('5K7Z')
+      var get = __webpack_require__('fNZA')
+      module.exports = __webpack_require__('WEpk').getIterator = function(it) {
+        var iterFn = get(it)
+        if (typeof iterFn != 'function')
+          throw TypeError(it + ' is not iterable!')
+        return anObject(iterFn.call(it))
+      }
+
+      /***/
+    },
+
     /***/ fpC5: /***/ function(module, exports, __webpack_require__) {
       var dP = __webpack_require__('2faE')
       var anObject = __webpack_require__('5K7Z')
Diff for de003c3a9d30..5d46f1a1e.js
@@ -246,38 +246,6 @@
       /***/
     },
 
-    /***/ '8+Nu': /***/ function(module, exports, __webpack_require__) {
-      var arrayWithHoles = __webpack_require__('8bdy')
-
-      var iterableToArrayLimit = __webpack_require__('fprZ')
-
-      var nonIterableRest = __webpack_require__('Bh1o')
-
-      function _slicedToArray(arr, i) {
-        return (
-          arrayWithHoles(arr) ||
-          iterableToArrayLimit(arr, i) ||
-          nonIterableRest()
-        )
-      }
-
-      module.exports = _slicedToArray
-
-      /***/
-    },
-
-    /***/ '8bdy': /***/ function(module, exports, __webpack_require__) {
-      var _Array$isArray = __webpack_require__('p0XB')
-
-      function _arrayWithHoles(arr) {
-        if (_Array$isArray(arr)) return arr
-      }
-
-      module.exports = _arrayWithHoles
-
-      /***/
-    },
-
     /***/ '8gHz': /***/ function(module, exports, __webpack_require__) {
       // 7.3.20 SpeciesConstructor(O, defaultConstructor)
       var anObject = __webpack_require__('5K7Z')
@@ -301,18 +269,6 @@
       /***/
     },
 
-    /***/ Bh1o: /***/ function(module, exports) {
-      function _nonIterableRest() {
-        throw new TypeError(
-          'Invalid attempt to destructure non-iterable instance'
-        )
-      }
-
-      module.exports = _nonIterableRest
-
-      /***/
-    },
-
     /***/ G4HQ: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('m5qO')
 
@@ -1113,14 +1069,6 @@
       /***/
     },
 
-    /***/ Rp86: /***/ function(module, exports, __webpack_require__) {
-      __webpack_require__('bBy9')
-      __webpack_require__('FlQf')
-      module.exports = __webpack_require__('fXsU')
-
-      /***/
-    },
-
     /***/ UXZV: /***/ function(module, exports, __webpack_require__) {
       module.exports = __webpack_require__('UbbE')
 
@@ -1134,12 +1082,6 @@
       /***/
     },
 
-    /***/ XXOK: /***/ function(module, exports, __webpack_require__) {
-      module.exports = __webpack_require__('Rp86')
-
-      /***/
-    },
-
     /***/ YTqd: /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
@@ -2240,68 +2182,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
       /***/
     },
 
-    /***/ fXsU: /***/ function(module, exports, __webpack_require__) {
-      var anObject = __webpack_require__('5K7Z')
-      var get = __webpack_require__('fNZA')
-      module.exports = __webpack_require__('WEpk').getIterator = function(it) {
-        var iterFn = get(it)
-        if (typeof iterFn != 'function')
-          throw TypeError(it + ' is not iterable!')
-        return anObject(iterFn.call(it))
-      }
-
-      /***/
-    },
-
-    /***/ fprZ: /***/ function(module, exports, __webpack_require__) {
-      var _getIterator = __webpack_require__('XXOK')
-
-      var _isIterable = __webpack_require__('yLu3')
-
-      function _iterableToArrayLimit(arr, i) {
-        if (
-          !(
-            _isIterable(Object(arr)) ||
-            Object.prototype.toString.call(arr) === '[object Arguments]'
-          )
-        ) {
-          return
-        }
-
-        var _arr = []
-        var _n = true
-        var _d = false
-        var _e = undefined
-
-        try {
-          for (
-            var _i = _getIterator(arr), _s;
-            !(_n = (_s = _i.next()).done);
-            _n = true
-          ) {
-            _arr.push(_s.value)
-
-            if (i && _arr.length === i) break
-          }
-        } catch (err) {
-          _d = true
-          _e = err
-        } finally {
-          try {
-            if (!_n && _i['return'] != null) _i['return']()
-          } finally {
-            if (_d) throw _e
-          }
-        }
-
-        return _arr
-      }
-
-      module.exports = _iterableToArrayLimit
-
-      /***/
-    },
-
     /***/ 'g/15': /***/ function(module, exports, __webpack_require__) {
       'use strict'
Diff for de003c3a9d30..33.module.js
@@ -1045,12 +1045,6 @@
       /***/
     },
 
-    /***/ NV0k: /***/ function(module, exports) {
-      exports.f = {}.propertyIsEnumerable
-
-      /***/
-    },
-
     /***/ Oc8Q: /***/ function(module, exports, __webpack_require__) {
       'use strict'
Diff for index.html
@@ -33,13 +33,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bc6579cf6308df6d2e33.module.js"
+      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.933cfab5e53fdb1bd333.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -133,31 +133,31 @@
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+      src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2f93bd9bec75d46f1a1e.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.74b00fba4c67b5fd88a9.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bc6579cf6308df6d2e33.module.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.933cfab5e53fdb1bd333.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for link.html
@@ -33,13 +33,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bc6579cf6308df6d2e33.module.js"
+      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.933cfab5e53fdb1bd333.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -138,31 +138,31 @@
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+      src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2f93bd9bec75d46f1a1e.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.74b00fba4c67b5fd88a9.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bc6579cf6308df6d2e33.module.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.933cfab5e53fdb1bd333.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for withRouter.html
@@ -33,13 +33,13 @@
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       as="script"
       crossorigin="anonymous"
     />
     <link
       rel="preload"
-      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bc6579cf6308df6d2e33.module.js"
+      href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.933cfab5e53fdb1bd333.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -133,31 +133,31 @@
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js"
+      src="/_next/static/chunks/commons.920907bec75f96f88f7c.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.361646682eb03217c9a3.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js"
+      src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.dbb66b1fa344e61a301f.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2f93bd9bec75d46f1a1e.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.74b00fba4c67b5fd88a9.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script
     ><script
-      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.bc6579cf6308df6d2e33.module.js"
+      src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.933cfab5e53fdb1bd333.module.js"
       async=""
       crossorigin="anonymous"
       type="module"

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13.7s 13.8s ⚠️ +136ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +308 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js gzip 4.06 kB 4.11 kB ⚠️ +55 B
de003c3a9d30..4cf7.js gzip 13.7 kB N/A N/A
framework.HASH.js gzip 39.1 kB 39.1 kB
4952ddcd88e7..aa78.js gzip N/A 4.92 kB N/A
de003c3a9d30..a997.js gzip N/A 13.4 kB N/A
Overall change 67.5 kB 67.5 kB ⚠️ +55 B
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.19 kB 4.19 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..dule.js gzip 12.5 kB N/A N/A
framework.HA..dule.js gzip 39.1 kB 39.1 kB
4952ddcd88e7..dule.js gzip N/A 5.57 kB N/A
de003c3a9d30..dule.js gzip N/A 12.4 kB N/A
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.28 kB ⚠️ +212 B
hooks.js gzip 779 B 651 B -128 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.95 kB ⚠️ +84 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.25 kB ⚠️ +193 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.41 kB 7.61 kB ⚠️ +193 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js gzip 77.8 kB 78 kB ⚠️ +269 B
hooks.html gzip 1.05 kB 1.06 kB ⚠️ +2 B
index.js gzip 78 kB 78.2 kB ⚠️ +263 B
link.js gzip 80.4 kB 80.6 kB ⚠️ +269 B
routerDirect.js gzip 78.1 kB 78.3 kB ⚠️ +272 B
withRouter.js gzip 78.1 kB 78.4 kB ⚠️ +262 B
Overall change 393 kB 395 kB ⚠️ +1.34 kB

Commit: dfa1a6a

@ijjk
Copy link
Member

ijjk commented Jan 6, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 12.8s 12.8s -16ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +74 B
Client Bundles (main, webpack, commons)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..4cf7.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.19 kB 4.19 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.08 kB ⚠️ +11 B
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.88 kB ⚠️ +11 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.07 kB ⚠️ +11 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.41 kB 7.42 kB ⚠️ +11 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html gzip 1.02 kB 1.02 kB
link.html gzip 1.03 kB 1.03 kB
withRouter.html gzip 1.02 kB 1.02 kB
Overall change 3.07 kB 3.07 kB

Diffs

Diff for _error.js
@@ -303,6 +303,8 @@
     /***/ '8Kt/': /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
+      var _Object$assign = __webpack_require__('Qetd')
+
       var _Set = __webpack_require__('ttDY')
 
       var _Object$defineProperty = __webpack_require__('hfKm')
@@ -468,10 +470,14 @@
           .filter(unique())
           .reverse()
           .map(function(c, i) {
-            var key = c.key || i
-            return react_1['default'].cloneElement(c, {
-              key: key,
-            })
+            var props = _Object$assign(
+              {
+                key: c.key || i,
+              },
+              c.props
+            )
+
+            return react_1['default'].cloneElement(c, props)
           })
       }
Diff for _error.module.js
@@ -208,6 +208,8 @@
     /***/ '8Kt/': /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
+      var _Object$assign = __webpack_require__('Qetd')
+
       var _Set = __webpack_require__('ttDY')
 
       var _Object$defineProperty = __webpack_require__('hfKm')
@@ -373,10 +375,14 @@
           .filter(unique())
           .reverse()
           .map((c, i) => {
-            var key = c.key || i
-            return react_1.default.cloneElement(c, {
-              key,
-            })
+            var props = _Object$assign(
+              {
+                key: c.key || i,
+              },
+              c.props
+            )
+
+            return react_1.default.cloneElement(c, props)
           })
       }

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13.3s 13.1s -143ms
nodeModulesSize 48.9 MB 48.9 MB ⚠️ +74 B
Client Bundles (main, webpack, commons)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..4cf7.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.19 kB 4.19 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.08 kB ⚠️ +11 B
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.88 kB ⚠️ +11 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.07 kB ⚠️ +11 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.41 kB 7.42 kB ⚠️ +11 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js gzip 77.8 kB 77.8 kB ⚠️ +13 B
hooks.html gzip 1.05 kB 1.05 kB
index.js gzip 78 kB 78 kB ⚠️ +14 B
link.js gzip 80.4 kB 80.4 kB ⚠️ +13 B
routerDirect.js gzip 78.1 kB 78.1 kB ⚠️ +13 B
withRouter.js gzip 78.1 kB 78.1 kB ⚠️ +11 B
Overall change 393 kB 393 kB ⚠️ +64 B

Commit: 08ab007

@ijjk
Copy link
Member

ijjk commented Jan 7, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13.7s 13.6s -157ms
nodeModulesSize 48.9 MB 48.9 MB -35 B
Client Bundles (main, webpack, commons)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..4cf7.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.19 kB 4.19 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.08 kB ⚠️ +10 B
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.88 kB ⚠️ +10 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.06 kB ⚠️ +8 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.41 kB 7.42 kB ⚠️ +8 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html gzip 1.02 kB 1.02 kB
link.html gzip 1.03 kB 1.03 kB
withRouter.html gzip 1.02 kB 1.02 kB
Overall change 3.07 kB 3.07 kB

Diffs

Diff for _error.js
@@ -303,6 +303,8 @@
     /***/ '8Kt/': /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
+      var _Object$assign = __webpack_require__('Qetd')
+
       var _Set = __webpack_require__('ttDY')
 
       var _Object$defineProperty = __webpack_require__('hfKm')
@@ -468,10 +470,15 @@
           .filter(unique())
           .reverse()
           .map(function(c, i) {
-            var key = c.key || i
-            return react_1['default'].cloneElement(c, {
-              key: key,
-            })
+            return react_1['default'].cloneElement(
+              c,
+              _Object$assign(
+                {
+                  key: c.key || i,
+                },
+                c.props
+              )
+            )
           })
       }
Diff for _error.module.js
@@ -208,6 +208,8 @@
     /***/ '8Kt/': /***/ function(module, exports, __webpack_require__) {
       'use strict'
 
+      var _Object$assign = __webpack_require__('Qetd')
+
       var _Set = __webpack_require__('ttDY')
 
       var _Object$defineProperty = __webpack_require__('hfKm')
@@ -372,12 +374,17 @@
           .concat(defaultHead(props.inAmpMode))
           .filter(unique())
           .reverse()
-          .map((c, i) => {
-            var key = c.key || i
-            return react_1.default.cloneElement(c, {
-              key,
-            })
-          })
+          .map((c, i) =>
+            react_1.default.cloneElement(
+              c,
+              _Object$assign(
+                {
+                  key: c.key || i,
+                },
+                c.props
+              )
+            )
+          )
       }
 
       var Effect = side_effect_1.default()

Serverless Mode (Increase detected ⚠️)
General Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13.9s 13.8s -65ms
nodeModulesSize 48.9 MB 48.9 MB -35 B
Client Bundles (main, webpack, commons)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.13 kB 5.13 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..4cf7.js gzip 13.7 kB 13.7 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 67.5 kB 67.5 kB
Client Bundles (main, webpack, commons) Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.19 kB 4.19 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 12.5 kB 12.5 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 62.1 kB 62.1 kB
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.33 kB 1.33 kB
_error.js gzip 4.07 kB 4.08 kB ⚠️ +10 B
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.9 kB 2.9 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.87 kB 9.88 kB ⚠️ +10 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 757 B 757 B
_error.module.js gzip 3.06 kB 3.06 kB ⚠️ +8 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.47 kB 2.47 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.41 kB 7.42 kB ⚠️ +8 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js gzip 77.7 kB 77.7 kB ⚠️ +3 B
hooks.html gzip 1.05 kB 1.05 kB
index.js gzip 78 kB 78 kB ⚠️ +4 B
link.js gzip 80.3 kB 80.3 kB ⚠️ +5 B
routerDirect.js gzip 78 kB 78 kB ⚠️ +4 B
withRouter.js gzip 78.1 kB 78.1 kB ⚠️ +3 B
Overall change 393 kB 393 kB ⚠️ +19 B

Commit: a77ffeb

@ijjk
Copy link
Member

ijjk commented Feb 2, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 11.9s 11.3s -656ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +616 B
Client Bundles (main, webpack, commons)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB N/A N/A
framework.HASH.js gzip 39.1 kB 39.1 kB
4952ddcd88e7..e401.js gzip N/A 4.75 kB N/A
de003c3a9d30..c1d4.js gzip N/A 16.1 kB N/A
Overall change 69.9 kB 69.9 kB
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.11 kB 4.11 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..dule.js gzip 15.1 kB N/A N/A
framework.HA..dule.js gzip 39.1 kB 39.1 kB
4952ddcd88e7..dule.js gzip N/A 5.67 kB N/A
de003c3a9d30..dule.js gzip N/A 14.9 kB N/A
Overall change 64.6 kB 64.6 kB -11 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.12 kB ⚠️ +46 B
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.72 kB ⚠️ +46 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.1 kB ⚠️ +47 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.27 kB ⚠️ +47 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html gzip 1.02 kB 1.02 kB -1 B
link.html gzip 1.03 kB 1.03 kB
withRouter.html gzip 1.02 kB 1.02 kB -1 B
Overall change 3.07 kB 3.07 kB -2 B

Diffs

Diff for index.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-0afd49089440c822b731.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-c2db04186bb67cc71ec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-0afd49089440c822b731.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.a48016d40489ab0604f9.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d6669afbd475c78a47d1.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-0afd49089440c822b731.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.66e4beb2265a6a09ab6b.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.a48016d40489ab0604f9.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.5325d56135713fd2fd31.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d6669afbd475c78a47d1.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-c2db04186bb67cc71ec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-0afd49089440c822b731.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for de003c3a9d30..2a.module.js
@@ -2174,22 +2174,6 @@ module.exports = function (fn, args, that) {
 };
 
 
-/***/ }),
-
-/***/ "Mqbl":
-/***/ (function(module, exports, __webpack_require__) {
-
-// 19.1.2.14 Object.keys(O)
-var toObject = __webpack_require__("JB68");
-var $keys = __webpack_require__("w6GO");
-
-__webpack_require__("zn7N")('keys', function () {
-  return function keys(it) {
-    return $keys(toObject(it));
-  };
-});
-
-
 /***/ }),
 
 /***/ "NV0k":
@@ -3583,15 +3567,6 @@ function _typeof(obj) {
 
 module.exports = _typeof;
 
-/***/ }),
-
-/***/ "iq4v":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("Mqbl");
-module.exports = __webpack_require__("WEpk").Object.keys;
-
-
 /***/ }),
 
 /***/ "kB4c":
@@ -4021,13 +3996,6 @@ function makePublicRouterInstance(router) {
 
 /***/ }),
 
-/***/ "pLtp":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("iq4v");
-
-/***/ }),
-
 /***/ "q6LJ":
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -4246,23 +4214,6 @@ module.exports = function (C, x) {
 };
 
 
-/***/ }),
-
-/***/ "zn7N":
-/***/ (function(module, exports, __webpack_require__) {
-
-// most Object methods by ES6 should accept primitives
-var $export = __webpack_require__("Y7ZC");
-var core = __webpack_require__("WEpk");
-var fails = __webpack_require__("KUxP");
-module.exports = function (KEY, exec) {
-  var fn = (core.Object || {})[KEY] || Object[KEY];
-  var exp = {};
-  exp[KEY] = exec(fn);
-  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
-};
-
-
 /***/ })
 
 }]);
\ No newline at end of file
Diff for de003c3a9d30..7d78bbb63.js
@@ -1901,22 +1901,6 @@ module.exports = function (fn, args, that) {
 };
 
 
-/***/ }),
-
-/***/ "Mqbl":
-/***/ (function(module, exports, __webpack_require__) {
-
-// 19.1.2.14 Object.keys(O)
-var toObject = __webpack_require__("JB68");
-var $keys = __webpack_require__("w6GO");
-
-__webpack_require__("zn7N")('keys', function () {
-  return function keys(it) {
-    return $keys(toObject(it));
-  };
-});
-
-
 /***/ }),
 
 /***/ "Nehr":
@@ -3449,15 +3433,6 @@ function getRouteMatcher(routeRegex) {
 
 exports.getRouteMatcher = getRouteMatcher;
 
-/***/ }),
-
-/***/ "iq4v":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("Mqbl");
-module.exports = __webpack_require__("WEpk").Object.keys;
-
-
 /***/ }),
 
 /***/ "kB4c":
@@ -4632,13 +4607,6 @@ function makePublicRouterInstance(router) {
 
 /***/ }),
 
-/***/ "pLtp":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("iq4v");
-
-/***/ }),
-
 /***/ "pbKT":
 /***/ (function(module, exports, __webpack_require__) {
Diff for 4952ddcd88e7..92a927903.js
@@ -484,6 +484,22 @@ function _interopRequireDefault(obj) {
 
 module.exports = _interopRequireDefault;
 
+/***/ }),
+
+/***/ "Mqbl":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.14 Object.keys(O)
+var toObject = __webpack_require__("JB68");
+var $keys = __webpack_require__("w6GO");
+
+__webpack_require__("zn7N")('keys', function () {
+  return function keys(it) {
+    return $keys(toObject(it));
+  };
+});
+
+
 /***/ }),
 
 /***/ "NV0k":
@@ -857,6 +873,15 @@ function _typeof(obj) {
 
 module.exports = _typeof;
 
+/***/ }),
+
+/***/ "iq4v":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("Mqbl");
+module.exports = __webpack_require__("WEpk").Object.keys;
+
+
 /***/ }),
 
 /***/ "lCc8":
@@ -919,6 +944,13 @@ exports.BREAK = BREAK;
 exports.RETURN = RETURN;
 
 
+/***/ }),
+
+/***/ "pLtp":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("iq4v");
+
 /***/ }),
 
 /***/ "raTm":
Diff for 4952ddcd88e7..16.module.js
@@ -456,6 +456,22 @@ module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCE
 };
 
 
+/***/ }),
+
+/***/ "Mqbl":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.14 Object.keys(O)
+var toObject = __webpack_require__("JB68");
+var $keys = __webpack_require__("w6GO");
+
+__webpack_require__("zn7N")('keys', function () {
+  return function keys(it) {
+    return $keys(toObject(it));
+  };
+});
+
+
 /***/ }),
 
 /***/ "MvwC":
@@ -1059,6 +1075,15 @@ module.exports = function () { /* empty */ };
 
 module.exports = __webpack_require__("RU/L");
 
+/***/ }),
+
+/***/ "iq4v":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("Mqbl");
+module.exports = __webpack_require__("WEpk").Object.keys;
+
+
 /***/ }),
 
 /***/ "j2DC":
@@ -1203,6 +1228,13 @@ exports.BREAK = BREAK;
 exports.RETURN = RETURN;
 
 
+/***/ }),
+
+/***/ "pLtp":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("iq4v");
+
 /***/ }),
 
 /***/ "raTm":
@@ -1401,6 +1433,23 @@ module.exports = Object.keys || function keys(O) {
 
 
 
+/***/ }),
+
+/***/ "zn7N":
+/***/ (function(module, exports, __webpack_require__) {
+
+// most Object methods by ES6 should accept primitives
+var $export = __webpack_require__("Y7ZC");
+var core = __webpack_require__("WEpk");
+var fails = __webpack_require__("KUxP");
+module.exports = function (KEY, exec) {
+  var fn = (core.Object || {})[KEY] || Object[KEY];
+  var exp = {};
+  exp[KEY] = exec(fn);
+  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
+};
+
+
 /***/ })
 
 }]);
\ No newline at end of file
Diff for _error.module.js
@@ -177,6 +177,10 @@ var styles = {
 "use strict";
 
 
+var _Object$assign = __webpack_require__("Qetd");
+
+var _Object$keys = __webpack_require__("pLtp");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -317,10 +321,21 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1.default.Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map((c, i) => {
-    var key = c.key || i;
-    return react_1.default.cloneElement(c, {
-      key
+    var cleanProps = {};
+
+    _Object$keys(c.props).forEach(key => {
+      var val = c.props[key]; // TODO: do we want to normalize null/true/false here also?
+
+      if (val === undefined) {
+        val = '';
+      }
+
+      cleanProps[key] = val;
     });
+
+    return react_1.default.cloneElement(c, _Object$assign({
+      key: c.key || i
+    }, cleanProps));
   });
 }
Diff for _error.js
@@ -249,6 +249,10 @@ module.exports = _nonIterableSpread;
 "use strict";
 
 
+var _Object$assign = __webpack_require__("Qetd");
+
+var _Object$keys = __webpack_require__("pLtp");
+
 var _Set = __webpack_require__("ttDY");
 
 var _Object$defineProperty = __webpack_require__("hfKm");
@@ -389,10 +393,21 @@ function reduceComponents(headElements, props) {
     var headElementChildren = react_1["default"].Children.toArray(headElement.props.children);
     return list.concat(headElementChildren);
   }, []).reduce(onlyReactElement, []).reverse().concat(defaultHead(props.inAmpMode)).filter(unique()).reverse().map(function (c, i) {
-    var key = c.key || i;
-    return react_1["default"].cloneElement(c, {
-      key: key
+    var cleanProps = {};
+
+    _Object$keys(c.props).forEach(function (key) {
+      var val = c.props[key]; // TODO: do we want to normalize null/true/false here also?
+
+      if (val === undefined) {
+        val = '';
+      }
+
+      cleanProps[key] = val;
     });
+
+    return react_1["default"].cloneElement(c, _Object$assign({
+      key: c.key || i
+    }, cleanProps));
   });
 }
Diff for link.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-0afd49089440c822b731.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-c2db04186bb67cc71ec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-0afd49089440c822b731.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.a48016d40489ab0604f9.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d6669afbd475c78a47d1.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-0afd49089440c822b731.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.66e4beb2265a6a09ab6b.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.a48016d40489ab0604f9.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.5325d56135713fd2fd31.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d6669afbd475c78a47d1.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-c2db04186bb67cc71ec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-0afd49089440c822b731.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for withRouter.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-0afd49089440c822b731.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-c2db04186bb67cc71ec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-0afd49089440c822b731.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.a48016d40489ab0604f9.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d6669afbd475c78a47d1.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-0afd49089440c822b731.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.66e4beb2265a6a09ab6b.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.a48016d40489ab0604f9.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.5325d56135713fd2fd31.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.d6669afbd475c78a47d1.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-c2db04186bb67cc71ec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-0afd49089440c822b731.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 12.5s 11.8s -689ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +616 B
Client Bundles (main, webpack, commons)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.11 kB 5.11 kB
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB N/A N/A
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB N/A N/A
framework.HASH.js gzip 39.1 kB 39.1 kB
4952ddcd88e7..e401.js gzip N/A 4.75 kB N/A
de003c3a9d30..c1d4.js gzip N/A 16.1 kB N/A
Overall change 69.9 kB 69.9 kB
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.11 kB 4.11 kB
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB N/A N/A
de003c3a9d30..dule.js gzip 15.1 kB N/A N/A
framework.HA..dule.js gzip 39.1 kB 39.1 kB
4952ddcd88e7..dule.js gzip N/A 5.67 kB N/A
de003c3a9d30..dule.js gzip N/A 14.9 kB N/A
Overall change 64.6 kB 64.6 kB -11 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.12 kB ⚠️ +46 B
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.72 kB ⚠️ +46 B
Client Pages Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.1 kB ⚠️ +47 B
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.27 kB ⚠️ +47 B
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js gzip 46.7 kB 46.8 kB ⚠️ +81 B
404.html gzip 1.43 kB 1.43 kB
hooks.html gzip 1.06 kB 1.06 kB
index.js gzip 46.8 kB 46.9 kB ⚠️ +78 B
link.js gzip 72.3 kB 72.4 kB ⚠️ +84 B
routerDirect.js gzip 70.6 kB 70.6 kB ⚠️ +84 B
withRouter.js gzip 70.4 kB 70.5 kB ⚠️ +85 B
Overall change 309 kB 310 kB ⚠️ +412 B

Commit: 6cc1c9e

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.

I updated the logic to normalize undefined prop values to an empty string as this seems the most correct and added tests to ensure the value is what we expect. Will leave for final review by @timneutkens

@ijjk ijjk requested a review from timneutkens February 2, 2020 18:23
Copy link
Member

@Timer Timer left a comment

Choose a reason for hiding this comment

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

Rendering:

<meta name="empty-content" content={undefined} />

Should result in:

<meta name="empty-content">

What's the precedence for normalizing this to an empty string?

@ijjk
Copy link
Member

ijjk commented Feb 3, 2020

@Timer was thinking react kept the prop even if the value was undefined although looks like it does strip undefined prop values from the DOM on both the server and client so I updated to match this behavior in the correct place and updated the tests to check the prop isn't rendered at all

@ijjk
Copy link
Member

ijjk commented Feb 3, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 9.6s 9.6s ⚠️ +17ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +171 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.11 kB 5.12 kB ⚠️ +7 B
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB ⚠️ +7 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.11 kB 4.12 kB ⚠️ +5 B
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB ⚠️ +5 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html gzip 1.02 kB 1.02 kB ⚠️ +3 B
link.html gzip 1.03 kB 1.03 kB ⚠️ +3 B
withRouter.html gzip 1.02 kB 1.02 kB ⚠️ +2 B
Overall change 3.06 kB 3.07 kB ⚠️ +8 B

Diffs

Diff for link.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-9402db5934e5e9586fbf.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-60dcd53dc0075b7cdec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for index.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-9402db5934e5e9586fbf.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-60dcd53dc0075b7cdec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for main-HASH.module.js
@@ -119,7 +119,9 @@ function reactElementToDOM(_ref) {
 
   for (var p in props) {
     if (!props.hasOwnProperty(p)) continue;
-    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue;
+    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue; // we don't render undefined props to the DOM
+
+    if (props[p] === undefined) continue;
     var attr = DOMAttributeNames[p] || p.toLowerCase();
     el.setAttribute(attr, props[p]);
   }
Diff for main-HASH.js
@@ -188,7 +188,9 @@ function reactElementToDOM(_ref) {
 
   for (var p in props) {
     if (!props.hasOwnProperty(p)) continue;
-    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue;
+    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue; // we don't render undefined props to the DOM
+
+    if (props[p] === undefined) continue;
     var attr = DOMAttributeNames[p] || p.toLowerCase();
     el.setAttribute(attr, props[p]);
   }
Diff for withRouter.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-9402db5934e5e9586fbf.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-60dcd53dc0075b7cdec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 10s 9.8s -224ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +171 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.11 kB 5.12 kB ⚠️ +7 B
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB ⚠️ +7 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.11 kB 4.12 kB ⚠️ +5 B
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB ⚠️ +5 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js gzip 46.5 kB 46.5 kB ⚠️ +3 B
404.html gzip 1.43 kB 1.43 kB ⚠️ +2 B
hooks.html gzip 1.06 kB 1.06 kB ⚠️ +1 B
index.js gzip 46.5 kB 46.5 kB ⚠️ +4 B
link.js gzip 72 kB 72 kB ⚠️ +3 B
routerDirect.js gzip 70.3 kB 70.3 kB ⚠️ +2 B
withRouter.js gzip 70.1 kB 70.1 kB ⚠️ +4 B
Overall change 308 kB 308 kB ⚠️ +19 B

Commit: dff4aa5

@Timer Timer changed the title Fix #8655, skip rendering Head tags with undefined props Skip undefined attribute in Head Feb 3, 2020
@Timer Timer added ready to land kind: bug Confirmed bug that is on the backlog labels Feb 3, 2020
@ijjk
Copy link
Member

ijjk commented Feb 3, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13s 12.8s -209ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +171 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.11 kB 5.12 kB ⚠️ +7 B
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB ⚠️ +7 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.11 kB 4.12 kB ⚠️ +5 B
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB ⚠️ +5 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html gzip 1.02 kB 1.02 kB ⚠️ +3 B
link.html gzip 1.03 kB 1.03 kB ⚠️ +3 B
withRouter.html gzip 1.02 kB 1.02 kB ⚠️ +2 B
Overall change 3.06 kB 3.07 kB ⚠️ +8 B

Diffs

Diff for link.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-9402db5934e5e9586fbf.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-60dcd53dc0075b7cdec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for index.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-9402db5934e5e9586fbf.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-60dcd53dc0075b7cdec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for main-HASH.module.js
@@ -119,7 +119,9 @@ function reactElementToDOM(_ref) {
 
   for (var p in props) {
     if (!props.hasOwnProperty(p)) continue;
-    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue;
+    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue; // we don't render undefined props to the DOM
+
+    if (props[p] === undefined) continue;
     var attr = DOMAttributeNames[p] || p.toLowerCase();
     el.setAttribute(attr, props[p]);
   }
Diff for main-HASH.js
@@ -188,7 +188,9 @@ function reactElementToDOM(_ref) {
 
   for (var p in props) {
     if (!props.hasOwnProperty(p)) continue;
-    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue;
+    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue; // we don't render undefined props to the DOM
+
+    if (props[p] === undefined) continue;
     var attr = DOMAttributeNames[p] || p.toLowerCase();
     el.setAttribute(attr, props[p]);
   }
Diff for withRouter.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-9402db5934e5e9586fbf.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-60dcd53dc0075b7cdec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13.5s 13.1s -468ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +171 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.11 kB 5.12 kB ⚠️ +7 B
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB ⚠️ +7 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.11 kB 4.12 kB ⚠️ +5 B
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB ⚠️ +5 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js gzip 46.5 kB 46.5 kB ⚠️ +3 B
404.html gzip 1.43 kB 1.43 kB ⚠️ +2 B
hooks.html gzip 1.06 kB 1.06 kB ⚠️ +1 B
index.js gzip 46.5 kB 46.5 kB ⚠️ +4 B
link.js gzip 72 kB 72 kB ⚠️ +3 B
routerDirect.js gzip 70.3 kB 70.3 kB ⚠️ +2 B
withRouter.js gzip 70.1 kB 70.1 kB ⚠️ +4 B
Overall change 308 kB 308 kB ⚠️ +19 B

Commit: 57b7408

@ijjk
Copy link
Member

ijjk commented Feb 3, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 12.8s 12.6s -163ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +171 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.11 kB 5.12 kB ⚠️ +7 B
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB ⚠️ +7 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.11 kB 4.12 kB ⚠️ +5 B
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB ⚠️ +5 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Rendered Page Sizes Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
index.html gzip 1.02 kB 1.02 kB ⚠️ +3 B
link.html gzip 1.03 kB 1.03 kB ⚠️ +3 B
withRouter.html gzip 1.02 kB 1.02 kB ⚠️ +2 B
Overall change 3.06 kB 3.07 kB ⚠️ +8 B

Diffs

Diff for index.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-9402db5934e5e9586fbf.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-60dcd53dc0075b7cdec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for main-HASH.module.js
@@ -119,7 +119,9 @@ function reactElementToDOM(_ref) {
 
   for (var p in props) {
     if (!props.hasOwnProperty(p)) continue;
-    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue;
+    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue; // we don't render undefined props to the DOM
+
+    if (props[p] === undefined) continue;
     var attr = DOMAttributeNames[p] || p.toLowerCase();
     el.setAttribute(attr, props[p]);
   }
Diff for main-HASH.js
@@ -188,7 +188,9 @@ function reactElementToDOM(_ref) {
 
   for (var p in props) {
     if (!props.hasOwnProperty(p)) continue;
-    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue;
+    if (p === 'children' || p === 'dangerouslySetInnerHTML') continue; // we don't render undefined props to the DOM
+
+    if (props[p] === undefined) continue;
     var attr = DOMAttributeNames[p] || p.toLowerCase();
     el.setAttribute(attr, props[p]);
   }
Diff for link.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-9402db5934e5e9586fbf.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-60dcd53dc0075b7cdec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for withRouter.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-9402db5934e5e9586fbf.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-ded7357c5d2d12a3ec09.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID"}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-355bc4b3077ea9d3fc7a.js"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.c07ba8a3b0945b0f6315.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/commons.5d483f979b96e9afed5a.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.9a0caf742c992a927903.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6406830adfd759a39616.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.316cffaf82e7d78bbb63.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3e64dc8e6d2834d1522a.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-60dcd53dc0075b7cdec6.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-26647acdcc5840f8b905.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
buildDuration 13s 13.3s ⚠️ +301ms
nodeModulesSize 52.1 MB 52.1 MB ⚠️ +171 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.js gzip 5.11 kB 5.12 kB ⚠️ +7 B
webpack-HASH.js gzip 746 B 746 B
4952ddcd88e7..54d3.js gzip 4.68 kB 4.68 kB
commons.HASH.js gzip 4.06 kB 4.06 kB
de003c3a9d30..d6ae.js gzip 16.2 kB 16.2 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 69.9 kB 69.9 kB ⚠️ +7 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
main-HASH.module.js gzip 4.11 kB 4.12 kB ⚠️ +5 B
webpack-HASH..dule.js gzip 746 B 746 B
4952ddcd88e7..dule.js gzip 5.56 kB 5.56 kB
de003c3a9d30..dule.js gzip 15.1 kB 15.1 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 64.6 kB 64.6 kB ⚠️ +5 B
Legacy Client Bundles (polyfills)
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
polyfills-HASH.js gzip 4.76 kB 4.76 kB
Overall change 4.76 kB 4.76 kB
Client Pages
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.js gzip 1.15 kB 1.15 kB
_error.js gzip 4.07 kB 4.07 kB
hooks.js gzip 779 B 779 B
index.js gzip 222 B 222 B
link.js gzip 2.89 kB 2.89 kB
routerDirect.js gzip 283 B 283 B
withRouter.js gzip 282 B 282 B
Overall change 9.68 kB 9.68 kB
Client Pages Modern
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_app.module.js gzip 576 B 576 B
_error.module.js gzip 3.06 kB 3.06 kB
hooks.module.js gzip 371 B 371 B
index.module.js gzip 212 B 212 B
link.module.js gzip 2.46 kB 2.46 kB
routerDirect..dule.js gzip 273 B 273 B
withRouter.m..dule.js gzip 272 B 272 B
Overall change 7.22 kB 7.22 kB
Client Build Manifests
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_buildManifest.js gzip 61 B 61 B
_buildManife..dule.js gzip 61 B 61 B
Overall change 122 B 122 B
Serverless bundles Overall increase ⚠️
zeit/next.js canary lachlanjc/next.js fix-meta-undefined Change
_error.js gzip 46.5 kB 46.5 kB ⚠️ +3 B
404.html gzip 1.43 kB 1.43 kB ⚠️ +2 B
hooks.html gzip 1.06 kB 1.06 kB ⚠️ +1 B
index.js gzip 46.5 kB 46.5 kB ⚠️ +4 B
link.js gzip 72 kB 72 kB ⚠️ +3 B
routerDirect.js gzip 70.3 kB 70.3 kB ⚠️ +2 B
withRouter.js gzip 70.1 kB 70.1 kB ⚠️ +4 B
Overall change 308 kB 308 kB ⚠️ +19 B

Commit: 2af71a2

@Timer Timer merged commit c480c37 into vercel:canary Feb 3, 2020
@lachlanjc lachlanjc deleted the fix-meta-undefined branch February 3, 2020 20:02
@lachlanjc
Copy link
Contributor Author

Finally done! Thanks for the help 💝

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
kind: bug Confirmed bug that is on the backlog
Projects
None yet
Development

Successfully merging this pull request may close these issues.

meta tag renders undefined
4 participants