# SvelteKit changelog > The web framework for building Svelte applications. - Vendor: Svelte - Category: Frameworks & Libraries - License: MIT - Language: JavaScript - Official site: https://svelte.dev/docs/kit - Tracked by: What's New (https://whatsnew.fyi/product/sveltekit) - Harvested from: GitHub (sveltejs/kit) - Entries below: 25 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: release facts (products, versions, dates, links, CVE ids and flags) are open data under CC BY 4.0, from the API at https://whatsnew.fyi/api/v1 or the nightly dataset at https://github.com/whatsnew-fyi/dataset. The summaries, labels and curation are © What's New: quote freely with attribution and a link back; wholesale republication of them is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### 3.1.0 - Date: 2026-10-14 - Version: 3.1.0 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.1.0 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.1.0 - **added** — Support report-sha256, report-sha384, and report-sha512 CSP hash-reporting keywords - **added** — Emit a sveltekit.endpoint span for +server handlers when server tracing is enabled - **fixed** — Don't treat every module as server-only when the project is inside a server directory - **fixed** — Continue deployment recovery when service worker updates fail - **fixed** — Infer prerendered MIME types from generated files - **fixed** — Leave generated files alone when their contents are unchanged - **fixed** — Leave focus in the parent page when an app in an unfocused iframe starts or navigates - **fixed** — Don't warn about Storybook's Vite plugins that use transformIndexHtml ###### Minor Changes - feat: support `report-sha256`/`report-sha384`/`report-sha512` CSP hash-reporting keywords ([#17398](https://github.com/sveltejs/kit/pull/17398)) - feat: emit a `sveltekit.endpoint` span for `+server` handlers when server tracing is enabled ([#17325](https://github.com/sveltejs/kit/pull/17325)) ###### Patch Changes - fix: don't treat every module as server-only when the project is inside a `server` directory ([#17376](https://github.com/sveltejs/kit/pull/17376)) - fix: continue deployment recovery when service worker updates fail ([#17440](https://github.com/sveltejs/kit/pull/17440)) - fix: infer prerendered MIME types from generated files ([#17381](https://github.com/sveltejs/kit/pull/17381)) - fix: leave generated files alone when their contents are unchanged ([#17310](https://github.com/sveltejs/kit/pull/17310)) - fix: leave focus in the parent page when an app in an unfocused iframe starts or navigates ([#17297](https://github.com/sveltejs/kit/pull/17297)) - fix: don't warn about Storybook's Vite plugins that use `transformIndexHtml` ([#17373](https://github.com/sveltejs/kit/pull/17373)) ### 3.0.1 - Date: 2026-10-06 - Version: 3.0.1 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.1 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.1 - **fixed** — ensure relative imports in generated types work with nodenext module resolution ###### Patch Changes - fix: ensure relative imports in generated types work with `nodenext` module resolution ([#17351](https://github.com/sveltejs/kit/pull/17351)) ### 3.0.0 - Date: 2026-10-01 - Version: 3.0.0 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0 - **removed** — Move remote function types to $app/server - **removed** — Remove experimental.handleRenderingErrors flag - **changed** — Make getRequest and setResponse synchronous - **changed** — TypeScript 6 is now the minimum required version - **changed** — Refresh all load functions/queries when clicking a link to the current URL - **changed** — Upgrade to cookie v2 with requirement that cookie names contain only ASCII characters - **changed** — Require Node 22 or newer - **changed** — Error when a client-requested single-flight mutation isn't respected by the server, allow the server to explicitly ignore refreshes - **removed** — Remove the preloadStrategy option; modulepreload will always be used - **changed** — Default the cookie path option to / - **removed** — Remove @sveltejs/kit/node/polyfills - **added** — Add config.kit.output.linkHeaderPreload to preload using the Link header - **changed** — Require @sveltejs/vite-plugin-svelte v7 - **changed** — Make page.url immutable on a type level - **removed** — Remove base, assets, and resolveRoute from $app/paths - **removed** — Remove createEntries from the Builder object passed to adapter functions - **changed** — Return no content for 204 responses - **changed** — Rename Pathname type to Path and Asset to AssetPath - **changed** — Make handle's resolve typed to always return a Promise - **removed** — Remove Server constructor and SSRManifest from public types ###### Major Changes - breaking: move remote function types to `$app/server` ([#16740](https://github.com/sveltejs/kit/pull/16740)) - breaking: remove `experimental.handleRenderingErrors` flag ([#16265](https://github.com/sveltejs/kit/pull/16265)) - breaking: make `getRequest` and `setResponse` synchronous ([#16280](https://github.com/sveltejs/kit/pull/16280)) - breaking: TypeScript 6 is now the minimum required version ([#15930](https://github.com/sveltejs/kit/pull/15930)) - breaking: refresh all load functions/queries when clicking a link to the current URL ([#16572](https://github.com/sveltejs/kit/pull/16572)) - breaking: move remote function types to `$app/server` ([#16764](https://github.com/sveltejs/kit/pull/16764)) - breaking: upgrade to `cookie` v2. Cookie names must now contain only ASCII characters ([#13386](https://github.com/sveltejs/kit/pull/13386)) - breaking: require Node 22 or newer ([#12548](https://github.com/sveltejs/kit/pull/12548)) - major: error when a client-requested single-flight mutation isn't respected by the server, allow the server to explicitly ignore refreshes ([#16892](https://github.com/sveltejs/kit/pull/16892)) - breaking: remove the `preloadStrategy` option. `modulepreload` will always be used ([#15256](https://github.com/sveltejs/kit/pull/15256)) - breaking: default the cookie `path` option to `'/'` ([#15398](https://github.com/sveltejs/kit/pull/15398)) - breaking: remove `@sveltejs/kit/node/polyfills` ([#15430](https://github.com/sveltejs/kit/pull/15430)) - breaking: add `config.kit.output.linkHeaderPreload` to preload using the `Link` header ([#15939](https://github.com/sveltejs/kit/pull/15939)) - breaking: require `@sveltejs/vite-plugin-svelte` v7 ([#15371](https://github.com/sveltejs/kit/pull/15371)) - breaking: make `page.url` immutable on a type level ([#16256](https://github.com/sveltejs/kit/pull/16256)) - breaking: remove `base`, `assets`, and `resolveRoute` from `$app/paths` ([#15507](https://github.com/sveltejs/kit/pull/15507)) - breaking: remove `createEntries` from the `Builder` object passed to adapter functions ([#15509](https://github.com/sveltejs/kit/pull/15509)) - breaking: return no content for 204 responses ([#16200](https://github.com/sveltejs/kit/pull/16200)) - breaking: rename `Pathname` type to `Path` and `Asset` to `AssetPath` ([#16430](https://github.com/sveltejs/kit/pull/16430)) breaking: remove leading `/` from `Path` and `AssetPath` - breaking: `handle`'s `resolve` is now typed to always return a `Promise` ([#16352](https://github.com/sveltejs/kit/pull/16352)) - breaking: remove `Server` constructor and `SSRManifest` from public types ([#16876](https://github.com/sveltejs/kit/pull/16876)) - breaking: require Svelte config options to be passed through the Vite plugin ([#16007](https://github.com/sveltejs/kit/pull/16007)) - breaking: form action responses now use the HTTP status code returned from `fail` ([#16200](https://github.com/sveltejs/kit/pull/16200)) - breaking: write tsconfig to `node_modules/$app/tsconfig` ([#16458](https://github.com/sveltejs/kit/pull/16458)) - breaking: move `defineParams` and associated types to `@sveltejs/kit/params` ([#16716](https://github.com/sveltejs/kit/pull/16716)) - breaking: remove the deprecated CSRF `checkOrigin` option in favor of `trustedOrigins` ([#15437](https://github.com/sveltejs/kit/pull/15437)) - breaking: the `delta` property now only exists for `popstate` navigation events ([#15522](https://github.com/sveltejs/kit/pull/15522)) - breaking: change `form.error` type from `any` to `App.Error | undefined` ([#16245](https://github.com/sveltejs/kit/pull/16245)) - breaking: remove deprecated `pragma` header in version polling for improved CORS support ([#15428](https://github.com/sveltejs/kit/pull/15428)) - 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 ([#16164](https://github.com/sveltejs/ _[Truncated at 4000 characters — full notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0]_ ### 3.0.0-next.32 - Date: 2026-10-01 - Version: 3.0.0-next.32 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.32 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.32 - Labels: Pre-release - **fixed** — Prevent non-redirect enhanced form results from navigating to another origin - **fixed** — Escape cache-control headers in prerendered HTML - **fixed** — Revert route metadata caching to regenerate missing root-route types during sync - **fixed** — Print builder.log.warn messages to stderr, as documented - **fixed** — Prevent path traversal when previewing prerendered pages and data on Windows - **fixed** — Prevent server-side self-fetch fallbacks from following redirects - **fixed** — Report tsconfig parse errors on Windows ###### Patch Changes - fix: prevent non-redirect enhanced form results from navigating to another origin ([`91aae35`](https://github.com/sveltejs/kit/commit/91aae3547c6cd2935d79c09a53e27c740100000a)) - fix: escape cache-control headers in prerendered HTML ([`d9d55b5`](https://github.com/sveltejs/kit/commit/d9d55b579743c80ee7cb59c272d864fd9253dae7)) - fix: revert route metadata caching to regenerate missing root-route types during sync ([#17281](https://github.com/sveltejs/kit/pull/17281)) - fix: print `builder.log.warn` messages to stderr, as documented ([#17253](https://github.com/sveltejs/kit/pull/17253)) - fix: prevent path traversal when previewing prerendered pages and data on Windows ([`538edbf`](https://github.com/sveltejs/kit/commit/538edbfa809ac0be634a63c7833f8e0328bfc177)) - chore: standardize remote-function and shared form diagnostics ([#17277](https://github.com/sveltejs/kit/pull/17277)) - fix: prevent server-side self-fetch fallbacks from following redirects ([`b11bb87`](https://github.com/sveltejs/kit/commit/b11bb87679a2c405fff80d218c8c0ac16112383a)) - chore: standardize app template diagnostics ([#17250](https://github.com/sveltejs/kit/pull/17250)) - chore: standardize Vite plugin, build, prerender and adapter diagnostics ([#17253](https://github.com/sveltejs/kit/pull/17253)) - chore: standardize client navigation, preload, snapshot and enhancement diagnostics ([#17276](https://github.com/sveltejs/kit/pull/17276)) - chore: standardize configuration, environment and tsconfig diagnostics ([#17251](https://github.com/sveltejs/kit/pull/17251)) - chore: standardize public API, `$app/*` and deprecated module diagnostics ([#17265](https://github.com/sveltejs/kit/pull/17265)) - chore: standardize route discovery, parameter and route export diagnostics ([#17252](https://github.com/sveltejs/kit/pull/17252)) - chore: standardize server request, hook and page diagnostics ([#17275](https://github.com/sveltejs/kit/pull/17275)) - fix: report tsconfig parse errors on Windows ([#17251](https://github.com/sveltejs/kit/pull/17251)) ### 3.0.0-next.31 - Date: 2026-09-30 - Version: 3.0.0-next.31 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.31 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.31 - Labels: Pre-release - **fixed** — Resolve generated rootDirs from the project root - **fixed** — Keep history.scrollRestoration set to manual when leaving the page, so a document restored from the back/forward cache does not fall back to browser scroll restoration - **fixed** — Clear navigating when a shallow popstate aborts an in-flight navigation - **fixed** — Restore scroll position after back-forward cache returns ###### Patch Changes - fix: resolve generated rootDirs from the project root ([#17242](https://github.com/sveltejs/kit/pull/17242)) - fix: keep `history.scrollRestoration` set to `manual` when leaving the page, so a document restored from the back/forward cache does not fall back to browser scroll restoration ([#17244](https://github.com/sveltejs/kit/pull/17244)) - fix: clear `navigating` when a shallow popstate aborts an in-flight navigation ([#17118](https://github.com/sveltejs/kit/pull/17118)) - fix: restore scroll position after back-forward cache returns ([#17255](https://github.com/sveltejs/kit/pull/17255)) ### 3.0.0-next.30 - Date: 2026-09-27 - Version: 3.0.0-next.30 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.30 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.30 - Labels: Pre-release - **fixed** — Generate a never Path type when there are no routes - **fixed** — Set the focus starting point without a fragment navigation to prevent leaking a hashchange to app listeners - **fixed** — Keep a form.for instance registered when the derived that holds it disconnects and reconnects ###### Patch Changes - fix: generate a `never` `Path` type when there are no routes ([#17228](https://github.com/sveltejs/kit/pull/17228)) - fix: set the focus starting point without a fragment navigation, which leaked a `hashchange` to app listeners ([#16992](https://github.com/sveltejs/kit/pull/16992)) - fix: keep a `form.for` instance registered when the derived that holds it disconnects and reconnects ([#17230](https://github.com/sveltejs/kit/pull/17230)) ### 3.0.0-next.29 - Date: 2026-09-25 - Version: 3.0.0-next.29 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.29 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.29 - Labels: Pre-release - **fixed** — blur focused SVG elements before the DOM update on navigation - **fixed** — make cookie options optional ###### Patch Changes - fix: blur focused SVG elements before the DOM update on navigation ([#16983](https://github.com/sveltejs/kit/pull/16983)) - fix: make cookie options optional ([#17201](https://github.com/sveltejs/kit/pull/17201)) ### 3.0.0-next.28 - Date: 2026-09-24 - Version: 3.0.0-next.28 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.28 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.28 - Labels: Pre-release - **removed** — reject query parameters beginning with `x-sveltekit-` - **fixed** — support bigint params in server-side route resolution - **fixed** — generate types when dev server starts - **fixed** — validate prerender concurrency - **fixed** — manipulate stack trace for errors that happen while generating prerender inputs - **fixed** — keep memory flat when precompressing many files - **fixed** — render remote form actions while prerendering - **fixed** — ignore Vitest browser loader HTML transforms - **fixed** — prevent failed link preloads from causing unhandled promise rejections in production - **fixed** — enforce request body size limits when Content-Type is absent - **fixed** — ignore nested outDir files outside generated - **fixed** — follow HTTP redirects from authentication proxies when enhancing form submissions - **fixed** — support form fields named after Object prototype properties - **fixed** — evict hashed fetch cache entries after mutations - **fixed** — keep hash-router links on the current document when resolving paths - **fixed** — resolve every module entry point using `kit.moduleExtensions` - **fixed** — send an explicit SSE Accept header for `query.live` requests to avoid buffering by proxies - **fixed** — exit build workers after completing their tasks while allowing synchronous exit handlers to run - **fixed** — respect `paths.relative` for server-side route resolution imports - **fixed** — recommend safe include and exclude patterns in tsconfig warning ###### Major Changes - breaking: reject query parameters beginning with `x-sveltekit-` ([#17125](https://github.com/sveltejs/kit/pull/17125)) ###### Patch Changes - fix: support bigint params in server-side route resolution ([#17130](https://github.com/sveltejs/kit/pull/17130)) - fix: generate types when dev server starts ([#17034](https://github.com/sveltejs/kit/pull/17034)) - fix: validate prerender concurrency ([#17145](https://github.com/sveltejs/kit/pull/17145)) - fix: manipulate stack trace for errors that happen while generating prerender inputs ([#17113](https://github.com/sveltejs/kit/pull/17113)) - fix: keep memory flat when precompressing many files ([#16993](https://github.com/sveltejs/kit/pull/16993)) - fix: render remote form actions while prerendering ([#17139](https://github.com/sveltejs/kit/pull/17139)) - fix: ignore Vitest browser loader HTML transforms ([#17092](https://github.com/sveltejs/kit/pull/17092)) - fix: prevent failed link preloads from causing unhandled promise rejections in production ([#17181](https://github.com/sveltejs/kit/pull/17181)) - fix: enforce request body size limits when Content-Type is absent ([#17127](https://github.com/sveltejs/kit/pull/17127)) - fix: ignore nested outDir files outside generated ([#17150](https://github.com/sveltejs/kit/pull/17150)) - fix: follow HTTP redirects from authentication proxies when enhancing form submissions ([#17106](https://github.com/sveltejs/kit/pull/17106)) - fix: support form fields named after Object prototype properties ([#17136](https://github.com/sveltejs/kit/pull/17136)) - fix: evict hashed fetch cache entries after mutations ([#17146](https://github.com/sveltejs/kit/pull/17146)) - fix: keep hash-router links on the current document when resolving paths ([#17107](https://github.com/sveltejs/kit/pull/17107)) - fix: resolve every module entry point using `kit.moduleExtensions` ([#17043](https://github.com/sveltejs/kit/pull/17043)) - fix: send an explicit SSE Accept header for `query.live` requests to avoid buffering by proxies ([#17104](https://github.com/sveltejs/kit/pull/17104)) - fix: exit build workers after completing their tasks while allowing synchronous exit handlers to run ([#17135](https://github.com/sveltejs/kit/pull/17135)) - fix: respect `paths.relative` for server-side route resolution imports ([#17056](https://github.com/sveltejs/kit/pull/17056)) - fix: recommend safe include and exclude patterns in tsconfig warning ([#17102](https://github.com/sveltejs/kit/pull/17102)) - chore: configure the server runtime in one place, deprecate `Server` in favour of the `server` object written by `builder.generateServerInstance` ([#17000](https://github.com/sveltejs/kit/pull/17000)) - fix: reject fallback handlers on prerendered endpoints ([#17140](https://github.com/sveltejs/kit/pull/17140)) - fix: record client output extensions in `builder.mimeTypes` ([#16908](https://github.com/sveltejs/kit/pull/16908)) - fix: atomically replace route metadata during sync ([#17096](https://github.com/sveltejs/kit/pull/17096)) - fix: preserve sourcemap source paths when adapters copy build output ([#17082](https://github.com/sveltejs/kit/pull/17082)) - fix: prevent prerender crawler from hanging on unterminated unquoted attributes ([#17141](https://github.com/sveltejs/kit/pull/17141)) - fix: redact nested and typed underscore-prefixed remote form fields after invalid submissions ([#17128](https://github.com/sveltejs/kit/pull/17128)) - fix: correctly serialize Node.js buffers returned from remote functions during SSR ([#17158](https://github.com/sveltejs/kit/pull/17158)) - fix: preserve errors with read-only stack properties ([#17180](https://github.com/sveltejs/kit/pull/17180)) - fix: reject invalid binary form file metadata ([#17149](https://github.com/sveltejs/kit/pull/17149)) ### 3.0.0-next.27 - Date: 2026-09-08 - Version: 3.0.0-next.27 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.27 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.27 - Labels: Pre-release - **added** — Error when a client-requested single-flight mutation is not respected by the server, and allow the server to explicitly ignore refreshes - **removed** — Remove Server constructor and SSRManifest from public types - **changed** — Replace builder.generateManifest with builder.generateServerInstance and builder.manifest - **added** — Allow adapters to receive the Svelte config as a function argument when adding Vite plugins - **added** — Allow adapters to override getRequest and setResponse during vite dev and vite preview - **fixed** — Respect paths.relative during development for client files - **fixed** — Clarify circular imports from src/env - **changed** — Populate env vars before instrumentation.server.js is evaluated and update the adapter instrumentation API - **fixed** — Record a history traversal before resolving its route - **fixed** — Support coordinate objects from image inputs in remote forms - **fixed** — Walk and copy directories without a stat per file - **fixed** — Widen remote form fields for union schemas and string enums - **fixed** — Respond to HEAD requests without a body - **fixed** — Settle a query's pending request in place when its value arrives through set() - **fixed** — Prevent await_reactivity_loss warning and state_unsafe_mutation error when the new version detector runs after an await ###### Major Changes - major: error when a client-requested single-flight mutation isn't respected by the server, allow the server to explicitly ignore refreshes ([#16892](https://github.com/sveltejs/kit/pull/16892)) - breaking: remove `Server` constructor and `SSRManifest` from public types ([#16876](https://github.com/sveltejs/kit/pull/16876)) - breaking: replace the `builder.generateManifest` with `builder.generateServerInstance` and `builder.manifest` ([#16875](https://github.com/sveltejs/kit/pull/16875)) ###### Minor Changes - feat: allow adapters to receive the Svelte config as a function argument when adding Vite plugins ([#16986](https://github.com/sveltejs/kit/pull/16986)) - feat: allow adapters to override `getRequest` and `setResponse` during `vite dev` and `vite preview` ([#16753](https://github.com/sveltejs/kit/pull/16753)) ###### Patch Changes - fix: respect `paths.relative` during development for client files ([#17053](https://github.com/sveltejs/kit/pull/17053)) - fix: clarify circular imports from `src/env` ([#17014](https://github.com/sveltejs/kit/pull/17014)) - breaking: populate env vars before `instrumentation.server.js` is evaluated and update the adapter instrumentation API ([#16303](https://github.com/sveltejs/kit/pull/16303)) - fix: record a history traversal before resolving its route ([#16959](https://github.com/sveltejs/kit/pull/16959)) - fix: support coordinate objects from image inputs in remote forms ([#16944](https://github.com/sveltejs/kit/pull/16944)) - fix: walk and copy directories without a stat per file ([#16995](https://github.com/sveltejs/kit/pull/16995)) - fix: widen remote form fields for union schemas and string enums ([#16937](https://github.com/sveltejs/kit/pull/16937)) - fix: respond to `HEAD` requests without a body ([#17036](https://github.com/sveltejs/kit/pull/17036)) - chore: replace deprecated Vite dev server APIs ([#16961](https://github.com/sveltejs/kit/pull/16961)) - fix: settle a query's pending request in place when its value arrives through `set()` ([#16958](https://github.com/sveltejs/kit/pull/16958)) - fix: prevent `await_reactivity_loss` warning and `state_unsafe_mutation` error when the new version detector runs after an `await` ([#16915](https://github.com/sveltejs/kit/pull/16915)) - chore: parse page options and remote modules with Vite's `parseSync` instead of `acorn` ([#16947](https://github.com/sveltejs/kit/pull/16947)) ### 3.0.0-next.25 - Date: 2026-08-21 - Version: 3.0.0-next.25 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.25 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.25 - Labels: Pre-release - **added** — Add an applyReroute helper for adapters that support split serverless function deployments - **fixed** — Tweak response logging for remote requests - **fixed** — Discard invalidation results when a navigation completes while they load - **fixed** — Route dev-server response logging through Vite's logger so it respects logLevel and customLogger - **changed** — Build streamed responses from async generators - **changed** — Read build-time config from defines on the server instead of carrying it in options - **changed** — Read options from a single module instead of passing it through the server runtime ###### Minor Changes - feat: add an `applyReroute` helper for adapters that support split serverless function deployments ([#16665](https://github.com/sveltejs/kit/pull/16665)) ###### Patch Changes - chore: build streamed responses from async generators ([#16847](https://github.com/sveltejs/kit/pull/16847)) - fix: tweak response logging for remote requests ([#16865](https://github.com/sveltejs/kit/pull/16865)) - fix: discard invalidation results when a navigation completes while they load ([#16852](https://github.com/sveltejs/kit/pull/16852)) - fix: route dev-server response logging through Vite's logger so it respects `logLevel` and `customLogger` ([#16858](https://github.com/sveltejs/kit/pull/16858)) - chore: read build-time config from defines on the server instead of carrying it in `options` ([#16873](https://github.com/sveltejs/kit/pull/16873)) - chore: read `options` from a single module instead of passing it through the server runtime ([#16871](https://github.com/sveltejs/kit/pull/16871)) ### 3.0.0-next.24 - Date: 2026-08-20 - Version: 3.0.0-next.24 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.24 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.24 - Labels: Pre-release - **added** — Pass the project-relative source filename to the preload filter for fonts - **added** — Support the QUERY HTTP method in +server.js - **fixed** — Keep at most one pending body read at a time when deserializing binary forms - **fixed** — Render the nearest error page when a form submission receives a non-ActionResult error response - **fixed** — Reuse SSR-cached fetch responses during hydration when a cross-origin URL is not in canonical form - **fixed** — Resolve client manifest imports against the Vite root - **fixed** — Render the nearest +error.svelte at the depth it occupies when an error is thrown during rendering - **fixed** — Wait for the redirect navigation before remote form submissions resolve - **fixed** — Only suggest a + prefix for route filenames that are valid with the file's extension - **fixed** — Don't throw from remote form validate() if the form unmounts while it is waiting for a tick - **fixed** — Rerun load functions when the number of values of a tracked search parameter changes - **fixed** — Preserve paths.base when vite preview redirects a prerendered page to the correct trailing slash - **fixed** — Don't crash on interactions inside a form whose controls shadow nodeName - **fixed** — Correctly read zero-length files at the end of a binary form payload - **fixed** — Wait for the redirect navigation before prerendered remote functions resolve - **fixed** — Return root layout server data for error-page data requests to non-existent routes - **changed** — Parse large streamed frames in linear time ###### Minor Changes - feat: pass the project-relative source `filename` to the `preload` filter for fonts ([#16443](https://github.com/sveltejs/kit/pull/16443)) - feat: support the `QUERY` HTTP method in `+server.js` ([#16782](https://github.com/sveltejs/kit/pull/16782)) ###### Patch Changes - chore: share the action error result between form actions and remote forms ([#16835](https://github.com/sveltejs/kit/pull/16835)) - perf: parse large streamed frames in linear time ([#16489](https://github.com/sveltejs/kit/pull/16489)) - fix: keep at most one pending body read at a time when deserializing binary forms ([#16783](https://github.com/sveltejs/kit/pull/16783)) - fix: render the nearest error page when a form submission receives a non-ActionResult error response ([#16308](https://github.com/sveltejs/kit/pull/16308)) - chore: generate the env modules in a single pass ([#16833](https://github.com/sveltejs/kit/pull/16833)) - fix: reuse SSR-cached fetch responses during hydration when a cross-origin URL is not in canonical form ([#16339](https://github.com/sveltejs/kit/pull/16339)) - fix: resolve client manifest imports against the Vite root ([#16803](https://github.com/sveltejs/kit/pull/16803)) - fix: render the nearest `+error.svelte` at the depth it occupies when an error is thrown during rendering ([#16526](https://github.com/sveltejs/kit/pull/16526)) - fix: wait for the redirect navigation before remote form submissions resolve ([#16765](https://github.com/sveltejs/kit/pull/16765)) - fix: only suggest a `+` prefix for route filenames that are valid with the file's extension ([#16837](https://github.com/sveltejs/kit/pull/16837)) - fix: don't throw from remote form `validate()` if the form unmounts while it is waiting for a tick ([#16720](https://github.com/sveltejs/kit/pull/16720)) - chore: share navigation completion between navigate and shallow routing ([#16838](https://github.com/sveltejs/kit/pull/16838)) - fix: rerun load functions when the number of values of a tracked search parameter changes ([#16495](https://github.com/sveltejs/kit/pull/16495)) - fix: preserve `paths.base` when `vite preview` redirects a prerendered page to the correct trailing slash ([#16836](https://github.com/sveltejs/kit/pull/16836)) - chore: iterate the query cache maps through a single generator ([#16846](https://github.com/sveltejs/kit/pull/16846)) - fix: don't crash on interactions inside a form whose controls shadow `nodeName` ([#16769](https://github.com/sveltejs/kit/pull/16769)) - chore: remove unused helpers ([#16834](https://github.com/sveltejs/kit/pull/16834)) - fix: correctly read zero-length files at the end of a binary form payload ([#16783](https://github.com/sveltejs/kit/pull/16783)) - chore: remove virtual modules ([#16745](https://github.com/sveltejs/kit/pull/16745)) - fix: wait for the redirect navigation before prerendered remote functions resolve ([#16765](https://github.com/sveltejs/kit/pull/16765)) - chore: share the nearest error page walk between client and server ([#16774](https://github.com/sveltejs/kit/pull/16774)) - fix: return root layout server data for error-page data requests to non-existent routes ([#16376](https://github.com/sveltejs/kit/pull/16376)) - chore: unify the `walk` and `list_files` filesystem helpers ([#16784](https://github.com/sveltejs/kit/pull/16784)) - chore: emit env modules to disk ([#16745](https://github.com/sveltejs/kit/pull/16745)) ### 2.70.3 - Date: 2026-08-18 - Version: 2.70.3 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%402.70.3 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/2.70.3 - **fixed** — avoid eagerly reading $app/state dependencies during module initialization ###### Patch Changes - fix: avoid eagerly reading `$app/state` dependencies during module initialization ([`b61018d`](https://github.com/sveltejs/kit/commit/b61018d0526e827d1ef8cf8e21ef62b92230ae3d)) ### 3.0.0-next.23 - Date: 2026-08-13 - Version: 3.0.0-next.23 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.23 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.23 - Labels: Pre-release - **fixed** — Only print prerender progress newline when necessary ###### Patch Changes - fix: only print prerender progress newline when necessary ([#16766](https://github.com/sveltejs/kit/pull/16766)) ### 3.0.0-next.22 - Date: 2026-08-13 - Version: 3.0.0-next.22 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.22 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.22 - Labels: Pre-release - **fixed** — respect Vite default log level ###### Patch Changes - fix: respect Vite default log level ([#16767](https://github.com/sveltejs/kit/pull/16767)) ### 3.0.0-next.21 - Date: 2026-08-12 - Version: 3.0.0-next.21 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.21 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.21 - Labels: Pre-release - **removed** — move remote function types and isValidationError to @sveltejs/kit/remote - **removed** — move RequestEvent and Cookies to $app/server - **fixed** — correctly implement Vite plugin hook filters - **fixed** — yield to allow prerender updates to be visible - **fixed** — don't destroy partial-line app output with the prerender progress line ###### Major Changes - breaking: move remote function types and `isValidationError` to `@sveltejs/kit/remote` ([#16764](https://github.com/sveltejs/kit/pull/16764)) - breaking: move `RequestEvent` and `Cookies` to `$app/server` ([#16751](https://github.com/sveltejs/kit/pull/16751)) ###### Patch Changes - fix: correctly implement Vite plugin hook filters ([#16760](https://github.com/sveltejs/kit/pull/16760)) - fix: yield to allow prerender updates to be visible ([#16748](https://github.com/sveltejs/kit/pull/16748)) - fix: don't destroy partial-line app output with the prerender progress line ([#16750](https://github.com/sveltejs/kit/pull/16750)) ### 3.0.0-next.20 - Date: 2026-08-11 - Version: 3.0.0-next.20 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.20 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.20 - Labels: Pre-release - **removed** — Move remote function types to $app/server - **removed** — Remove #lib definition from paths; requires explicit module extensions - **removed** — Move hooks-related types to @sveltejs/kit/hooks - **removed** — Move env-related types to @sveltejs/kit/env - **added** — Better response logging - **fixed** — Avoid infinite loop when building with --watch flag ###### Major Changes - breaking: move remote function types to `$app/server` ([#16740](https://github.com/sveltejs/kit/pull/16740)) - breaking: remove `#lib` definition from `paths`; requires explicit module extensions as a result ([#16736](https://github.com/sveltejs/kit/pull/16736)) - breaking: move hooks-related types to `@sveltejs/kit/hooks` ([#16737](https://github.com/sveltejs/kit/pull/16737)) - breaking: move env-related types to `@sveltejs/kit/env` ([#16739](https://github.com/sveltejs/kit/pull/16739)) ###### Minor Changes - feat: better response logging ([#16744](https://github.com/sveltejs/kit/pull/16744)) ###### Patch Changes - chore: bump `mrmime` to 2.0.1 ([#16745](https://github.com/sveltejs/kit/pull/16745)) - chore: bump `@sveltejs/acorn-typescript` to 1.0.12 ([#16745](https://github.com/sveltejs/kit/pull/16745)) - chore: bump `magic-string` to 1.1.0 ([#16745](https://github.com/sveltejs/kit/pull/16745)) - chore: bump `devalue` to 5.9.0 ([#16745](https://github.com/sveltejs/kit/pull/16745)) - chore: bump `cookie` to 2.0.1 ([#16745](https://github.com/sveltejs/kit/pull/16745)) - chore: bump `acorn` to 8.18.0 ([#16745](https://github.com/sveltejs/kit/pull/16745)) - fix: avoid infinite loop when building with `--watch` flag ([#16632](https://github.com/sveltejs/kit/pull/16632)) ### 3.0.0-next.19 - Date: 2026-08-11 - Version: 3.0.0-next.19 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.19 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.19 - Labels: Pre-release - **removed** — Move `defineParams` and associated types to `@sveltejs/kit/params` - **changed** — Run all errors through the `handleError` hook - **removed** — Move `Page`, `ReadonlyURL` and `ReadonlyURLSearchParams` from `@sveltejs/kit` to `$app/state` - **removed** — Move `BeforeNavigate`, `OnNavigate`, `AfterNavigate`, `Navigation`, `NavigationTarget`, `NavigationType`, `GotoOptions` and the `Navigation*` variant types from `@sveltejs/kit` to `$app/navigation` - **removed** — Move `ActionResult` and `SubmitFunction` from `@sveltejs/kit` to `$app/forms` - **removed** — Remove `handleValidationError` and pass remote function validation errors to `handleError` with `kind: 'validation'` - **added** — Ignore files with + prefix if they contain test/spec/stories - **fixed** — Rebuild the dev manifest when route files disappear during an incremental update - **fixed** — Externalize `@opentelemetry/api` to prevent bundler chunk colocation between `instrumentation.server.js` and application code - **fixed** — Surface prerender errors during development - **fixed** — Adjust error overload for optional `App.Error` parameters ###### Major Changes - breaking: move `defineParams` and associated types to `@sveltejs/kit/params` ([#16716](https://github.com/sveltejs/kit/pull/16716)) - breaking: run all errors through the `handleError` hook ([#16664](https://github.com/sveltejs/kit/pull/16664)) - breaking: move `Page`, `ReadonlyURL` and `ReadonlyURLSearchParams` from `@sveltejs/kit` to `$app/state` ([#16694](https://github.com/sveltejs/kit/pull/16694)) - breaking: move `BeforeNavigate`, `OnNavigate`, `AfterNavigate`, `Navigation`, `NavigationTarget`, `NavigationType`, `GotoOptions` and the `Navigation*` variant types from `@sveltejs/kit` to `$app/navigation` ([#16694](https://github.com/sveltejs/kit/pull/16694)) - breaking: move `ActionResult` and `SubmitFunction` from `@sveltejs/kit` to `$app/forms` ([#16694](https://github.com/sveltejs/kit/pull/16694)) - breaking: remove `handleValidationError` and pass remote function validation errors to `handleError` with `kind: 'validation'` ([#16672](https://github.com/sveltejs/kit/pull/16672)) ###### Minor Changes - feat: ignore files with + prefix if they contain test/spec/stories ([#16715](https://github.com/sveltejs/kit/pull/16715)) ###### Patch Changes - fix: rebuild the dev manifest when route files disappear during an incremental update ([#16643](https://github.com/sveltejs/kit/pull/16643)) - fix: externalize `@opentelemetry/api` to prevent bundler chunk colocation between `instrumentation.server.js` and application code ([#16302](https://github.com/sveltejs/kit/pull/16302)) - fix: surface prerender errors during development ([#16507](https://github.com/sveltejs/kit/pull/16507)) - fix: adjust error overload for optional `App.Error` parameters ([#16725](https://github.com/sveltejs/kit/pull/16725)) ### 3.0.0-next.18 - Date: 2026-08-10 - Version: 3.0.0-next.18 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.18 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.18 - Labels: Pre-release - **changed** — adapter Vite plugins are now separated into pre and post plugins ###### Major Changes - breaking: separate adapter Vite plugins into `pre` and `post` ([#16711](https://github.com/sveltejs/kit/pull/16711)) ### 3.0.0-next.17 - Date: 2026-08-10 - Version: 3.0.0-next.17 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.17 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.17 - Labels: Pre-release - **changed** — Enhanced cross-page form actions now navigate to the action page on success and failure, matching native form behavior - **deprecated** — The `export const snapshot` pattern is deprecated in favour of the `snapshot` helper - **added** — Add `snapshot` helper to `$app/navigation` ###### Major Changes - breaking: enhanced cross-page form actions now navigate to the action page on success and failure, matching native form behavior ([#16684](https://github.com/sveltejs/kit/pull/16684)) ###### Minor Changes - chore: deprecate `export const snapshot` in favour of the `snapshot` helper ([#16687](https://github.com/sveltejs/kit/pull/16687)) - feat: add `snapshot` helper to `$app/navigation` ([#16685](https://github.com/sveltejs/kit/pull/16685)) ### 3.0.0-next.16 - Date: 2026-08-07 - Version: 3.0.0-next.16 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.16 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.16 - Labels: Pre-release - **fixed** — Generate route resolution modules as siblings of .html pages ###### Patch Changes - fix: generate route resolution modules as siblings of `.html` pages ([#16674](https://github.com/sveltejs/kit/pull/16674)) ### 3.0.0-next.15 - Date: 2026-08-07 - Version: 3.0.0-next.15 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.15 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.15 - Labels: Pre-release - **removed** — Remove `experimental.handleRenderingErrors` flag - **changed** — Make `getRequest` and `setResponse` synchronous - **changed** — TypeScript 6 is now the minimum required version - **changed** — Refresh all load functions/queries when clicking a link to the current URL - **changed** — Upgrade to `cookie` v2, cookie names must now contain only ASCII characters - **changed** — Require Node 22 or newer - **removed** — Remove the `preloadStrategy` option, `modulepreload` will always be used - **changed** — Default the cookie `path` option to `'/'` - **removed** — Remove `@sveltejs/kit/node/polyfills` - **added** — Add `config.kit.output.linkHeaderPreload` to preload using the `Link` header - **changed** — Require `@sveltejs/vite-plugin-svelte` v7 - **changed** — Make `page.url` immutable on a type level - **removed** — Remove `base`, `assets`, and `resolveRoute` from `$app/paths` - **removed** — Remove `createEntries` from the `Builder` object passed to adapter functions - **changed** — Return no content for 204 responses - **changed** — Rename `Pathname` type to `Path` and `Asset` to `AssetPath`, and remove leading `/` from `Path` and `AssetPath` - **changed** — Make `handle`'s `resolve` always return a `Promise` - **changed** — Require Svelte config options to be passed through the Vite plugin - **changed** — Form action responses now use the HTTP status code returned from `fail` - **changed** — Write tsconfig to `node_modules/$app/tsconfig` - **removed** — Remove the deprecated CSRF `checkOrigin` option in favor of `trustedOrigins` ###### 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 _[Truncated at 4000 characters — full notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.15]_ ### 3.0.0-next.14 - Date: 2026-08-04 - Version: 3.0.0-next.14 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.14 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.14 - Labels: Pre-release - **changed** — Refresh all load functions and queries when clicking a link to the current URL - **changed** — Only include routes with a +page or +server in RouteId - **changed** — Require Node 22.17 - **changed** — preloadCode now takes a route ID instead of a pathname, and route IDs are not prefixed with paths.base - **removed** — Remove deprecated .run() method from live queries - **added** — Return the list of compressed files from builder.compress - **added** — Add page and endpoint booleans to $app/manifest's routes and export a ManifestRoute type - **added** — Add PageRouteId and EndpointRouteId types to $app/types - **fixed** — Generate valid Path types for routes with optional or rest params, several params in one segment, or escape sequences - **fixed** — Decode all numeric character references above ffff when crawling prerendered pages - **fixed** — Don't treat Object.prototype members as param matchers during validation - **fixed** — Exclude routes without a page or endpoint from routes in $app/manifest and remove directories with no route files from LayoutParams - **fixed** — Record the mime types of prerendered paths in the server manifest - **fixed** — Expand [x+nn] and [u+nnnn] escape sequences when resolving a route id to a pathname - **fixed** — Allow routes to contain [ and ] via the [x+5b] and [x+5d] escapes - **fixed** — Import resolved peer dependencies as file URLs so project-relative resolution works on Windows - **fixed** — Write generated tsconfig to node_modules/$app/tsconfig.json so that tools with simplified tsconfig resolution can find it - **fixed** — Prerender and crawl pages whose content-type header carries a charset parameter - **fixed** — Stream promised read results lazily instead of eagerly buffering them ###### Major Changes - breaking: refresh all load functions/queries when clicking a link to the current URL ([#16572](https://github.com/sveltejs/kit/pull/16572)) - breaking: only include routes with a `+page` or `+server` in `RouteId` ([#16580](https://github.com/sveltejs/kit/pull/16580)) - breaking: require Node 22.17 ([#16597](https://github.com/sveltejs/kit/pull/16597)) - breaking: `preloadCode` now takes a route ID (e.g. `/blog/[slug]`) instead of a pathname. Route IDs are not prefixed with `paths.base` ([#16576](https://github.com/sveltejs/kit/pull/16576)) - breaking: remove deprecated `.run()` method from live queries ([#16573](https://github.com/sveltejs/kit/pull/16573)) ###### Minor Changes - feat: return the list of compressed files from `builder.compress` ([#16566](https://github.com/sveltejs/kit/pull/16566)) - feat: add `page` and `endpoint` booleans to `$app/manifest`'s `routes`, and export a `ManifestRoute` type ([#16594](https://github.com/sveltejs/kit/pull/16594)) - feat: add `PageRouteId` and `EndpointRouteId` to `$app/types` ([#16594](https://github.com/sveltejs/kit/pull/16594)) ###### Patch Changes - fix: generate valid `Path` types for routes with optional or rest params, several params in one segment, or escape sequences ([#16577](https://github.com/sveltejs/kit/pull/16577)) - fix: decode all numeric character references, including above `ffff`, when crawling prerendered pages ([#16611](https://github.com/sveltejs/kit/pull/16611)) - chore: deduplicate request hashing for serialized fetch responses ([#16499](https://github.com/sveltejs/kit/pull/16499)) - fix: don't treat `Object.prototype` members as param matchers during validation ([#16612](https://github.com/sveltejs/kit/pull/16612)) - fix: exclude routes without a page or endpoint from `routes` in `$app/manifest`, and remove directories with no route files from `LayoutParams` ([#16588](https://github.com/sveltejs/kit/pull/16588)) - chore: reuse base64 and text decoding helpers ([#16608](https://github.com/sveltejs/kit/pull/16608)) - fix: record the mime types of prerendered paths in the server manifest ([#16564](https://github.com/sveltejs/kit/pull/16564)) - chore: only generate each route's resolution module once when prerendering ([#16576](https://github.com/sveltejs/kit/pull/16576)) - fix: expand `[x+nn]` and `[u+nnnn]` escape sequences when resolving a route id to a pathname ([#16570](https://github.com/sveltejs/kit/pull/16570)) - fix: allow routes to contain `[` and `]` via the `[x+5b]` and `[x+5d]` escapes ([#16569](https://github.com/sveltejs/kit/pull/16569)) - chore: remove the dead `SSRState.fallback` field and name the server state fork semantics ([#16598](https://github.com/sveltejs/kit/pull/16598)) - fix: import resolved peer dependencies as file URLs so project-relative resolution works on Windows ([#16618](https://github.com/sveltejs/kit/pull/16618)) - fix: write generated tsconfig to `node_modules/$app/tsconfig.json` so that tools with simplified tsconfig resolution can find it ([#16589](https://github.com/sveltejs/kit/pull/16589)) - fix: prerender and crawl pages whose `content-type` header carries a `charset` parameter ([#16567](https://github.com/sveltejs/kit/pull/16567)) - fix: stream promised `read` results lazily instead of eagerly buffering them ([#16622](https://github.com/sveltejs/kit/pull/16622)) - fix: correctly decode `[u+nnnn]` escape sequences above `ffff` ([#16611](https://github.com/sveltejs/kit/pull/16611)) ### 2.70.2 - Date: 2026-07-29 - Version: 2.70.2 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%402.70.2 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/2.70.2 - **fixed** — prevent quadratic backtracking in Accept header content negotiation ###### Patch Changes - fix: prevent quadratic backtracking in `Accept` header content negotiation ([#1](https://github.com/homebase-garage/igeclouds.github.io/pull/1)) ### 3.0.0-next.13 - Date: 2026-07-29 - Version: 3.0.0-next.13 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.13 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.13 - Labels: Pre-release - **removed** — 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 - **deprecated** — Deprecate error(status, {...}) in favour of error(status, message, {...}) - **added** — Add shallow routing to goto and deprecate pushState and replaceState - **added** — Preserve page state set through goto(..., { state, persistState: true }) across reloads - **fixed** — Avoid Vite dev server reload on initial page request - **fixed** — Don't set a null accept-language header on internal fetch sub-requests when the incoming request has none - **fixed** — Correctly detect prerendered paths in server fetch when paths.base is set - **fixed** — Don't duplicate remote modules in the generated manifest - **fixed** — Exclude inlined files from the page's $app/manifest immutable list - **fixed** — Don't attempt to serialize fetch responses when the request body is not a string or TypedArray - **fixed** — Read the error status of App.Error in the prerender and query.live remote functions - **fixed** — Propagate errors from prerendered remote responses instead of re-running the function - **fixed** — Respect the status returned from handleError on the fallback error page served to error-page sub-requests - **fixed** — Skip unnecessary version.json checks if updated.current is already true - **fixed** — Allow generation of $app/tsconfig without TypeScript installed - **fixed** — Only include _app/immutable files in $app/manifest's immutable in the service worker - **fixed** — Log errors caught by the Vite dev server handler - **fixed** — Resolve root per instance of the SvelteKit Vite plugin - **fixed** — Ignore path casing differences when warning about overridden Vite config on Windows ###### Major Changes - 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` ([#16558](https://github.com/sveltejs/kit/pull/16558)) - breaking: deprecate `error(status, {...})` in favour of `error(status, message, {...})` ([#16540](https://github.com/sveltejs/kit/pull/16540)) ###### Minor Changes - feat: add shallow routing to `goto` and deprecate `pushState` and `replaceState` ([#16449](https://github.com/sveltejs/kit/pull/16449)) - feat: preserve page state set through `goto(..., { state, persistState: true })` across reloads ([#16449](https://github.com/sveltejs/kit/pull/16449)) ###### Patch Changes - chore: deduplicate repeated CSP directive handling ([#16498](https://github.com/sveltejs/kit/pull/16498)) - fix: avoid Vite dev server reload on initial page request ([#16553](https://github.com/sveltejs/kit/pull/16553)) - fix: don't set a `null` `accept-language` header on internal `fetch` sub-requests when the incoming request has none ([#16527](https://github.com/sveltejs/kit/pull/16527)) - fix: correctly detect prerendered paths in server `fetch` when `paths.base` is set ([#16525](https://github.com/sveltejs/kit/pull/16525)) - fix: don't duplicate remote modules in the generated manifest ([#16532](https://github.com/sveltejs/kit/pull/16532)) - fix: exclude inlined files from the page's `$app/manifest` immutable list ([#16531](https://github.com/sveltejs/kit/pull/16531)) - perf: avoid quadratic remote form issue merging ([#16493](https://github.com/sveltejs/kit/pull/16493)) - fix: don't attempt to serialize fetch responses when the request body is not a string or TypedArray ([#16501](https://github.com/sveltejs/kit/pull/16501)) - fix: read the error status of `App.Error` in the `prerender` and `query.live` remote functions ([#16529](https://github.com/sveltejs/kit/pull/16529)) - fix: propagate errors from prerendered remote responses instead of re-running the function ([#16535](https://github.com/sveltejs/kit/pull/16535)) - fix: respect the status returned from `handleError` on the fallback error page served to error-page sub-requests ([#16528](https://github.com/sveltejs/kit/pull/16528)) - fix: skip unnecessary `version.json` checks if `updated.current` is already `true` ([#16518](https://github.com/sveltejs/kit/pull/16518)) - fix: allow generation of $app/tsconfig without TypeScript installed ([#16534](https://github.com/sveltejs/kit/pull/16534)) - perf: use a `Set` to check element ids when validating fragment links during prerendering ([#16494](https://github.com/sveltejs/kit/pull/16494)) - fix: only include `_app/immutable` files in `$app/manifest`'s `immutable` in the service worker ([#16531](https://github.com/sveltejs/kit/pull/16531)) - fix: log errors caught by the Vite dev server handler ([#16550](https://github.com/sveltejs/kit/pull/16550)) - fix: resolve `root` per instance of the SvelteKit Vite plugin ([#16513](https://github.com/sveltejs/kit/pull/16513)) - fix: ignore path casing differences when warning about overridden Vite config on Windows ([#16545](https://github.com/sveltejs/kit/pull/16545)) - fix: preserve the current URL search parameters when submitting a remote form without JavaScript ([#16373](https://github.com/sveltejs/kit/pull/16373)) - fix: treeshake prerendered remote functions in the right chunks ([#16533](https://github.com/sveltejs/kit/pull/16533)) - fix: error during development if the adapter does not support instrumentation and it exists ([#16548](https://github.com/sveltejs/kit/pull/16548)) ### 3.0.0-next.12 - Date: 2026-07-24 - Version: 3.0.0-next.12 - Original notes: https://github.com/sveltejs/kit/releases/tag/%40sveltejs/kit%403.0.0-next.12 - Permalink: https://whatsnew.fyi/product/sveltekit/releases/3.0.0-next.12 - Labels: Pre-release - **removed** — Rename Pathname type to Path and Asset to AssetPath - **removed** — Remove leading / from Path and AssetPath - **changed** — Write tsconfig to node_modules/$app/tsconfig - **removed** — Error on event.url, event.params and event.route access inside queries - **removed** — Delete $service-worker module - **changed** — Detect new deployments on data, remote, and form action responses, tab focus, and visibility change, and default version.pollInterval to 1 hour - **added** — Add $app/manifest module with immutable, assets, prerendered, and routes exports - **added** — Validate that all remote form fields were created with form.fields.foo.as(...) - **added** — Make $app/paths importable in service workers - **added** — Add $app/service-worker module - **added** — Improve tsconfig validation - **fixed** — Default cookies to secure to false during development - **fixed** — Allow undefined values to be passed to form field .as(...) where applicable - **fixed** — Include queries refreshed from within another query in the serialized response - **fixed** — Generate sourcemaps for remote modules - **fixed** — Avoid empty getElementById() call on hash routing navigation - **fixed** — Warn if hook files are spelled as "hook" instead of "hooks" - **deprecated** — Deprecate the alias option - **fixed** — Prevent infinite loops when server-side queries refresh each other in a cycle during the single-flight drain ###### Major Changes - breaking: rename `Pathname` type to `Path` and `Asset` to `AssetPath` ([#16430](https://github.com/sveltejs/kit/pull/16430)) breaking: remove leading `/` from `Path` and `AssetPath` - breaking: write tsconfig to `node_modules/$app/tsconfig` ([#16458](https://github.com/sveltejs/kit/pull/16458)) - breaking: error on `event.url`, `event.params` and `event.route` access inside queries ([#16452](https://github.com/sveltejs/kit/pull/16452)) - breaking: delete `$service-worker` module ([#16450](https://github.com/sveltejs/kit/pull/16450)) - breaking: detect new deployments on data, remote, and form action responses, tab focus, and visibility change, and default `version.pollInterval` to 1 hour ([#16496](https://github.com/sveltejs/kit/pull/16496)) ###### Minor Changes - feat: add `$app/manifest` module with `immutable`, `assets`, `prerendered`, and `routes` exports ([#16372](https://github.com/sveltejs/kit/pull/16372)) - feat: validate that all remote form fields were created with form.fields.foo.as(...) ([#16331](https://github.com/sveltejs/kit/pull/16331)) - feat: make `$app/paths` importable in service workers ([#16441](https://github.com/sveltejs/kit/pull/16441)) - feat: `$app/service-worker` module ([#16458](https://github.com/sveltejs/kit/pull/16458)) - feat: better tsconfig validation ([#16458](https://github.com/sveltejs/kit/pull/16458)) - fix: default cookies to `secure` to `false` during development ([#16462](https://github.com/sveltejs/kit/pull/16462)) ###### Patch Changes - fix: allow `undefined` values to be passed to form field `.as(...)` where applicable ([#15681](https://github.com/sveltejs/kit/pull/15681)) - fix: include queries refreshed from within another query in the serialized response ([#16461](https://github.com/sveltejs/kit/pull/16461)) - fix: generate sourcemaps for remote modules ([#16440](https://github.com/sveltejs/kit/pull/16440)) - fix: avoid empty getElementById() call on hash routing navigation ([#16448](https://github.com/sveltejs/kit/pull/16448)) - fix: warn if hook files are spelled as "hook" instead of "hooks" ([#16483](https://github.com/sveltejs/kit/pull/16483)) - chore: deprecate the `alias` option ([#16470](https://github.com/sveltejs/kit/pull/16470)) - fix: prevent infinite loops when server-side queries refresh each other in a cycle during the single-flight drain ([#16461](https://github.com/sveltejs/kit/pull/16461)) - fix: populate `version` in service workers ([#16434](https://github.com/sveltejs/kit/pull/16434)) - fix: resolve remote modules as external during dev prebundling so packages can re-export remote functions ([#16426](https://github.com/sveltejs/kit/pull/16426)) - fix: refetch route-tracking server data when navigating away from an error page ([#16381](https://github.com/sveltejs/kit/pull/16381)) - fix: serialize `query(...).set(...)`/`query(...).refresh()` values into the rendered HTML when called from within a query during SSR ([#16461](https://github.com/sveltejs/kit/pull/16461)) - fix: fall back to the page's form actions when a sibling endpoint has no POST handler ([#16349](https://github.com/sveltejs/kit/pull/16349)) - fix: return a lightweight 404 instead of rendering the error page for subresource requests ([#16463](https://github.com/sveltejs/kit/pull/16463)) - fix: preserve stripped path prefixes by making trailing-slash redirects relative ([#16431](https://github.com/sveltejs/kit/pull/16431)) - chore: deduplicate type-stripping logic in `tweak_types` ([#16454](https://github.com/sveltejs/kit/pull/16454)) - fix: more informative error message when running a command inside a query or prerender function ([`eb5c973`](https://github.com/sveltejs/kit/commit/eb5c9737b6d74c53f572b3e047faa5947052ced2))