feat: output workers to client assets - #16870
Closed
willfarrell wants to merge 2 commits into
Closed
Conversation
|
Install the latest version of pnpm add https://pkg.svelte.dev/@sveltejs/kit/c/e4cc2e90268c6cdb868b04e042d7351f1e44fe20Open in Note This PR is from a fork. A maintainer must approve approve each commit before it can be built and installed. |
🦋 Changeset detectedLatest commit: e4cc2e9 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Member
|
Thanks for the PR. Do you mind rebasing this on the |
Signed-off-by: will Farrell <willfarrell@proton.me>
6 tasks
Nic-Polumeyv
changed the base branch from
main
to
restore-worker-output-naming
August 25, 2026 02:23
Nic-Polumeyv
force-pushed
the
feature/worker-client-output
branch
from
August 25, 2026 02:23
a605154 to
e4cc2e9
Compare
6 tasks
Contributor
Author
|
Closing, replaced by #16929 (based off version-3) |
teemingc
added a commit
that referenced
this pull request
Aug 25, 2026
> Clone of #16870, but bases off version-3 Worker chunks from `?worker` and `?worker&url` imports are emitted to `{appDir}/immutable/workers/`. In two cases, only the SSR build emits them: when every page has `csr: false` (the client build is skipped entirely), and when the import lives in a server-only module such as `+page.server.js`. The files then exist only in `output/server/`, which adapters never publish, so the worker URL returns a 404 in production. The build already handles this problem for `immutable/assets/` by copying server-emitted files into `output/client/`. This PR applies the same copy to `immutable/workers/` in both build branches. Filenames are content-hashed, so copying over an identical file is harmless, and apps without workers are unaffected. Tests: the `basics` app covers the server-only import case by checking that the worker file lands in the client output. The `amp` app covers the skipped client build case by fetching the worker URL and expecting a 200. Both tests fail without the fix. Related: #12438. That issue also stems from worker files being overlooked, but it concerns the `$service-worker` `build` list and is not resolved here. --- ### Please don't delete this checklist! Before submitting the PR, please make sure you do the following: - [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. ### Tests - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` and `pnpm check` ### Changesets - [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running `pnpm changeset` and following the prompts. Changesets that add features should be `minor` and those that fix bugs should be `patch`. Please prefix changeset messages with `feat:`, `fix:`, or `chore:`. ### Edits - [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed. --------- Signed-off-by: will Farrell <willfarrell@proton.me> Co-authored-by: Tee Ming <chewteeming01@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Worker chunks from
?workerand?worker&urlimports are emitted to{appDir}/immutable/workers/. In two cases, only the SSR build emits them: when every page hascsr: false(the client build is skipped entirely), and when the import lives in a server-only module such as+page.server.js. The files then exist only inoutput/server/, which adapters never publish, so the worker URL returns a 404 in production.The build already handles this problem for
immutable/assets/by copying server-emitted files intooutput/client/. This PR applies the same copy toimmutable/workers/in both build branches. Filenames are content-hashed, so copying over an identical file is harmless, and apps without workers are unaffected.Tests: the
basicsapp covers the server-only import case by checking that the worker file lands in the client output. Theampapp covers the skipped client build case by fetching the worker URL and expecting a 200. Both tests fail without the fix.Related: #12438. That issue also stems from worker files being overlooked, but it concerns the
$service-workerbuildlist and is not resolved here.Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
Tests
pnpm testand lint the project withpnpm lintandpnpm checkChangesets
pnpm changesetand following the prompts. Changesets that add features should beminorand those that fix bugs should bepatch. Please prefix changeset messages withfeat:,fix:, orchore:.Edits