kit
kit copied to clipboard
feat: service worker rendering
closes #3498
⚠️ Work in Progress (feedback/suggestions/comments welcome) ⚠️
This PR is an attempt to introduce a minimally-viable version of rendering in Service Workers. It uses the API previously attempted in #5690 and which I’ve described in the discussion #13784.
Currently I am trying to implement rendering in service workers by duplicating and modifying the server runtime and then using a heavily refactored version of the Cloudflare adapter to expose a respond(event: FetchEvent): Promise<Response> function in $service-worker. The service-worker runtime delegates all server loads, actions and endpoints to the server, leaving it up to universal load functions to handle timeouts/connectivity/etc. (as they should already do, right?).
Some unresolved issues at this point:
- Does there need to be a hooks file for the service worker and server to share, e.g.
hooks.ssr.{js,ts}?Maybe ahooks.worker.{js,ts}? - How should the
respond()function handle requests for assets? - How much code could/should the server and service worker runtimes share?
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
- [x] 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.
- [ ] Ideally, include a test that fails without this PR but passes with it.
Tests
- [ ] Run the tests with
pnpm testand lint the project withpnpm lintandpnpm 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 changesetand following the prompts. Changesets that add features should beminorand those that fix bugs should bepatch. Please prefix changeset messages withfeat:,fix:, orchore:.
Edits
- [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed.
🦋 Changeset detected
Latest commit: a71ead8b386e91f52e652fbb50f3280860d49f6d
The changes in this PR will be included in the next version bump.
This PR includes changesets to release 1 package
| Name | Type |
|---|---|
| @sveltejs/kit | Minor |
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
Preview: https://svelte-dev-git-preview-kit-13791-svelte.vercel.app/