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

Add <link> attributes in proper order #16319

Merged
merged 2 commits into from
Aug 18, 2020

Conversation

Timer
Copy link
Member

@Timer Timer commented Aug 18, 2020

  1. as should be set before rel in case of preload or prefetch
  2. href should be after onload and onerror

@ijjk
Copy link
Member

ijjk commented Aug 18, 2020

Stats from current PR

Default Server Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
buildDuration 13.6s 13.4s -140ms
nodeModulesSize 57.6 MB 57.6 MB ⚠️ +202 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
/ failed reqs 0 0
/ total time (seconds) 2.573 2.613 ⚠️ +0.04
/ avg req/sec 971.54 956.62 ⚠️ -14.92
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.539 1.652 ⚠️ +0.11
/error-in-render avg req/sec 1624.39 1513.2 ⚠️ -111.19
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
677f882d2ed8..4e55.js gzip 10.2 kB 10.2 kB
framework.HASH.js gzip 39 kB 39 kB
main-1ea360d..8d32.js gzip 7.16 kB 7.16 kB -1 B
webpack-e067..f178.js gzip 751 B 751 B
Overall change 57.1 kB 57.1 kB -1 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
677f882d2ed8..dule.js gzip 6.11 kB 6.11 kB
framework.HA..dule.js gzip 39 kB 39 kB
main-ece3b39..dule.js gzip 6.18 kB 6.18 kB ⚠️ +1 B
webpack-07c5..dule.js gzip 751 B 751 B
Overall change 52 kB 52 kB ⚠️ +1 B
Legacy Client Bundles (polyfills)
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
polyfills-4b..e242.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_app-9a0b9e1..b37e.js gzip 1.28 kB 1.28 kB
_error-1464c..a26f.js gzip 3.44 kB 3.44 kB
hooks-89731c..c609.js gzip 887 B 887 B
index-17468f..5d83.js gzip 227 B 227 B
link-000f151..65d4.js gzip 1.29 kB 1.29 kB
routerDirect..924c.js gzip 284 B 284 B
withRouter-7..c13d.js gzip 284 B 284 B
Overall change 7.69 kB 7.69 kB
Client Pages Modern
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_app-75d3a82..dule.js gzip 625 B 625 B
_error-e550f..dule.js gzip 2.29 kB 2.29 kB
hooks-cbf13f..dule.js gzip 387 B 387 B
index-b9a643..dule.js gzip 226 B 226 B
link-4cfda7a..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-f..dule.js gzip 282 B 282 B
Overall change 5.35 kB 5.35 kB
Client Build Manifests
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_buildManifest.js gzip 322 B 322 B
_buildManife..dule.js gzip 329 B 329 B
Overall change 651 B 651 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
index.html gzip 947 B 947 B
link.html gzip 952 B 953 B ⚠️ +1 B
withRouter.html gzip 938 B 938 B
Overall change 2.84 kB 2.84 kB ⚠️ +1 B

Diffs

Diff for main-54a7068..a0.module.js
@@ -1288,12 +1288,14 @@
         return [
           link,
           new Promise((res, rej) => {
-            link.crossOrigin = "anonymous";
-            link.href = href;
-            link.rel = rel;
+            // The order of property assignment here is intentional:
             if (as) link.as = as;
+            link.rel = rel;
+            link.crossOrigin = "anonymous";
             link.onload = res;
-            link.onerror = rej;
+            link.onerror = rej; // `href` should always be last:
+
+            link.href = href;
           })
         ];
       }
Diff for main-e7e4cfa..8d51fd9ff.js
@@ -1668,12 +1668,14 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return [
           link,
           new Promise(function(res, rej) {
-            link.crossOrigin = "anonymous";
-            link.href = href;
-            link.rel = rel;
+            // The order of property assignment here is intentional:
             if (as) link.as = as;
+            link.rel = rel;
+            link.crossOrigin = "anonymous";
             link.onload = res;
-            link.onerror = rej;
+            link.onerror = rej; // `href` should always be last:
+
+            link.href = href;
           })
         ];
       }
Diff for index.html
@@ -6,7 +6,7 @@
     <meta name="next-head-count" content="2" />
     <link
       rel="preload"
-      href="/_next/static/chunks/main-54a7068203cb3f136aa0.module.js"
+      href="/_next/static/chunks/main-0305582eab49fbd802b4.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -81,13 +81,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-e7e4cfa42d88d51fd9ff.js"
+      src="/_next/static/chunks/main-696472a0828fa48b3b0a.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-54a7068203cb3f136aa0.module.js"
+      src="/_next/static/chunks/main-0305582eab49fbd802b4.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for link.html
@@ -6,7 +6,7 @@
     <meta name="next-head-count" content="2" />
     <link
       rel="preload"
-      href="/_next/static/chunks/main-54a7068203cb3f136aa0.module.js"
+      href="/_next/static/chunks/main-0305582eab49fbd802b4.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -86,13 +86,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-e7e4cfa42d88d51fd9ff.js"
+      src="/_next/static/chunks/main-696472a0828fa48b3b0a.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-54a7068203cb3f136aa0.module.js"
+      src="/_next/static/chunks/main-0305582eab49fbd802b4.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for withRouter.html
@@ -6,7 +6,7 @@
     <meta name="next-head-count" content="2" />
     <link
       rel="preload"
-      href="/_next/static/chunks/main-54a7068203cb3f136aa0.module.js"
+      href="/_next/static/chunks/main-0305582eab49fbd802b4.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -81,13 +81,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-e7e4cfa42d88d51fd9ff.js"
+      src="/_next/static/chunks/main-696472a0828fa48b3b0a.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-54a7068203cb3f136aa0.module.js"
+      src="/_next/static/chunks/main-0305582eab49fbd802b4.module.js"
       async=""
       crossorigin="anonymous"
       type="module"

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
buildDuration 15.2s 15.1s -142ms
nodeModulesSize 57.6 MB 57.6 MB ⚠️ +202 B
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
677f882d2ed8..4e55.js gzip 10.2 kB 10.2 kB
framework.HASH.js gzip 39 kB 39 kB
main-1ea360d..8d32.js gzip 7.16 kB N/A N/A
webpack-e067..f178.js gzip 751 B 751 B
main-40f29de..36f6.js gzip N/A 7.16 kB N/A
Overall change 57.1 kB 57.1 kB -1 B
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
677f882d2ed8..dule.js gzip 6.11 kB 6.11 kB
framework.HA..dule.js gzip 39 kB 39 kB
main-ece3b39..dule.js gzip 6.18 kB N/A N/A
webpack-07c5..dule.js gzip 751 B 751 B
main-c78a108..dule.js gzip N/A 6.18 kB N/A
Overall change 52 kB 52 kB ⚠️ +1 B
Legacy Client Bundles (polyfills)
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
polyfills-4b..e242.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_app-9a0b9e1..b37e.js gzip 1.28 kB 1.28 kB
_error-1464c..a26f.js gzip 3.44 kB 3.44 kB
hooks-89731c..c609.js gzip 887 B 887 B
index-17468f..5d83.js gzip 227 B 227 B
link-000f151..65d4.js gzip 1.29 kB 1.29 kB
routerDirect..924c.js gzip 284 B 284 B
withRouter-7..c13d.js gzip 284 B 284 B
Overall change 7.69 kB 7.69 kB
Client Pages Modern
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_app-75d3a82..dule.js gzip 625 B 625 B
_error-e550f..dule.js gzip 2.29 kB 2.29 kB
hooks-cbf13f..dule.js gzip 387 B 387 B
index-b9a643..dule.js gzip 226 B 226 B
link-4cfda7a..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-f..dule.js gzip 282 B 282 B
Overall change 5.35 kB 5.35 kB
Client Build Manifests
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_buildManifest.js gzip 322 B 322 B
_buildManife..dule.js gzip 329 B 329 B
Overall change 651 B 651 B
Serverless bundles
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_error.js 1.03 MB 1.03 MB
404.html 4.18 kB 4.18 kB
hooks.html 3.82 kB 3.82 kB
index.js 1.03 MB 1.03 MB
link.js 1.07 MB 1.07 MB
routerDirect.js 1.07 MB 1.07 MB
withRouter.js 1.07 MB 1.07 MB
Overall change 5.27 MB 5.27 MB
Commit: 408122a

@ijjk
Copy link
Member

ijjk commented Aug 18, 2020

Stats from current PR

Default Server Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
buildDuration 13s 13.2s ⚠️ +133ms
nodeModulesSize 57.6 MB 57.6 MB ⚠️ +202 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
/ failed reqs 0 0
/ total time (seconds) 2.494 2.466 -0.03
/ avg req/sec 1002.29 1013.9 +11.61
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.459 1.5 ⚠️ +0.04
/error-in-render avg req/sec 1713.95 1667.2 ⚠️ -46.75
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
677f882d2ed8..4e55.js gzip 10.2 kB 10.2 kB
framework.HASH.js gzip 39 kB 39 kB
main-59b27f3..ef53.js gzip 7.18 kB 7.18 kB -1 B
webpack-e067..f178.js gzip 751 B 751 B
Overall change 57.1 kB 57.1 kB -1 B
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
677f882d2ed8..dule.js gzip 6.11 kB 6.11 kB
framework.HA..dule.js gzip 39 kB 39 kB
main-8d09a3d..dule.js gzip 6.2 kB 6.2 kB
webpack-07c5..dule.js gzip 751 B 751 B
Overall change 52 kB 52 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
polyfills-4b..e242.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_app-9a0b9e1..b37e.js gzip 1.28 kB 1.28 kB
_error-1464c..a26f.js gzip 3.44 kB 3.44 kB
hooks-89731c..c609.js gzip 887 B 887 B
index-17468f..5d83.js gzip 227 B 227 B
link-000f151..65d4.js gzip 1.29 kB 1.29 kB
routerDirect..924c.js gzip 284 B 284 B
withRouter-7..c13d.js gzip 284 B 284 B
Overall change 7.69 kB 7.69 kB
Client Pages Modern
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_app-75d3a82..dule.js gzip 625 B 625 B
_error-e550f..dule.js gzip 2.29 kB 2.29 kB
hooks-cbf13f..dule.js gzip 387 B 387 B
index-b9a643..dule.js gzip 226 B 226 B
link-4cfda7a..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-f..dule.js gzip 282 B 282 B
Overall change 5.35 kB 5.35 kB
Client Build Manifests
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_buildManifest.js gzip 322 B 322 B
_buildManife..dule.js gzip 329 B 329 B
Overall change 651 B 651 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
index.html gzip 948 B 948 B
link.html gzip 954 B 954 B
withRouter.html gzip 941 B 940 B -1 B
Overall change 2.84 kB 2.84 kB -1 B

Diffs

Diff for main-9755f62..359c1b2c3.js
@@ -1675,12 +1675,14 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
         return [
           link,
           new Promise(function(res, rej) {
-            link.crossOrigin = "anonymous";
-            link.href = href;
-            link.rel = rel;
+            // The order of property assignment here is intentional:
             if (as) link.as = as;
+            link.rel = rel;
+            link.crossOrigin = "anonymous";
             link.onload = res;
-            link.onerror = rej;
+            link.onerror = rej; // `href` should always be last:
+
+            link.href = href;
           })
         ];
       }
Diff for main-a040764..8a.module.js
@@ -1295,12 +1295,14 @@
         return [
           link,
           new Promise((res, rej) => {
-            link.crossOrigin = "anonymous";
-            link.href = href;
-            link.rel = rel;
+            // The order of property assignment here is intentional:
             if (as) link.as = as;
+            link.rel = rel;
+            link.crossOrigin = "anonymous";
             link.onload = res;
-            link.onerror = rej;
+            link.onerror = rej; // `href` should always be last:
+
+            link.href = href;
           })
         ];
       }
Diff for index.html
@@ -6,7 +6,7 @@
     <meta name="next-head-count" content="2" />
     <link
       rel="preload"
-      href="/_next/static/chunks/main-a040764f50821ed5bf8a.module.js"
+      href="/_next/static/chunks/main-a4f3888a07325cea7a29.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -81,13 +81,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-9755f627c01359c1b2c3.js"
+      src="/_next/static/chunks/main-028f2c2e8ee1f6e2114a.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-a040764f50821ed5bf8a.module.js"
+      src="/_next/static/chunks/main-a4f3888a07325cea7a29.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for link.html
@@ -6,7 +6,7 @@
     <meta name="next-head-count" content="2" />
     <link
       rel="preload"
-      href="/_next/static/chunks/main-a040764f50821ed5bf8a.module.js"
+      href="/_next/static/chunks/main-a4f3888a07325cea7a29.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -86,13 +86,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-9755f627c01359c1b2c3.js"
+      src="/_next/static/chunks/main-028f2c2e8ee1f6e2114a.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-a040764f50821ed5bf8a.module.js"
+      src="/_next/static/chunks/main-a4f3888a07325cea7a29.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for withRouter.html
@@ -6,7 +6,7 @@
     <meta name="next-head-count" content="2" />
     <link
       rel="preload"
-      href="/_next/static/chunks/main-a040764f50821ed5bf8a.module.js"
+      href="/_next/static/chunks/main-a4f3888a07325cea7a29.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -81,13 +81,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-9755f627c01359c1b2c3.js"
+      src="/_next/static/chunks/main-028f2c2e8ee1f6e2114a.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-a040764f50821ed5bf8a.module.js"
+      src="/_next/static/chunks/main-a4f3888a07325cea7a29.module.js"
       async=""
       crossorigin="anonymous"
       type="module"

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
buildDuration 14.8s 14.4s -371ms
nodeModulesSize 57.6 MB 57.6 MB ⚠️ +202 B
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
677f882d2ed8..4e55.js gzip 10.2 kB 10.2 kB
framework.HASH.js gzip 39 kB 39 kB
main-59b27f3..ef53.js gzip 7.18 kB N/A N/A
webpack-e067..f178.js gzip 751 B 751 B
main-ac72f60..d996.js gzip N/A 7.18 kB N/A
Overall change 57.1 kB 57.1 kB -1 B
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
677f882d2ed8..dule.js gzip 6.11 kB 6.11 kB
framework.HA..dule.js gzip 39 kB 39 kB
main-8d09a3d..dule.js gzip 6.2 kB N/A N/A
webpack-07c5..dule.js gzip 751 B 751 B
main-009e4e9..dule.js gzip N/A 6.2 kB N/A
Overall change 52 kB 52 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
polyfills-4b..e242.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_app-9a0b9e1..b37e.js gzip 1.28 kB 1.28 kB
_error-1464c..a26f.js gzip 3.44 kB 3.44 kB
hooks-89731c..c609.js gzip 887 B 887 B
index-17468f..5d83.js gzip 227 B 227 B
link-000f151..65d4.js gzip 1.29 kB 1.29 kB
routerDirect..924c.js gzip 284 B 284 B
withRouter-7..c13d.js gzip 284 B 284 B
Overall change 7.69 kB 7.69 kB
Client Pages Modern
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_app-75d3a82..dule.js gzip 625 B 625 B
_error-e550f..dule.js gzip 2.29 kB 2.29 kB
hooks-cbf13f..dule.js gzip 387 B 387 B
index-b9a643..dule.js gzip 226 B 226 B
link-4cfda7a..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-f..dule.js gzip 282 B 282 B
Overall change 5.35 kB 5.35 kB
Client Build Manifests
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_buildManifest.js gzip 322 B 322 B
_buildManife..dule.js gzip 329 B 329 B
Overall change 651 B 651 B
Serverless bundles
vercel/next.js canary Timer/next.js hotfix/reorder-link-attributes Change
_error.js 1.03 MB 1.03 MB
404.html 4.18 kB 4.18 kB
hooks.html 3.82 kB 3.82 kB
index.js 1.03 MB 1.03 MB
link.js 1.07 MB 1.07 MB
routerDirect.js 1.07 MB 1.07 MB
withRouter.js 1.07 MB 1.07 MB
Overall change 5.27 MB 5.27 MB
Commit: dc00e6f

@kodiakhq kodiakhq bot merged commit ec07bf1 into vercel:canary Aug 18, 2020
@Timer Timer deleted the hotfix/reorder-link-attributes branch August 18, 2020 18:53
m-lautenbach pushed a commit to m-lautenbach/next.js that referenced this pull request Aug 20, 2020
1. `as` should be set before `rel` in case of `preload` or `prefetch`
2. `href` should be after `onload` and `onerror`
@vercel vercel locked as resolved and limited conversation to collaborators Jan 30, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants