79016b879f
## Summary This PR adds a new `worker` strategy to the `<Script />` component that automatically relocates and executes the script in a web worker. ```jsx <Script strategy="worker" ... /> ``` [Partytown](https://partytown.builder.io/) is used under the hood to provide this functionality. ## Behavior - This will land as an experimental feature and will only work behind an opt-in flag in `next.config.js`: ```js experimental: { nextScriptWorkers: true } ``` - This setup use a similar approach to how ESLint and Typescript is used in Next.js by showing an error to the user to install the dependency locally themselves if they've enabled the experimental `nextScriptWorkers` flag. <img width="1068" alt="Screen Shot 2022-03-03 at 2 33 13 PM" src="https://user-images.githubusercontent.com/12476932/156639227-42af5353-a2a6-4126-936e-269112809651.png"> - For Partytown to work, a number of static files must be served directly from the site (see [docs](https://partytown.builder.io/copy-library-files)). In this PR, these files are automatically copied to a `~partytown` directory in `.next/static` during `next build` and `next dev` if the `nextScriptWorkers` flag is set to true. ## Checklist - [X] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [X] Related issues linked using `fixes #number` - [X] Integration tests added - [X] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. This PR fixes #31517. |
||
---|---|---|
.. | ||
eslint | ||
helpers | ||
typescript | ||
web | ||
chalk.ts | ||
coalesced-function.ts | ||
compile-error.ts | ||
constants.ts | ||
detect-typo.ts | ||
fatal-error.ts | ||
file-exists.ts | ||
find-config.ts | ||
find-pages-dir.ts | ||
get-package-version.ts | ||
get-project-dir.ts | ||
has-necessary-dependencies.ts | ||
install-dependencies.ts | ||
interop-default.ts | ||
is-error.ts | ||
is-serializable-props.ts | ||
is-yarn.ts | ||
load-custom-routes.ts | ||
non-nullable.ts | ||
oxford-comma-list.ts | ||
pretty-bytes.ts | ||
recursive-copy.ts | ||
recursive-delete.ts | ||
recursive-readdir.ts | ||
verify-partytown-setup.ts | ||
verifyAndLint.ts | ||
verifyTypeScriptSetup.ts | ||
worker.ts |