-
Notifications
You must be signed in to change notification settings - Fork 30.2k
Fix <noscript> children in next/head #18108
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
Conversation
Stats from current PRDefault Server Mode (Decrease detected ✓)General Overall increase
|
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| buildDuration | 11.2s | 11.1s | -30ms |
| nodeModulesSize | 91.2 MB | 91.2 MB |
Page Load Tests Overall decrease ⚠️
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| / failed reqs | 0 | 0 | ✓ |
| / total time (seconds) | 2.107 | 2.099 | -0.01 |
| / avg req/sec | 1186.59 | 1190.8 | +4.21 |
| /error-in-render failed reqs | 0 | 0 | ✓ |
| /error-in-render total time (seconds) | 1.148 | 1.163 | |
| /error-in-render avg req/sec | 2177.63 | 2148.72 |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| 677f882d2ed8..35e7.js gzip | 11.1 kB | 11.1 kB | ✓ |
| framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
| main-23d7afb..be6f.js gzip | 7.34 kB | 7.34 kB | ✓ |
| webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
| Overall change | 58.1 kB | 58.1 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| 677f882d2ed8..dule.js gzip | 6.94 kB | 6.94 kB | ✓ |
| framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
| main-ccae7c3..dule.js gzip | 6.32 kB | 6.32 kB | ✓ |
| webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
| Overall change | 53 kB | 53 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| _app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
| _error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
| hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
| index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
| link-89ad9e7..25bb.js gzip | 1.34 kB | 1.34 kB | ✓ |
| routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
| withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
| Overall change | 7.74 kB | 7.74 kB | ✓ |
Client Pages Modern
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| _app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
| _error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
| hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
| index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
| link-aeb707b..dule.js gzip | 1.29 kB | 1.29 kB | ✓ |
| routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
| withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
| Overall change | 5.39 kB | 5.39 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | tywmick/next.js noscript-in-head | 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
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| index.html gzip | 1 kB | 1 kB | ✓ |
| link.html gzip | 1.01 kB | 1.01 kB | ✓ |
| withRouter.html gzip | 994 B | 994 B | ✓ |
| Overall change | 3.01 kB | 3.01 kB | ✓ |
Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| buildDuration | 12.3s | 12.3s | |
| nodeModulesSize | 91.2 MB | 91.2 MB |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| 677f882d2ed8..35e7.js gzip | 11.1 kB | 11.1 kB | ✓ |
| framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
| main-23d7afb..be6f.js gzip | 7.34 kB | 7.34 kB | ✓ |
| webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
| Overall change | 58.1 kB | 58.1 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| 677f882d2ed8..dule.js gzip | 6.94 kB | 6.94 kB | ✓ |
| framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
| main-ccae7c3..dule.js gzip | 6.32 kB | 6.32 kB | ✓ |
| webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
| Overall change | 53 kB | 53 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| _app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
| _error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
| hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
| index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
| link-89ad9e7..25bb.js gzip | 1.34 kB | 1.34 kB | ✓ |
| routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
| withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
| Overall change | 7.74 kB | 7.74 kB | ✓ |
Client Pages Modern
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| _app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
| _error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
| hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
| index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
| link-aeb707b..dule.js gzip | 1.29 kB | 1.29 kB | ✓ |
| routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
| withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
| Overall change | 5.39 kB | 5.39 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 322 B | 322 B | ✓ |
| _buildManife..dule.js gzip | 329 B | 329 B | ✓ |
| Overall change | 651 B | 651 B | ✓ |
Serverless bundles Overall decrease ✓
| vercel/next.js canary | tywmick/next.js noscript-in-head | Change | |
|---|---|---|---|
| _error.js | 1.06 MB | 1.06 MB | -3 B |
| 404.html | 4.73 kB | 4.73 kB | ✓ |
| hooks.html | 3.92 kB | 3.92 kB | ✓ |
| index.js | 1.06 MB | 1.06 MB | -3 B |
| link.js | 1.1 MB | 1.1 MB | -3 B |
| routerDirect.js | 1.1 MB | 1.1 MB | -3 B |
| withRouter.js | 1.1 MB | 1.1 MB | -3 B |
| Overall change | 5.42 MB | 5.42 MB | -15 B |
Failing test suitesCommit: 64a0cc2 test/integration/font-optimization/test/index.test.js
Expand output● Font optimization for SSR apps › should minify the css ● Font optimization for serverless apps › should minify the css ● Font optimization for emulated serverless apps › should minify the css |
|
Not sure what's going on with the font optimization test suite. On my end it's saying that all 15 tests are passing, but it's also getting stuck after it says the tests have passed. Here's my output when I run It stalls at the end of this, so that I have to |
|
Going to close this as it's stale and has merge conflicts. Could you open a new PR including integration tests? Thanks! |
This is related to #17770 (and #17920) in that it deals with a change introduced in #16758, but I ran into a slightly different issue. Rather than trying to add a React component to next/head, I've been putting a
<noscript>element with a<meta>child in my next/head.Here's a
Shortcutcomponent I've been using on a static site to make client-side redirects:I put the
<meta httpEquiv="refresh"inside a<noscript>as a fallback—if JavaScript is enabled, it'd rather use the code in myuseEffectfunction to redirect the user.This worked fine until v9.5.4, when this bit was added:
next.js/packages/next/next-server/server/render.tsx
Lines 260 to 275 in 755934d
...and now, when my
<noscript><meta ... /></noscript>encounters that, I get the following error:Apparently when
childrenis that<meta>element, it failstypeof children === 'string', so it attempts to callchildren.join(''), and DOM elements have nojoin()method.All that to say, here's my little fix: changing...
...to...
Does that accidentally miss any edge cases? That is, are we expecting any situations when
childrenisn't an array but does have ajoin()method we want to use? If we need to be ready for something array-like that failsArray.isArray(children), I could change that part to"join" in childreninstead. 🤷🏼♂️