Skip to content

breaking: remove worktop caching - #16640

Merged
Rich-Harris merged 2 commits into
version-3from
breaking-remove-worktop
Aug 4, 2026
Merged

breaking: remove worktop caching#16640
Rich-Harris merged 2 commits into
version-3from
breaking-remove-worktop

Conversation

@teemingc

@teemingc teemingc commented Aug 4, 2026

Copy link
Copy Markdown
Member

closes #16607
closes #16638
closes #15813
closes #4615
closes #9884

This PR removes the automatic caching that the Cloudflare adapter does (and in doing so removes the dependency on worktop). Users are better off using https://developers.cloudflare.com/workers/cache/ which requires an opt-in via the config file.


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.

@pkg-svelte-dev

pkg-svelte-dev Bot commented Aug 4, 2026

Copy link
Copy Markdown

Install the latest version of @sveltejs/kit from 2e97ab6:

pnpm add https://pkg.svelte.dev/@sveltejs/kit/c/2e97ab682cb488e7af6cf0ba93dc0e5dcdac0407

Open in pkg.svelte.dev: https://pkg.svelte.dev/repos/kit/pr/16640

@changeset-bot

changeset-bot Bot commented Aug 4, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 2e97ab6

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@sveltejs/adapter-cloudflare Major

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
Copy Markdown

@Rich-Harris

Copy link
Copy Markdown
Member

oops I approved before I saw the lint errors

@Rich-Harris
Rich-Harris merged commit 698c4a7 into version-3 Aug 4, 2026
26 checks passed
@Rich-Harris
Rich-Harris deleted the breaking-remove-worktop branch August 4, 2026 15:34
Rich-Harris pushed a commit that referenced this pull request Aug 7, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to version-3, this PR
will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

`version-3` is currently in **pre mode** so this branch has prereleases
rather than normal releases. If you want to exit prereleases, run
`changeset pre exit` on `version-3`.

⚠️⚠️⚠️⚠️⚠️⚠️

# Releases
## @sveltejs/adapter-auto@8.0.0-next.3

### Major Changes

- breaking: require SvelteKit 3

### Patch Changes

- fix: convert resolved adapter path to a file URL before importing, so
builds work on Windows

- fix: allow prerelease versions of SvelteKit 3 to satisfy the peer
dependency range
- Updated dependencies
[[`bbd1e2f`](bbd1e2f),
[`e21d27b`](e21d27b),
[`6044d05`](6044d05),
[`7fb611f`](7fb611f),
[`9f06b3a`](9f06b3a),
[`8763327`](8763327),
[`7dc2379`](7dc2379),
[`a70c3eb`](a70c3eb),
[`89f49c7`](89f49c7),
[`f36b3a4`](f36b3a4),
[`1144a63`](1144a63),
[`9f06b3a`](9f06b3a)]:
  - @sveltejs/kit@3.0.0-next.15
## @sveltejs/adapter-cloudflare@8.0.0-next.5

### Major Changes

- breaking: minimum Wrangler version required is `4.118.0`
([#16668](#16668))

- breaking: upgrade `@cloudflare/workers-types` to 4.20260219.0

- breaking: upgrade minimum `wrangler` version to ^4.67.0

- breaking: remove `platform.context` in favour of `platform.ctx`

- breaking: require SvelteKit 3

- breaking: remove use of the Cloudflare Workers Cache API in favour of
Workers Caching ([#16640](#16640))

### Patch Changes

- chore: use `node:fs` instead of deprecated `builder.rimraf` and
`builder.mkdirp` ([#16286](#16286))

- chore: bump `@cloudflare/workers-types` to `4.20260621.1`

- fix: avoid overriding user's existing `_headers` rules

- chore: check the `WORKERS_CI` environment variable to determine if
we're building for Cloudflare Workers

- fix: allow prerelease versions of SvelteKit 3 to satisfy the peer
dependency range

- fix: avoid caching immutable asset 404s
- Updated dependencies
[[`bbd1e2f`](bbd1e2f),
[`e21d27b`](e21d27b),
[`6044d05`](6044d05),
[`7fb611f`](7fb611f),
[`9f06b3a`](9f06b3a),
[`8763327`](8763327),
[`7dc2379`](7dc2379),
[`a70c3eb`](a70c3eb),
[`89f49c7`](89f49c7),
[`f36b3a4`](f36b3a4),
[`1144a63`](1144a63),
[`9f06b3a`](9f06b3a)]:
  - @sveltejs/kit@3.0.0-next.15
## @sveltejs/adapter-netlify@7.0.0-next.6

### Major Changes

- chore: use `rolldown` for edge function bundling

- breaking: write output that conforms to the stable [Netlify Frameworks
API](https://docs.netlify.com/build/frameworks/frameworks-api/).
  
Deploying and previewing with Netlify CLI now requires
[v17.31.0](https://github.com/netlify/cli/releases/tag/v17.31.0) or
later. Run `npm i -g netlify-cli@latest` to upgrade.
- breaking: require SvelteKit 3

- breaking: edge function build target is now `es2022`

- breaking: require `vite@^8.0.12`, the first Vite 8 release bundling
stable `rolldown` 1.0.0

### Patch Changes

- chore: use `node:fs` instead of deprecated `builder.rimraf` and
`builder.mkdirp` ([#16286](#16286))

- fix: ensure types for `platform.context` work

- fix: include `utils.js` in package.json `files`

- chore: replace @netlify/functions with @netlify/types for the Context
type

- fix: provide distinct names for each split serverless function
([#16667](#16667))

- fix: await `init` on every request to prevent race condition

- chore: bump Rolldown to `1.2.0`
- Updated dependencies
[[`bbd1e2f`](bbd1e2f),
[`e21d27b`](e21d27b),
[`6044d05`](6044d05),
[`7fb611f`](7fb611f),
[`9f06b3a`](9f06b3a),
[`8763327`](8763327),
[`7dc2379`](7dc2379),
[`a70c3eb`](a70c3eb),
[`89f49c7`](89f49c7),
[`f36b3a4`](f36b3a4),
[`1144a63`](1144a63),
[`9f06b3a`](9f06b3a)]:
  - @sveltejs/kit@3.0.0-next.15
## @sveltejs/adapter-node@6.0.0-next.8

### Major Changes

- chore: migrate from rollup to rolldown

- breaking: require SvelteKit 3

- breaking: add `kit.paths.origin` config option, remove
`kit.prerender.origin` and the `adapter-node` `ORIGIN` environment
variable

- breaking: require `vite@^8.0.12`, the first Vite 8 release bundling
stable `rolldown` 1.0.0

### Minor Changes

- feat: better error logging

### Patch Changes

- fix: serve static files with the Content-Type recorded in the manifest

- chore: use `node:fs` instead of deprecated `builder.rimraf` and
`builder.mkdirp` ([#16286](#16286))

- fix: allow prerelease versions of SvelteKit 3 to satisfy the peer
dependency range

- fix: correctly bundle entrypoints on Windows

- fix: preserve stripped path prefixes by making trailing-slash
redirects relative

- chore: bump Rolldown to `1.2.0`

- fix: don't send `Vary: Accept-Encoding` for assets that were never
precompressed
- Updated dependencies
[[`bbd1e2f`](bbd1e2f),
[`e21d27b`](e21d27b),
[`6044d05`](6044d05),
[`7fb611f`](7fb611f),
[`9f06b3a`](9f06b3a),
[`8763327`](8763327),
[`7dc2379`](7dc2379),
[`a70c3eb`](a70c3eb),
[`89f49c7`](89f49c7),
[`f36b3a4`](f36b3a4),
[`1144a63`](1144a63),
[`9f06b3a`](9f06b3a)]:
  - @sveltejs/kit@3.0.0-next.15
## @sveltejs/adapter-static@4.0.0-next.4

### Major Changes

- breaking: require SvelteKit 3

### Patch Changes

- chore: use `node:fs` instead of deprecated `builder.rimraf` and
`builder.mkdirp` ([#16286](#16286))

- fix: avoid caching immutable asset 404s when configuring for Vercel

- fix: match adapter-vercel's prerendered redirect handling when
deploying to Vercel

- fix: allow prerelease versions of SvelteKit 3 to satisfy the peer
dependency range
- Updated dependencies
[[`bbd1e2f`](bbd1e2f),
[`e21d27b`](e21d27b),
[`6044d05`](6044d05),
[`7fb611f`](7fb611f),
[`9f06b3a`](9f06b3a),
[`8763327`](8763327),
[`7dc2379`](7dc2379),
[`a70c3eb`](a70c3eb),
[`89f49c7`](89f49c7),
[`f36b3a4`](f36b3a4),
[`1144a63`](1144a63),
[`9f06b3a`](9f06b3a)]:
  - @sveltejs/kit@3.0.0-next.15
## @sveltejs/adapter-vercel@7.0.0-next.5

### Major Changes

- chore: use `rolldown` for edge function bundling

- breaking: edge function build target is now `es2022`

- breaking: require `vite@^8.0.12`, the first Vite 8 release bundling
stable `rolldown` 1.0.0

- breaking: remove support for edge and Node 20 runtimes

### Patch Changes

- chore: bump `@vercel/nft` dependency

- chore: use `node:fs` instead of deprecated `builder.rimraf` and
`builder.mkdirp` ([#16286](#16286))

- fix: allow prerelease versions of SvelteKit 3 to satisfy the peer
dependency range

- fix: await `init` on every request to prevent race condition

- chore: bump Rolldown to `1.2.0`
- Updated dependencies
[[`bbd1e2f`](bbd1e2f),
[`e21d27b`](e21d27b),
[`6044d05`](6044d05),
[`7fb611f`](7fb611f),
[`9f06b3a`](9f06b3a),
[`8763327`](8763327),
[`7dc2379`](7dc2379),
[`a70c3eb`](a70c3eb),
[`89f49c7`](89f49c7),
[`f36b3a4`](f36b3a4),
[`1144a63`](1144a63),
[`9f06b3a`](9f06b3a)]:
  - @sveltejs/kit@3.0.0-next.15
## @sveltejs/enhanced-img@1.0.0-next.4

### Major Changes

- breaking: require Node 22 or newer

- breaking: require `vite@^8.0.12`, the first Vite 8 release bundling
stable `rolldown` 1.0.0

### Minor Changes

- breaking: require Vite 8 and `vite-plugin-svelte` 7

### Patch Changes

- chore: replace the `$lib` alias with `#lib` in docs

- chore: bump `vite-imagetools` to v11
## @sveltejs/kit@3.0.0-next.15

### Major Changes

- breaking: remove `experimental.handleRenderingErrors` flag

- breaking: make `getRequest` and `setResponse` synchronous

- breaking: TypeScript 6 is now the minimum required version

- breaking: refresh all load functions/queries when clicking a link to
the current URL

- breaking: upgrade to `cookie` v2. Cookie names must now contain only
ASCII characters

- breaking: require Node 22 or newer

- breaking: remove the `preloadStrategy` option. `modulepreload` will
always be used

- breaking: default the cookie `path` option to `'/'`

- breaking: remove `@sveltejs/kit/node/polyfills`

- breaking: add `config.kit.output.linkHeaderPreload` to preload using
the `Link` header

- breaking: require `@sveltejs/vite-plugin-svelte` v7

- breaking: make `page.url` immutable on a type level

- breaking: remove `base`, `assets`, and `resolveRoute` from
`$app/paths`

- breaking: remove `createEntries` from the `Builder` object passed to
adapter functions

- breaking: return no content for 204 responses

- breaking: rename `Pathname` type to `Path` and `Asset` to `AssetPath`
  breaking: remove leading `/` from `Path` and `AssetPath`
- breaking: `handle`'s `resolve` is now typed to always return a
`Promise`

- breaking: require Svelte config options to be passed through the Vite
plugin

- breaking: form action responses now use the HTTP status code returned
from `fail`

- breaking: write tsconfig to `node_modules/$app/tsconfig`

- breaking: remove the deprecated CSRF `checkOrigin` option in favor of
`trustedOrigins`

- breaking: the `delta` property now only exists for `popstate`
navigation events

- breaking: change `form.error` type from `any` to `App.Error |
undefined`

- breaking: remove deprecated `pragma` header in version polling for
improved CORS support

- breaking: `goto` now rejects when called with a URL that does not
resolve to a route within the app, matching the existing behaviour for
external URLs

- breaking: require Svelte 5.56.4 or newer

- breaking: error on `event.url`, `event.params` and `event.route`
access inside queries

- breaking: delete `$service-worker` module

- breaking: move `defineEnvVars` to `@sveltejs/kit/env`

- breaking: nested server-only directories

- feat: allow adapters to provide additional Vite plugins

- breaking: replace the `$lib` alias with `#lib` and remove `files.lib`
config.

- chore: change `error`, `isHttpError`, `redirect`, and `isRedirect` to
refer to public type instead of internal class

- breaking: add 'error' result type to `preloadData`

- breaking: detect new deployments on data, remote, and form action
responses, tab focus, and visibility change, and default
`version.pollInterval` to 1 hour

- breaking: disallow cross-origin form submissions without a
`Content-Type` header

- breaking: Server-only directories (`/server/` in the path) are now
treated as server-only everywhere inside the project (except
`src/routes` and the assets directory)

- breaking: `config` exported from a universal route file takes
precedence over a server one

- breaking: require Vite 8. Provides new functionality even for existing
Vite 8 users such as faster builds with Vite hook filters and more
powerful SvelteKit adapters with the Vite environment API

- breaking: remove `data-sveltekit-*` option `'off'` in favour of
`false`

- breaking: move tracing out of the experimental namespace and remove
the instrumentation flag

- breaking: add `kit.paths.origin` config option, remove
`kit.prerender.origin` and the `adapter-node` `ORIGIN` environment
variable

- breaking: remove `$app/stores`

- breaking: add `refreshAll` and deprecate `invalidateAll`

- breaking: disallow `*.remote.ts/js` files unless
`experimental.remoteFunctions` is enabled

- breaking: replace the `noScroll` and `keepFocus` options of `goto`
with a single `reset` option, and the `data-sveltekit-noscroll` and
`data-sveltekit-keepfocus` attributes with `data-sveltekit-reset`

- breaking: don't abort navigation when calling `invalidate(All)` during
navigation

- breaking: consistent special filename patterns

- breaking: allow `handleError` to influence status code

- breaking: delegate CORS handling to Vite for static directory requests
during development

- breaking: require `vite@^8.0.12`, the first Vite 8 release bundling
stable `rolldown` 1.0.0

- breaking: only include routes with a `+page` or `+server` in `RouteId`

- breaking: require Node 22.17

- breaking: deprecate `error(status, {...})` in favour of `error(status,
message, {...})`

- breaking: forbid external redirects by default

- breaking: remove param files in folder in favor of `params.js/ts` file

- breaking: `preloadCode` now takes a route ID (e.g. `/blog/[slug]`)
instead of a pathname. Route IDs are not prefixed with `paths.base`

- breaking: remove deprecated `.run()` method from live queries

### Minor Changes

- feat: allow hyphens in param and matcher names

- feat: add `$app/manifest` module with `immutable`, `assets`,
`prerendered`, and `routes` exports

- feat: add `ErrorProps` to generated types

- feat: support sourcemaps in production

- feat: return the list of compressed files from `builder.compress`

- feat: warn when tsconfig doesn't exclude service worker
([#16645](#16645))

- feat: validate that all remote form fields were created with
form.fields.foo.as(...)

- feat: support function validators for environment variables

- feat: use `type: 'module'` for service worker registrations

- feat: add shallow routing to `goto` and deprecate `pushState` and
`replaceState`

- feat: make `$app/paths` importable in service workers

- feat: preserve page state set through `goto(..., { state,
persistState: true })` across reloads

- feat: reinstate `$env/static/private`, `$env/dynamic/private`,
`$env/static/public`, `$env/dynamic/public` and `$app/environment` as
deprecated aliases for `$app/env/private` `$app/env/public` and
`$app/env`

- feat: add `page` and `endpoint` booleans to `$app/manifest`'s
`routes`, and export a `ManifestRoute` type

- feat: `$app/service-worker` module

- feat: resolve paths using the Vite config `root` option instead of
`process.cwd()` to better support monorepo configurations such as Vitest
workspaces

- feat: better error logging

- feat: add `PageRouteId` and `EndpointRouteId` to `$app/types`

- feat: better tsconfig validation

- feat: add `dirty()` property to form fields

- chore: deprecate `Response` helpers in favor of platform-provided
alternatives

- feat: add `cookies.parse` method

- feat: support custom values in `page.state` via `transport` hook
([#16662](#16662))

- fix: default cookies to `secure` to `false` during development

- feat: warn when naively proxying requests that result in responses
with a `content-encoding` header
([#16633](#16633))

### Patch Changes

- fix: persist global app state across module graph reloads
([#16663](#16663))

- fix: generate valid `Path` types for routes with optional or rest
params, several params in one segment, or escape sequences

- fix: allow `undefined` values to be passed to form field `.as(...)`
where applicable

- chore: deprecate `builder.rimraf` and `builder.mkdirp` in favour of
`node:fs` methods ([#16610](#16610))

- fix: don't treat callable standard schemas as function param matchers

- fix: decode all numeric character references, including above `ffff`,
when crawling prerendered pages

- fix: include queries refreshed from within another query in the
serialized response

- fix: reject malformed streamed data encoding

- perf: cache the default cookie header parse and avoid allocations in
`cookies.get`

- fix: exclude deleted cookies from `cookies.getAll()` so it stays
consistent with `cookies.get()`

- fix: hide stack traces for internal errors like 404s

- chore: deduplicate repeated CSP directive handling

- fix: defer `query.refresh()` in server commands until after the
command body completes

- fix: drain unconsumed request bodies so keep-alive connections don't
hang

- fix: resolve service worker and `tsconfig.json` based on Vite `root`
setting

- perf: match only unpaired surrogates when escaping HTML

- fix: treat `data:` protocol URLs as external for redirect

- chore: deduplicate request hashing for serialized fetch responses

- fix: don't treat `Object.prototype` members as param matchers during
validation

- fix: don't report empty environment variables as missing

- fix: exclude routes without a page or endpoint from `routes` in
`$app/manifest`, and remove directories with no route files from
`LayoutParams`

- fix: avoid Vite dev server reload on initial page request

- fix: don't set a `null` `accept-language` header on internal `fetch`
sub-requests when the incoming request has none

- fix: correctly detect prerendered paths in server `fetch` when
`paths.base` is set

- fix: populate `$app/env/*` dynamic variables in contexts that don't
run the dev server, such as `vite-node`

- fix: properly handle Date objects in form.fields.set

- fix: return 404 for form actions and remote functions whose name is an
`Object.prototype` member

- fix: no longer throw "An impossible situation occurred" when a
server-only module is imported by both server and client code

- fix: don't duplicate remote modules in the generated manifest

- chore: reuse base64 and text decoding helpers

- fix: explain the removal of `$lib` and `$service-worker` when their
imports fail to resolve
([#16635](#16635))

- fix: correctly massage stack traces with async frames
([#16633](#16633))

- fix: mark `RequestEvent` properties as `readonly`
([#16661](#16661))

- fix: update `match` parameter type
([#16636](#16636))

- fix: generate sourcemaps for remote modules

- fix: avoid empty getElementById() call on hash routing navigation

- fix: serve `.ico` files with `image/x-icon` Content-Type

- fix: exclude inlined files from the page's `$app/manifest` immutable
list

- fix: avoid client-side code being bundled by Cloudflare Wrangler

- fix: record the mime types of prerendered paths in the server manifest

- chore: clarify which hooks run during server route resolution

- fix: make `paths.origin` type looser

- feat: send periodic `keep-alive` SSE comments from `query.live` to
prevent idle-timeout errors

- fix: warn if hook files are spelled as "hook" instead of "hooks"

- chore: only generate each route's resolution module once when
prerendering

- fix: skip clean fields when programmatically validating forms

- perf: skip import graph collection outside client environments

- breaking: experimental remote form `validate({ includeUntouched })`
option is now `all`

- fix: avoid client build warning about externalising `node:async_hooks`

- fix: reinstate `$app/environment` as an alias for `$app/env`, in case
dependencies import it

- fix: error when reading non-serialized `set-cookie` headers via
`getSetCookie` in `load`
([#16614](#16614))

- perf: avoid quadratic remote form issue merging

- chore: deprecate the `alias` option

- fix: don't attempt to serialize fetch responses when the request body
is not a string or TypedArray

- fix: handle rejected streamed server data after delayed loads

- fix: render pages over sibling endpoints without GET or HEAD handlers

- fix: prevent infinite loops when server-side queries refresh each
other in a cycle during the single-flight drain

- fix: populate `version` in service workers

- feat: add field.touched() helper to remote form fields

- fix: read the error status of `App.Error` in the `prerender` and
`query.live` remote functions

- fix: resolve remote modules as external during dev prebundling so
packages can re-export remote functions

- fix: propagate errors from prerendered remote responses instead of
re-running the function

- fix: allow reserved words (e.g. `delete`, `class`) as remote function
export names

- fix: reset failed `<svelte:boundary>` on client navigation so a stale
`+error.svelte` is torn down

- fix: expand `[x+nn]` and `[u+nnnn]` escape sequences when resolving a
route id to a pathname

- fix: respect the status returned from `handleError` on the fallback
error page served to error-page sub-requests

- fix: warn if there are plugins using `transformIndexHtml`

- fix: refetch route-tracking server data when navigating away from an
error page

- fix: allow routes to contain `[` and `]` via the `[x+5b]` and `[x+5d]`
escapes

- chore: remove dependency on kleur

- fix: serialize `query(...).set(...)`/`query(...).refresh()` values
into the rendered HTML when called from within a query during SSR

- fix: detect `$app/server` and `$app/env/private` client imports when
SvelteKit is installed inside the project root
([#16648](#16648))

- fix: sort directory entries when building the route manifest so node
indices are deterministic across runtimes (e.g. Bun and Node)

- fix: skip unnecessary `version.json` checks if `updated.current` is
already `true`

- fix: allow generation of $app/tsconfig without TypeScript installed

- chore: remove dependency on `set-cookie-parser`

- fix: fall back to the page's form actions when a sibling endpoint has
no POST handler

- perf: use a `Set` to check element ids when validating fragment links
during prerendering

- fix: preserve shared client chunk hashes when the app version changes

- fix: include hoisted packages in Vite's `server.fs.allow` list

- fix: only include `_app/immutable` files in `$app/manifest`'s
`immutable` in the service worker

- chore: remove the dead `SSRState.fallback` field and name the server
state fork semantics

- fix: import resolved peer dependencies as file URLs so
project-relative resolution works on Windows

- fix: log errors caught by the Vite dev server handler

- fix: resolve `root` per instance of the SvelteKit Vite plugin

- fix: ignore path casing differences when warning about overridden Vite
config on Windows

- fix: return a lightweight 404 instead of rendering the error page for
subresource requests

- fix: preserve stripped path prefixes by making trailing-slash
redirects relative

- fix: preserve the current URL search parameters when submitting a
remote form without JavaScript

- fix: only treat files in node_modules as remote modules when the
package has a peer dependency on @sveltejs/kit
([#16492](#16492))

- fix: treeshake prerendered remote functions in the right chunks

- chore: deduplicate type-stripping logic in `tweak_types`

- fix: error during development if the adapter does not support
instrumentation and it exists

- fix: use mouseover+mousemove for preloading to reduce events

- fix: write generated tsconfig to `node_modules/$app/tsconfig.json` so
that tools with simplified tsconfig resolution can find it

- fix: more informative error message when running a command inside a
query or prerender function

- fix: prerender and crawl pages whose `content-type` header carries a
`charset` parameter

- fix: stream promised `read` results lazily instead of eagerly
buffering them

- fix: correctly decode `[u+nnnn]` escape sequences above `ffff`
## @sveltejs/package@3.0.0-next.5

### Major Changes

- breaking: require Node 22 or newer

### Minor Changes

- feat: warn when using a `.server.` file or file inside a `server`
directory without importing a server-only module

- feat: transform import aliases into relative imports in files

### Patch Changes

- chore: remove dependency on sade

- chore: replace private fs helpers with Node built-ins
([#16610](#16610))

- chore: remove dependency on kleur

- fix: import resolved peer dependencies as file URLs so
project-relative resolution works on Windows

- fix: emit declarations when the tsconfig lives above the package root

- fix: declare typescript as an optional peer dependency so
svelte-package works under strict node-linkers

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment