Skip to content

Conversation

thomasfosterau
Copy link

@thomasfosterau thomasfosterau commented May 15, 2025

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 a hooks.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:

  • 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
  • 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 test and lint the project with pnpm lint and pnpm check

Changesets

  • 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

  • Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed.

Copy link

changeset-bot bot commented May 15, 2025

🦋 Changeset detected

Latest commit: a71ead8

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

@svelte-docs-bot
Copy link

@eltigerchino eltigerchino added the feature / enhancement New feature or request label May 15, 2025
@thomasfosterau thomasfosterau deleted the service-worker-render branch June 26, 2025 08:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature / enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add local SSR/CSR to Service Workers.
2 participants