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

Adds inline script functionality to next/script for worker and beforeInteractive strategies #36364

Merged
merged 5 commits into from Apr 29, 2022

Conversation

housseindjirdeh
Copy link
Collaborator

@housseindjirdeh housseindjirdeh commented Apr 21, 2022

@ijjk
Copy link
Member

ijjk commented Apr 21, 2022

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
buildDuration 15s 14.9s -126ms
buildDurationCached 6.1s 6.1s -10ms
nodeModulesSize 463 MB 463 MB ⚠️ +4.05 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
/ failed reqs 0 0
/ total time (seconds) 3.459 3.461 0
/ avg req/sec 722.68 722.39 ⚠️ -0.29
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.124 1.166 ⚠️ +0.04
/error-in-render avg req/sec 2223.3 2143.41 ⚠️ -79.89
Client Bundles (main, webpack) Overall decrease ✓
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
925.HASH.js gzip 179 B 179 B
framework-HASH.js gzip 42 kB 42 kB
main-HASH.js gzip 28.6 kB 28.6 kB -7 B
webpack-HASH.js gzip 1.44 kB 1.44 kB
Overall change 72.3 kB 72.3 kB -7 B
Legacy Client Bundles (polyfills)
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
_app-HASH.js gzip 1.36 kB 1.36 kB
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 308 B 308 B
css-HASH.js gzip 327 B 327 B
dynamic-HASH.js gzip 3.08 kB 3.08 kB
head-HASH.js gzip 359 B 359 B
hooks-HASH.js gzip 920 B 920 B
image-HASH.js gzip 5.71 kB 5.71 kB
index-HASH.js gzip 263 B 263 B
link-HASH.js gzip 2.64 kB 2.64 kB
routerDirect..HASH.js gzip 320 B 320 B
script-HASH.js gzip 391 B 391 B
withRouter-HASH.js gzip 318 B 318 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 16.3 kB 16.3 kB
Client Build Manifests
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
_buildManifest.js gzip 459 B 459 B
Overall change 459 B 459 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
index.html gzip 531 B 533 B ⚠️ +2 B
link.html gzip 544 B 546 B ⚠️ +2 B
withRouter.html gzip 526 B 528 B ⚠️ +2 B
Overall change 1.6 kB 1.61 kB ⚠️ +6 B

Diffs

Diff for main-HASH.js
@@ -3198,14 +3198,12 @@
           src = _src === void 0 ? "" : _src,
           _onLoad = props.onLoad,
           onLoad = _onLoad === void 0 ? function() {} : _onLoad,
-          dangerouslySetInnerHTML = props.dangerouslySetInnerHTML,
           _strategy = props.strategy,
           strategy = _strategy === void 0 ? "afterInteractive" : _strategy,
           onError = props.onError,
           restProps = _objectWithoutProperties(props, [
             "src",
             "onLoad",
-            "dangerouslySetInnerHTML",
             "strategy",
             "onError"
           ]);
Diff for index.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+      src="/_next/static/chunks/main-0dbd47e46b216587.js"
       defer=""
     ></script>
     <script
Diff for link.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+      src="/_next/static/chunks/main-0dbd47e46b216587.js"
       defer=""
     ></script>
     <script
Diff for withRouter.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+      src="/_next/static/chunks/main-0dbd47e46b216587.js"
       defer=""
     ></script>
     <script

Default Build with SWC (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
buildDuration 17s 17.1s ⚠️ +57ms
buildDurationCached 6s 6.1s ⚠️ +47ms
nodeModulesSize 463 MB 463 MB ⚠️ +4.05 kB
Page Load Tests Overall increase ✓
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
/ failed reqs 0 0
/ total time (seconds) 3.473 3.463 -0.01
/ avg req/sec 719.92 721.87 +1.95
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.134 1.133 0
/error-in-render avg req/sec 2204.11 2205.76 +1.65
Client Bundles (main, webpack) Overall decrease ✓
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
925.HASH.js gzip 178 B 178 B
framework-HASH.js gzip 42.2 kB 42.2 kB
main-HASH.js gzip 29.1 kB 29.1 kB -6 B
webpack-HASH.js gzip 1.45 kB 1.45 kB
Overall change 72.9 kB 72.9 kB -6 B
Legacy Client Bundles (polyfills)
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
_app-HASH.js gzip 1.35 kB 1.35 kB
_error-HASH.js gzip 179 B 179 B
amp-HASH.js gzip 312 B 312 B
css-HASH.js gzip 324 B 324 B
dynamic-HASH.js gzip 3.08 kB 3.08 kB
head-HASH.js gzip 357 B 357 B
hooks-HASH.js gzip 921 B 921 B
image-HASH.js gzip 5.76 kB 5.76 kB
index-HASH.js gzip 261 B 261 B
link-HASH.js gzip 2.76 kB 2.76 kB
routerDirect..HASH.js gzip 322 B 322 B
script-HASH.js gzip 392 B 392 B
withRouter-HASH.js gzip 317 B 317 B
85e02e95b279..7e3.css gzip 107 B 107 B
Overall change 16.5 kB 16.5 kB
Client Build Manifests
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
_buildManifest.js gzip 458 B 458 B
Overall change 458 B 458 B
Rendered Page Sizes
vercel/next.js canary housseindjirdeh/next.js bug/#36318 Change
index.html gzip 529 B 529 B
link.html gzip 543 B 543 B
withRouter.html gzip 526 B 526 B
Overall change 1.6 kB 1.6 kB

Diffs

Diff for main-HASH.js
@@ -3198,14 +3198,12 @@
           src = _src === void 0 ? "" : _src,
           _onLoad = props.onLoad,
           onLoad = _onLoad === void 0 ? function() {} : _onLoad,
-          dangerouslySetInnerHTML = props.dangerouslySetInnerHTML,
           _strategy = props.strategy,
           strategy = _strategy === void 0 ? "afterInteractive" : _strategy,
           onError = props.onError,
           restProps = _objectWithoutProperties(props, [
             "src",
             "onLoad",
-            "dangerouslySetInnerHTML",
             "strategy",
             "onError"
           ]);
Diff for index.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+      src="/_next/static/chunks/main-0dbd47e46b216587.js"
       defer=""
     ></script>
     <script
Diff for link.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+      src="/_next/static/chunks/main-0dbd47e46b216587.js"
       defer=""
     ></script>
     <script
Diff for withRouter.html
@@ -19,7 +19,7 @@
       defer=""
     ></script>
     <script
-      src="/_next/static/chunks/main-ac58a1e29dd8158c.js"
+      src="/_next/static/chunks/main-0dbd47e46b216587.js"
       defer=""
     ></script>
     <script
Commit: cb78c58

@@ -500,6 +537,44 @@ export class Head extends Component<
]
}

getBeforeInteractiveInlineScripts() {
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@janicklas-ralph Would it make more sense if I just move the src or dangerouslyInnerHtml logic I wrote in getPreNextWorkerScripts to a separate function and reuse that for beforeInteractive scripts? We wouldn't need this separate getter if we did that.

Copy link
Contributor

Choose a reason for hiding this comment

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

Sure. For beforeInteractive we have two functions, one for inline and one for regular scripts

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Noted. As discussed, the two functions are needed here because of ordering so I'll leave it as is :)

@janicklas-ralph
Copy link
Contributor

fixes #26343 #26591 #26343 #26240

@housseindjirdeh housseindjirdeh marked this pull request as ready for review April 25, 2022 19:38
@housseindjirdeh housseindjirdeh changed the title Adds inline script functionality to next/script worker strategy Adds inline script functionality to next/script for worker and beforeInteractive strategies Apr 25, 2022
@ijjk
Copy link
Member

ijjk commented Apr 26, 2022

Failing test suites

Commit: 3537e0d

yarn testheadless test/e2e/next-script-worker-strategy/index.test.ts

  • experimental.nextScriptWorkers: true with invalid script > Warning is shown when no src or inline script is provided
Expand output

● experimental.nextScriptWorkers: true with invalid script › Warning is shown when no src or inline script is provided

expect(received).toContain(expected) // indexOf

Expected substring: "Warning: Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script"
Received string:    "yarn run v1.22.18
$ /tmp/next-install-1650997391882/node_modules/.bin/next
ready - started server on 0.0.0.0:41375, url: http://localhost:41375
"

  358 |   it('Warning is shown when no src or inline script is provided', async () => {
  359 |     console.log(next.cliOutput)
> 360 |     expect(next.cliOutput).toContain(
      |                            ^
  361 |       'Warning: Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script'
  362 |     )
  363 |   })

  at Object.<anonymous> (e2e/next-script-worker-strategy/index.test.ts:360:28)
      at runMicrotasks (<anonymous>)

Read more about building and testing Next.js in contributing.md.

@kodiakhq kodiakhq bot merged commit fd2ba11 into vercel:canary Apr 29, 2022
@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 30, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
created-by: Chrome Aurora PRs by the Google Chrome team: https://web.dev/aurora type: next
Projects
None yet
4 participants