SvelteKit Updates & Release Notes

Follow

118 updates curated from 1 source by the Releasebot Team. Last updated: Oct 1, 2026

Get this feed:
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit requires Node 22 or newer and adds new warnings for server-only file usage plus alias-to-relative import transforms. This release also improves glob import handling, type generation, and Windows resolution while trimming a few dependencies.

    Major Changes

    breaking: require Node 22 or newer (#12548)

    Minor Changes

    feat: warn when using a .server. file or file inside a server directory without importing a server-only module (#16266)

    feat: transform import aliases into relative imports in files (#16360)

    Patch Changes

    chore: remove dependency on sade (#16619)

    chore: bump svelte2tsx to 0.7.59 (#16745)

    fix: rewrite .ts extensions in import.meta.glob patterns when rewriteRelativeImportExtensions is enabled (#16776)

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

    chore: read the Svelte config via @sveltejs/load-config (#17039)

    chore: remove dependency on kleur (#12548)

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

    fix: emit declarations when the tsconfig lives above the package root (#16568)

    chore: bump svelte2tsx to 0.7.60 (#16761)

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

    Original source
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit ships a major release packed with breaking changes, modern runtime requirements, and broad platform updates. It moves APIs into new modules, refreshes routing and form behavior, adds stronger TypeScript and Vite support, and brings many fixes, performance improvements, and remote form enhancements.

    Major Changes

    • breaking: move remote function types to $app/server (#16740)
    • breaking: remove experimental.handleRenderingErrors flag (#16265)
    • breaking: make getRequest and setResponse synchronous (#16280)
    • breaking: TypeScript 6 is now the minimum required version (#15930)
    • breaking: refresh all load functions/queries when clicking a link to the current URL (#16572)
    • breaking: move remote function types to $app/server (#16764)
    • breaking: upgrade to cookie v2. Cookie names must now contain only ASCII characters (#13386)
    • breaking: require Node 22 or newer (#12548)
    • major: error when a client-requested single-flight mutation isn't respected by the server, allow the server to explicitly ignore refreshes (#16892)
    • breaking: remove the preloadStrategy option. modulepreload will always be used (#15256)
    • breaking: default the cookie path option to '/' (#15398)
    • breaking: remove @sveltejs/kit/node/polyfills (#15430)
    • breaking: add config.kit.output.linkHeaderPreload to preload using the Link header (#15939)
    • breaking: require @sveltejs/vite-plugin-svelte v7 (#15371)
    • breaking: make page.url immutable on a type level (#16256)
    • breaking: remove base, assets, and resolveRoute from $app/paths (#15507)
    • breaking: remove createEntries from the Builder object passed to adapter functions (#15509)
    • breaking: return no content for 204 responses (#16200)
    • breaking: rename Pathname type to Path and Asset to AssetPath (#16430)
    • breaking: remove leading / from Path and AssetPath
    • breaking: handle's resolve is now typed to always return a Promise (#16352)
    • breaking: remove Server constructor and SSRManifest from public types (#16876)
    • breaking: require Svelte config options to be passed through the Vite plugin (#16007)
    • breaking: form action responses now use the HTTP status code returned from fail (#16200)
    • breaking: write tsconfig to node_modules/$app/tsconfig (#16458)
    • breaking: move defineParams and associated types to @sveltejs/kit/params (#16716)
    • breaking: remove the deprecated CSRF checkOrigin option in favor of trustedOrigins (#15437)
    • breaking: the delta property now only exists for popstate navigation events (#15522)
    • breaking: change form.error type from any to App.Error | undefined (#16245)
    • breaking: remove deprecated pragma header in version polling for improved CORS support (#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)
    • breaking: run all errors through the handleError hook (#16664)
    • breaking: require Svelte 5.56.4 or newer (#15371)
    • breaking: error on event.url, event.params and event.route access inside queries (#16452)
    • breaking: enhanced cross-page form actions now navigate to the action page on success and failure, matching native form behavior (#16684)
    • breaking: delete $service-worker module (#16450)
    • breaking: move defineEnvVars to @sveltejs/kit/env (#16375)
    • breaking: nested server-only directories (#15685)
    • feat: allow adapters to provide additional Vite plugins (#16206)
    • breaking: replace the $lib alias with #lib and remove files.lib config. (#16360)
    • breaking: remove #lib definition from paths; requires explicit module extensions as a result (#16736)
    • chore: change error, isHttpError, redirect, and isRedirect to refer to public type instead of internal class (#13036)
    • breaking: move hooks-related types to @sveltejs/kit/hooks (#16737)
    • breaking: add 'error' result type to preloadData (#12579)
    • breaking: detect new deployments on data, remote, and form action responses, tab focus, and visibility change, and default version.pollInterval to 1 hour (#16496)
    • breaking: disallow cross-origin form submissions without a Content-Type header (#16347)
    • 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) (#16360)
    • breaking: config exported from a universal route file takes precedence over a server one (#16400)
    • 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 (#15371)
    • breaking: remove data-sveltekit-* option 'off' in favour of false (#15907)
    • breaking: move tracing out of the experimental namespace and remove the instrumentation flag (#16260)
    • breaking: add kit.paths.origin config option, remove kit.prerender.origin and the adapter-node ORIGIN environment variable (#16161)
    • breaking: move Page, ReadonlyURL and ReadonlyURLSearchParams from @sveltejs/kit to $app/state (#16694)
    • breaking: remove $app/stores (#15499)
    • breaking: add refreshAll and deprecate invalidateAll (#16289)
    • breaking: reject query parameters beginning with x-sveltekit- (#17125)
    • breaking: disallow *.remote.ts/js files unless experimental.remoteFunctions is enabled (#16247)
    • 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)
    • breaking: don't abort navigation when calling invalidate(All) during navigation (#16188)
    • breaking: consistent special filename patterns (#16382)
    • breaking: allow handleError to influence status code (#16162)
    • breaking: delegate CORS handling to Vite for static directory requests during development (#16357)
    • breaking: require vite@^8.0.12, the first Vite 8 release bundling stable rolldown 1.0.0 (#16134)
    • breaking: only include routes with a +page or +server in RouteId (#16580)
    • breaking: require Node 22.17 (#16597)
    • breaking: deprecate error(status, {...}) in favour of error(status, message, {...}) (#16540)
    • breaking: replace the builder.generateManifest with builder.generateServerInstance and builder.manifest (#16875)
    • breaking: forbid external redirects by default (#16198)
    • breaking: separate adapter Vite plugins into pre and post (#16711)
    • breaking: remove param files in folder in favor of params.js/ts file (#16189)
    • breaking: move env-related types to @sveltejs/kit/env (#16739)
    • breaking: preloadCode now takes a route ID (e.g. /blog/[slug]) instead of a pathname. Route IDs are not prefixed with paths.base (#16576)
    • breaking: move BeforeNavigate, OnNavigate, AfterNavigate, Navigation, NavigationTarget, NavigationType, GotoOptions and the Navigation* variant types from @sveltejs/kit to $app/navigation (#16694)
    • breaking: move ActionResult and SubmitFunction from @sveltejs/kit to $app/forms (#16694)
    • breaking: remove handleValidationError and pass remote function validation errors to handleError with kind: 'validation' (#16672)
    • breaking: remove deprecated .run() method from live queries (#16573)

    Minor Changes

    • feat: allow hyphens in param and matcher names (#16284)
    • feat: add $app/manifest module with immutable, assets, prerendered, and routes exports (#16372)
    • feat: ignore files with + prefix if they contain test/spec/stories (#16715)
    • feat: add ErrorProps to generated types (#16272)
    • feat: support sourcemaps in production (#16412)
    • feat: return the list of compressed files from builder.compress (#16566)
    • feat: better response logging (#16744)
    • feat: warn when tsconfig doesn't exclude service worker (#16645)
    • feat: validate that all remote form fields were created with form.fields.foo.as(...) (#16331)
    • feat: support function validators for environment variables (#16402)
    • feat: use type: 'module' for service worker registrations (#16169)
    • feat: allow adapters to receive the Svelte config as a function argument when adding Vite plugins (#16986)
    • feat: add shallow routing to goto and deprecate pushState and replaceState (#16449)
    • feat: abort request.signal when the response closes prematurely, via a new response option for getRequest (#16793)
    • feat: make $app/paths importable in service workers (#16441)
    • feat: pass the project-relative source filename to the preload filter for fonts (#16443)
    • feat: preserve page state set through goto(..., { state, persistState: true }) across reloads (#16449)
    • 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 (#16334)
    • feat: add page and endpoint booleans to $app/manifest's routes, and export a ManifestRoute type (#16594)
    • feat: $app/service-worker module (#16458)
    • feat: resolve paths using the Vite config root option instead of process.cwd() to better support monorepo configurations such as Vitest workspaces (#15469)
    • feat: better error logging (#16374)
    • feat: add PageRouteId and EndpointRouteId to $app/types (#16594)
    • feat: better tsconfig validation (#16458)
    • feat: add dirty() property to form fields (#16208)
    • feat: support the QUERY HTTP method in +server.js (#16782)
    • feat: allow adapters to override getRequest and setResponse during vite dev and vite preview (#16753)
    • chore: deprecate Response helpers in favor of platform-provided alternatives (#15448)
    • feat: add cookies.parse method (#16203)
    • chore: deprecate export const snapshot in favour of the snapshot helper (#16687)
    • feat: add snapshot helper to $app/navigation (#16685)
    • feat: support custom values in page.state via transport hook (#16662)
    • fix: default cookies to secure to false during development (#16462)
    • feat: warn when naively proxying requests that result in responses with a content-encoding header (#16633)
    • feat: accept the checked state as a third argument to .as('radio', ...) and .as('checkbox', ...) so that these inputs reset to it after a submission (#16926)
    • feat: add an applyReroute helper for adapters that support split serverless function deployments (#16665)

    Patch Changes

    • fix: prevent scheme-like path segments from causing off-site trailing-slash redirects (#17294)
    • chore: share the action error result between form actions and remote forms (#16835)
    • fix: persist global app state across module graph reloads (#16663)
    • fix: generate valid Path types for routes with optional or rest params, several params in one segment, or escape sequences (#16577)
    • fix: coerce values typed into remote form fields, and only apply the default given to .as() until the field is edited (#16939)
    • fix: blur focused SVG elements before the DOM update on navigation (#16983)
    • fix: support bigint params in server-side route resolution (#17130)
    • chore: build streamed responses from async generators (#16847)
    • fix: generate types when dev server starts (#17034)
    • fix: allow undefined values to be passed to form field .as(...) where applicable (#15681)
    • fix: respect paths.relative during development for client files (#17053)
    • fix: validate prerender concurrency (#17145)
    • chore: deprecate builder.rimraf and builder.mkdirp in favour of node:fs methods (#16610)
    • fix: manipulate stack trace for errors that happen while generating prerender inputs (#17113)
    • fix: don't treat callable standard schemas as function param matchers (#16403)
    • fix: prevent non-redirect enhanced form results from navigating to another origin (#17293)
    • fix: clarify circular imports from src/env (#17014)
    • fix: keep memory flat when precompressing many files (#16993)
    • fix: render remote form actions while prerendering (#17139)
    • fix: ignore Vitest browser loader HTML transforms (#17092)
    • fix: prevent failed link preloads from causing unhandled promise rejections in production (#17181)
    • fix: resolve generated rootDirs from the project root (#17242)
    • fix: generate route resolution modules as siblings of .html pages (#16674)
    • perf: parse large streamed frames in linear time (#16489)
    • fix: keep at most one pending body read at a time when deserializing binary forms (#16783)
    • fix: escape cache-control headers in prerendered HTML (#17293)
    • fix: decode all numeric character references, including above ffff, when crawling prerendered pages (#16611)
    • fix: enforce request body size limits when Content-Type is absent (#17127)
    • fix: include queries refreshed from within another query in the serialized response (#16461)
    • fix: reject malformed streamed data encoding (#16423)
    • perf: cache the default cookie header parse and avoid allocations in cookies.get (#16341)
    • fix: exclude deleted cookies from cookies.getAll() so it stays consistent with cookies.get() (#16297)
    • fix: hide stack traces for internal errors like 404s (#16411)
    • chore: deduplicate repeated CSP directive handling (#16498)
    • fix: render the nearest error page when a form submission receives a non-ActionResult error response (#16308)
    • chore: bump mrmime to 2.0.1 (#16745)
    • fix: correctly implement Vite plugin hook filters (#16760)
    • fix: ignore nested outDir files outside generated (#17150)
    • fix: defer query.refresh() in server commands until after the command body completes (#16225)
    • fix: drain unconsumed request bodies so keep-alive connections don't hang (#16170)
    • 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)
    • fix: resolve service worker and tsconfig.json based on Vite root setting (#16229)
    • fix: rebuild the dev manifest when route files disappear during an incremental update (#16643)
    • breaking: populate env vars before instrumentation.server.js is evaluated and update the adapter instrumentation API (#16303)
    • fix: only print prerender progress newline when necessary (#16766)
    • perf: match only unpaired surrogates when escaping HTML (#16407)
    • fix: treat data: protocol URLs as external for redirect (#16392)
    • chore: deduplicate request hashing for serialized fetch responses (#16499)
    • fix: don't treat Object.prototype members as param matchers during validation (#16612)
    • fix: generate a never Path type when there are no routes (#17228)
    • fix: follow HTTP redirects from authentication proxies when enhancing form submissions (#17106)
    • fix: don't report empty environment variables as missing (#16401)
    • chore: generate the env modules in a single pass (#16833)
    • fix: externalize @opentelemetry/api to prevent bundler chunk colocation between instrumentation.server.js and application code (#16302)
    • fix: support form fields named after Object prototype properties (#17136)
    • fix: exclude routes without a page or endpoint from routes in $app/manifest, and remove directories with no route files from LayoutParams (#16588)
    • fix: record a history traversal before resolving its route (#16959)
    • fix: avoid Vite dev server reload on initial page request (#16553)
    • fix: don't set a null accept-language header on internal fetch sub-requests when the incoming request has none (#16527)
    • fix: reuse SSR-cached fetch responses during hydration when a cross-origin URL is not in canonical form (#16339)
    • fix: correctly detect prerendered paths in server fetch when paths.base is set (#16525)
    • chore: say what a valid remote form field name looks like when rejecting one (#16938)
    • chore: warn when remote form fields are enumerated in dev (#16940)
    • fix: populate $app/env/* dynamic variables in contexts that don't run the dev server, such as vite-node (#16223)
    • fix: resolve client manifest imports against the Vite root (#16803)
    • fix: properly handle Date objects in form.fields.set (#16168)
    • fix: return 404 for form actions and remote functions whose name is an Object.prototype member (#16072)
    • fix: no longer throw "An impossible situation occurred" when a server-only module is imported by both server and client code (#16257)
    • fix: respect Vite default log level (#16767)
    • fix: set the focus starting point without a fragment navigation, which leaked a hashchange to app listeners (#16992)
    • fix: keep a form.for instance registered when the derived that holds it disconnects and reconnects (#17230)
    • fix: make cookie options optional (#17201)
    • fix: don't duplicate remote modules in the generated manifest (#16532)
    • fix: evict hashed fetch cache entries after mutations (#17146)
    • chore: reuse base64 and text decoding helpers (#16608)
    • fix: explain the removal of $lib and $service-worker when their imports fail to resolve (#16635)
    • fix: tweak response logging for remote requests (#16865)
    • fix: correctly massage stack traces with async frames (#16633)
    • fix: mark RequestEvent properties as readonly (#16661)
    • fix: render the nearest +error.svelte at the depth it occupies when an error is thrown during rendering (#16526)
    • fix: support coordinate objects from image inputs in remote forms (#16944)
    • fix: revert route metadata caching to regenerate missing root-route types during sync (#17281)
    • chore: bump @sveltejs/acorn-typescript to 1.0.12 (#16745)
    • fix: update match parameter type (#16636)
    • fix: generate sourcemaps for remote modules (#16440)
    • fix: keep hash-router links on the current document when resolving paths (#17107)
    • fix: avoid empty getElementById() call on hash routing navigation (#16448)
    • fix: resolve every module entry point using kit.moduleExtensions (#17043)
    • fix: serve .ico files with image/x-icon Content-Type (#16234)
    • chore: bump magic-string to 1.1.0 (#16745)
    • fix: exclude inlined files from the page's $app/manifest immutable list (#16531)
    • fix: discard invalidation results when a navigation completes while they load (#16852)
    • fix: avoid client-side code being bundled by Cloudflare Wrangler (#16364)
    • fix: wait for the redirect navigation before remote form submissions resolve (#16765)
    • fix: record the mime types of prerendered paths in the server manifest (#16564)
    • fix: only require the svelte-trusted-html trusted-types policy when client-side code is shipped, allowing builds where all pages have csr: false (#16928)
    • chore: clarify which hooks run during server route resolution (#16397)
    • fix: yield to allow prerender updates to be visible (#16748)
    • fix: make paths.origin type looser (#16215)
    • chore: bump devalue to 5.9.0 (#16745)
    • feat: send periodic keep-alive SSE comments from query.live to prevent idle-timeout errors (#16063)
    • fix: send an explicit SSE Accept header for query.live requests to avoid buffering by proxies (#17104)
    • fix: don't touch the query.live stream controller after teardown, and make response cancellation observable via the generator's request.signal (#16790)
    • fix: print builder.log.warn messages to stderr, as documented (#17253)
    • fix: warn if hook files are spelled as "hook" instead of "hooks" (#16483)
    • fix: only suggest a + prefix for route filenames that are valid with the file's extension (#16337)
    • chore: only generate each route's resolution module once when prerendering (#16576)
    • fix: don't throw from remote form validate() if the form unmounts while it is waiting for a tick (#16720)
    • chore: share navigation completion between navigate and shallow routing (#16838)
    • fix: route dev-server response logging through Vite's logger so it respects logLevel and customLogger (#16858)
    • fix: skip clean fields when programmatically validating forms (#16208)
    • perf: skip import graph collection outside client environments (#16383)
    • breaking: experimental remote form validate({ includeUntouched }) option is now all (#16208)
    • fix: rerun load functions when the number of values of a tracked search parameter changes (#16495)
    • chore: read build-time config from defines on the server instead of carrying it in options (#16873)
    • fix: avoid client build warning about externalising node:async_hooks (#16244)
    • chore: stop externalizing cookie dependency during build (#16936)
    • fix: reinstate $app/environment as an alias for $app/env, in case dependencies import it (#15964)
    • fix: preserve paths.base when vite preview redirects a prerendered page to the correct trailing slash (#16836)
    • fix: error when reading non-serialized set-cookie headers via getSetCookie in load (#16614)
    • fix: walk and copy directories without a stat per file (#16995)
    • perf: avoid quadratic remote form issue merging (#16493)
    • fix: widen remote form fields for union schemas and string enums (#16937)
    • chore: deprecate the alias option (#16470)
    • fix: don't attempt to serialize fetch responses when the request body is not a string or TypedArray (#16501)
    • fix: respond to HEAD requests without a body (#17036)
    • chore: replace deprecated Vite dev server APIs (#16961)
    • chore: iterate the query cache maps through a single generator (#16846)
    • fix: handle rejected streamed server data after delayed loads (#16268)
    • fix: don't crash on interactions inside a form whose controls shadow nodeName (#16769)
    • fix: don't replay a preloaded redirect when a later hop of the navigation returns to the route (#16955)
    • fix: prevent path traversal when previewing prerendered pages and data on Windows (#17293)
    • fix: settle a query's pending request in place when its value arrives through set() (#16958)
    • fix: render pages over sibling endpoints without GET or HEAD handlers (#16125)
    • fix: exit build workers after completing their tasks while allowing synchronous exit handlers to run (#17135)
    • fix: prevent infinite loops when server-side queries refresh each other in a cycle during the single-flight drain (#16461)
    • fix: populate version in service workers (#16434)
    • feat: add field.touched() helper to remote form fields (#14692)
    • fix: respect paths.relative for server-side route resolution imports (#17056)
    • fix: read the error status of App.Error in the prerender and query.live remote functions (#16529)
    • fix: resolve remote modules as external during dev prebundling so packages can re-export remote functions (#16426)
    • chore: standardize remote-function and shared form diagnostics (#17277)
    • fix: avoid Promise.withResolvers in client remote functions for older browser support (#16777)
    • fix: propagate errors from prerendered remote responses instead of re-running the function (#16535)
    • chore: remove unused helpers (#16834)
    • fix: allow reserved words (e.g. delete, class) as remote function export names (#16264)
    • fix: reset failed <svelte:boundary> on client navigation so a stale +error.svelte is torn down (#16296)
    • fix: clear navigating when a shallow popstate aborts an in-flight navigation (#17118)
    • fix: expand [x+nn] and [u+nnnn] escape sequences when resolving a route id to a pathname (#16570)
    • fix: respect user-set server.cors and preview.cors config instead of overriding them (#16924)
    • fix: respect the status returned from handleError on the fallback error page served to error-page sub-requests (#16528)
    • fix: restore scroll position after back-forward cache returns (#17255)
    • fix: warn if there are plugins using transformIndexHtml (#16394)
    • fix: refetch route-tracking server data when navigating away from an error page (#16381)
    • fix: allow routes to contain [ and ] via the [x+5b] and [x+5d] escapes (#16569)
    • chore: use Response.json instead of the deprecated json helper in runtime responses (#16804)
    • fix: recommend safe include and exclude patterns in tsconfig warning (#17102)
    • chore: remove dependency on kleur (#12548)
    • fix: prevent server-side self-fetch fallbacks from following redirects (#17293)
    • fix: serialize query(...).set(...)/query(...).refresh() values into the rendered HTML when called from within a query during SSR (#16461)
    • chore: configure the server runtime in one place, deprecate Server in favour of the server object written by builder.generateServerInstance (#17000)
    • chore: derive content-length from fixed response bodies in setResponse (#16794)
    • fix: correctly read zero-length files at the end of a binary form payload (#16783)
    • fix: reject fallback handlers on prerendered endpoints (#17140)
    • fix: don't destroy partial-line app output with the prerender progress line (#16750)
    • chore: remove virtual modules (#16813)
    • fix: surface prerender errors during development (#16507)
    • chore: bump cookie to 2.0.1 (#16745)
    • fix: detect $app/server and $app/env/private client imports when SvelteKit is installed inside the project root (#16648)
    • chore: read options from a single module instead of passing it through the server runtime (#16871)
    • fix: wait for the redirect navigation before prerendered remote functions resolve (#16765)
    • fix: sort directory entries when building the route manifest so node indices are deterministic across runtimes (e.g. Bun and Node) (#16074)
    • fix: skip unnecessary version.json checks if updated.current is already true (#16518)
    • fix: allow generation of $app/tsconfig without TypeScript installed (#16534)
    • chore: remove dependency on set-cookie-parser (#15384)
    • chore: share the nearest error page walk between client and server (#16774)
    • fix: fall back to the page's form actions when a sibling endpoint has no POST handler (#16349)
    • fix: record client output extensions in builder.mimeTypes (#16908)
    • perf: use a Set to check element ids when validating fragment links during prerendering (#16494)
    • fix: preserve shared client chunk hashes when the app version changes (#16324)
    • fix: include hoisted packages in Vite's server.fs.allow list (#15998)
    • chore: standardize app template diagnostics (#17250)
    • chore: standardize Vite plugin, build, prerender and adapter diagnostics (#17253)
    • chore: standardize client navigation, preload, snapshot and enhancement diagnostics (#17276)
    • chore: standardize configuration, environment and tsconfig diagnostics (#17251)
    • chore: standardize public API, $app/* and deprecated module diagnostics (#17265)
    • chore: standardize route discovery, parameter and route export diagnostics (#17252)
    • chore: standardize server request, hook and page diagnostics (#17275)
    • fix: preserve metadata on streamed page responses (#16935)
    • fix: only include _app/immutable files in $app/manifest's immutable in the service worker (#16531)
    • chore: remove the dead SSRState.fallback field and name the server state fork semantics (#16598)
    • fix: atomically replace route metadata during sync (#17096)
    • fix: import resolved peer dependencies as file URLs so project-relative resolution works on Windows (#16618)
    • fix: preserve sourcemap source paths when adapters copy build output (#17082)
    • fix: log errors caught by the Vite dev server handler (#16550)
    • chore: bump acorn to 8.18.0 (#16745)
    • fix: resolve root per instance of the SvelteKit Vite plugin (#16513)
    • fix: report tsconfig parse errors on Windows (#17251)
    • fix: return root layout server data for error-page data requests to non-existent routes (#16376)
    • fix: prevent prerender crawler from hanging on unterminated unquoted attributes (#17141)
    • fix: prevent await_reactivity_loss warning and state_unsafe_mutation error when the new version detector runs after an await (#16915)
    • fix: redact nested and typed underscore-prefixed remote form fields after invalid submissions (#17128)
    • fix: ignore path casing differences when warning about overridden Vite config on Windows (#16545)
    • fix: return a lightweight 404 instead of rendering the error page for subresource requests (#16463)
    • fix: preserve stripped path prefixes by making trailing-slash redirects relative (#16431)
    • fix: preserve the current URL search parameters when submitting a remote form without JavaScript (#16373)
    • fix: only treat files in node_modules as remote modules when the package has a peer dependency on @sveltejs/kit (#16492)
    • fix: treeshake prerendered remote functions in the right chunks (#16533)
    • fix: correctly serialize Node.js buffers returned from remote functions during SSR (#17158)
    • fix: preserve errors with read-only stack properties (#17180)
    • chore: deduplicate type-stripping logic in tweak_types (#16454)
    • fix: avoid infinite loop when building with --watch flag (#16632)
    • chore: unify the walk and list_files filesystem helpers (#16784)
    • fix: error during development if the adapter does not support instrumentation and it exists (#16548)
    • fix: use mouseover+mousemove for preloading to reduce events (#16325)
    • fix: reject invalid binary form file metadata (#17149)
    • fix: error on server-only imports reachable from hooks or service worker files outside the project root (#16912)
    • fix: write generated tsconfig to node_modules/$app/tsconfig.json so that tools with simplified tsconfig resolution can find it (#16589)
    • chore: emit env modules to disk (#16807)
    • fix: more informative error message when running a command inside a query or prerender function (#17293)
    • fix: adjust error overload for optional App.Error parameters (#16725)
    • fix: prerender and crawl pages whose content-type header carries a charset parameter (#16567)
    • fix: stream promised read results lazily instead of eagerly buffering them (#16622)
    • fix: copy worker files emitted by the server build to the client output directory (#16929)
    • chore: parse page options and remote modules with Vite's parseSync instead of acorn (#16947)
    • fix: correctly decode [u+nnnn] escape sequences above ffff (#16611)
    • fix: Reject all pending query promises when a query fails before resolving with a value for the first time (#16890)
    Original source
  • All of your release notes in one feed

    Join Releasebot and get updates from Svelte and hundreds of other software products.

    Create account
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit ships patch fixes that tighten routing, redirects, and preview safety while improving diagnostics across templates, plugins, navigation, configuration, and server handling. It also fixes Windows-specific issues and standardizes warning output and type regeneration during sync.

    Patch Changes

    • fix: prevent non-redirect enhanced form results from navigating to another origin (91aae35)
    • fix: escape cache-control headers in prerendered HTML (d9d55b5)
    • fix: revert route metadata caching to regenerate missing root-route types during sync (#17281)
    • fix: print builder.log.warn messages to stderr, as documented (#17253)
    • fix: prevent path traversal when previewing prerendered pages and data on Windows (538edbf)
    • chore: standardize remote-function and shared form diagnostics (#17277)
    • fix: prevent server-side self-fetch fallbacks from following redirects (b11bb87)
    • chore: standardize app template diagnostics (#17250)
    • chore: standardize Vite plugin, build, prerender and adapter diagnostics (#17253)
    • chore: standardize client navigation, preload, snapshot and enhancement diagnostics (#17276)
    • chore: standardize configuration, environment and tsconfig diagnostics (#17251)
    • chore: standardize public API, $app/* and deprecated module diagnostics (#17265)
    • chore: standardize route discovery, parameter and route export diagnostics (#17252)
    • chore: standardize server request, hook and page diagnostics (#17275)
    • fix: report tsconfig parse errors on Windows (#17251)
    Original source
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit requires Node 22 and Vite 8, with fixes for dynamic image source evaluation and dependency updates.

    Major Changes

    breaking: require Node 22 or newer (#12548)

    breaking: require vite@^8.0.12, the first Vite 8 release bundling stable rolldown 1.0.0 (#16134)

    Minor Changes

    breaking: require Vite 8 and vite-plugin-svelte 7 (#15542)

    Patch Changes

    chore: replace the $lib alias with #lib in docs (#16360)

    chore: bump magic-string to 1.1.0 (#16745)

    chore: bump vite-imagetools to v12 (#16630)

    fix: evaluate dynamic image source expressions once (#16900)

    chore: bump zimmerframe to 1.1.4 (#16745)

    Original source
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit ships major adapter and edge runtime updates, including Rolldown-based edge function bundling, a new instrumentation API, updated build targets, and support changes for Vite 8. It also includes multiple bug fixes and dependency refreshes.

    Major Changes

    • chore: use rolldown for edge function bundling (#15432)
    • breaking: populate env vars before instrumentation.server.js is evaluated and update the adapter instrumentation API (#16303)
    • breaking: edge function build target is now es2022 (#15432)
    • breaking: require vite@^8.0.12, the first Vite 8 release bundling stable rolldown 1.0.0 (#16134)
    • breaking: replace the builder.generateManifest with builder.generateServerInstance and builder.manifest (#16875)
    • breaking: remove support for edge and Node 20 runtimes (#16520)

    Patch Changes

    • chore: bump @vercel/nft dependency (#16522)
    • chore: use node:fs instead of deprecated builder.rimraf and builder.mkdirp (#16610)
    • fix: omit ISR data endpoints for server-only routes (#16731)
    • fix: correctly apply reroute results for apps configured with split serverless functions (#16665)
    • fix: pass the requested pathname, including any trailing slash, to ISR functions (#16903)
    • fix: allow prerelease versions of SvelteKit 3 to satisfy the peer dependency range (#16286)
    • fix: await init on every request to prevent race condition (#16467)
    • fix: match sibling .html__route.js route resolution requests (#16674)
    • chore: bump Rolldown to 1.2.0 (#16455)
    • fix: ignore EEXIST errors when symlinking traced files that resolve to the same destination (#16809)
    • fix: trace process.cwd()-relative files from the project directory and never glob from the filesystem root (#16972)

    Updated dependencies:

    Original source
  • Similar to SvelteKit with recent updates:

  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit releases a breaking update requiring SvelteKit 3 with Vercel fixes and dependency updates.

    Major Changes

    • breaking: require SvelteKit 3 (#15506)

    Patch Changes

    • chore: use node:fs instead of deprecated builder.rimraf and builder.mkdirp (#16610)
    • fix: avoid caching immutable asset 404s when configuring for Vercel (#16626)
    • fix: match adapter-vercel's prerendered redirect handling when deploying to Vercel (#16497)
    • fix: allow prerelease versions of SvelteKit 3 to satisfy the peer dependency range (#16286)
    • chore: use builder.config to access SvelteKit config settings (#16895)

    Updated dependencies:

    Original source
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit releases a major update with SvelteKit 3 support, a new paths.origin config, and a revamped adapter and manifest API. It also switches to rolldown, tightens static asset handling, and adds better error logging and request abort behavior.

    Major Changes

    breaking: populate env vars before instrumentation.server.js is evaluated and update the adapter instrumentation API (#16303)

    chore: migrate from rollup to rolldown (#15297)

    breaking: require SvelteKit 3 (#15506)

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

    breaking: require vite@^8.0.12, the first Vite 8 release bundling stable rolldown 1.0.0 (#16134)

    breaking: replace the builder.generateManifest with builder.generateServerInstance and builder.manifest (#16875)

    breaking: record the list of static assets at build time, files added to the output afterwards are not served (#16908)

    breaking: validate static assets with content-hash ETags and stop sending Last-Modified (#16908)

    breaking: serve static assets only to GET and HEAD requests (#16908)

    Minor Changes

    feat: serve static assets from tables recorded at adapt time, instead of using sirv (#16908)

    feat: better error logging (#16374)

    Patch Changes

    fix: prevent scheme-like path segments from causing off-site trailing-slash redirects (#17294)

    fix: serve static files with the Content-Type recorded in the manifest (#16564)

    chore: bundle the adapter's server source directly instead of prebuilding it with rolldown (#17109)

    chore: use node:fs instead of deprecated builder.rimraf and builder.mkdirp (#16610)

    chore: hand adapt-time values to the server as a module instead of patching built chunks (#17103)

    fix: externalize @opentelemetry/api to prevent bundler chunk colocation between instrumentation.server.js and application code (#16302)

    feat: abort request.signal when the response closes prematurely, via a new response option for getRequest (#16793)

    fix: allow prerelease versions of SvelteKit 3 to satisfy the peer dependency range (#16286)

    fix: always bundle dev dependencies (#17210)

    chore: avoid bundling the server twice (#17068)

    fix: correctly bundle entrypoints on Windows (#16367)

    fix: bundle Svelte libraries listed in dependencies instead of externalising them (#17234)

    chore: bump rolldown to 1.2.3 (#16745)

    chore: use builder.config to access SvelteKit config settings (#16895)

    fix: preserve stripped path prefixes by making trailing-slash redirects relative (#16431)

    chore: bump Rolldown to 1.2.0 (#16455)

    fix: don't send Vary: Accept-Encoding for assets that were never precompressed (#16566)

    chore: remove polka, attach the handler to the http server directly (#16907)

    Updated dependencies:

    @sveltejs/[email protected]

    Original source
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit ships a major Netlify adapter update with rolldown-powered edge bundling, stable Netlify Frameworks API output, and support for split plus edge options together. It also brings several breaking changes, bug fixes, and updated deployment requirements.

    Major Changes

    chore: use rolldown for edge function bundling (#15432)

    breaking: populate env vars before instrumentation.server.js is evaluated and update the adapter instrumentation API (#16303)

    breaking: write output that conforms to the stable Netlify Frameworks API. (#15294)

    Deploying and previewing with Netlify CLI now requires v17.31.0 or later. Run npm i -g netlify-cli@latest to upgrade.

    breaking: write static files based on the publish adapter option rather than reading the netlify.toml file (#17078)

    breaking: require SvelteKit 3 (#15506)

    breaking: edge function build target is now es2022 (#15432)

    breaking: require vite@^8.0.12, the first Vite 8 release bundling stable rolldown 1.0.0 (#16134)

    breaking: replace the builder.generateManifest with builder.generateServerInstance and builder.manifest (#16875)

    Minor Changes

    feat: support split and edge options combined (#17045)

    Patch Changes

    chore: use node:fs instead of deprecated builder.rimraf and builder.mkdirp (#16610)

    fix: correctly apply reroute results for apps configured with split serverless functions (#16665)

    fix: ensure types for platform.context work (#16255)

    fix: include utils.js in package.json files (#16298)

    chore: replace @netlify/functions with @netlify/types for the Context type (#16542)

    fix: route requests with omitted optional parameters to split serverless functions (#17020)

    fix: strip trailing slashes from prerendered paths in the edge function exclude list, so the root page is served statically when using a base path (#16788)

    fix: copy _redirects when deploying edge function (#17047)

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

    chore: bump rolldown to 1.2.3 (#16745)

    fix: await init on every request to prevent race condition (#16467)

    fix: import the generated manifest via pathToFileURL, which handles special characters in the project path (#16649)

    chore: include edge function configuration in the function module (#17058)

    chore: replace @iarna/toml with smol-toml (#16948)

    chore: bump Rolldown to 1.2.0 (#16455)

    chore: identify serverless functions with a UUID instead of Netlify's function token (#17044)

    fix: ensure serverless function files have unique names (#17049)

    Updated dependencies:

    @sveltejs/[email protected]

    Original source
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit ships a major Cloudflare Workers update with SvelteKit 3 support, new adapter and manifest APIs, and important breaking changes around Wrangler, platform context, caching, and environment setup, plus fixes for dev server cleanup and _headers handling.

    Major Changes

    • breaking: minimum Wrangler version required is 4.118.0 (#16668)
    • breaking: populate env vars before instrumentation.server.js is evaluated and update the adapter instrumentation API (#16303)
    • breaking: upgrade @cloudflare/workers-types to 4.20260219.0 (#15347)
    • breaking: upgrade minimum wrangler version to ^4.67.0 (#15347)
    • breaking: remove platform.context in favour of platform.ctx (#15347)
    • breaking: remove cloudflare platform, emulate the cloudflare:workers module instead (#16754)
    • breaking: require SvelteKit 3 (#15506)
    • breaking: remove use of the Cloudflare Workers Cache API in favour of Workers Caching (#16640)
    • breaking: replace the builder.generateManifest with builder.generateServerInstance and builder.manifest (#16875)

    Patch Changes

    • chore: use node:fs instead of deprecated builder.rimraf and builder.mkdirp (#16610)
    • chore: bump @cloudflare/workers-types to 4.20260621.1 (#16455)
    • fix: dispose the platform proxy when the Vite dev or preview server closes (#17238)
    • fix: avoid overriding user's existing _headers rules (#16183)
    • chore: check the WORKERS_CI environment variable to determine if we're building for Cloudflare Workers (#13733)
    • fix: allow prerelease versions of SvelteKit 3 to satisfy the peer dependency range (#16286)
    • fix: avoid caching immutable asset 404s (#16627)
    • chore: use builder.config to access SvelteKit config settings (#16895)
    • chore: bump @cloudflare/worker-types to 5.20260809.1 (#16745)

    Updated dependencies:

    Original source
  • Oct 1, 2026
    • Date parsed from source:
      Oct 1, 2026
    • First seen by Releasebot:
      Oct 1, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit releases a major update with Bun 1.4 support, a new Bun-native adapter for static files and single-executable apps, and a Vite-based server build. It also fixes bundling and instrumentation issues while updating dependencies to @sveltejs/[email protected].

    Major Changes

    • breaking: require Bun 1.4, which routes HEAD to GET handlers and settles stop() after a force close (#16880)
    • breaking: build the server with Vite instead of a second Bun.build pass, keeping production dependencies external; buildOptions now only applies to executables (#17120)

    Minor Changes

    • feat: add a Bun-native adapter with static file serving and single-executable support (#16695)

    Patch Changes

    • fix: build apps that use server instrumentation (#16898)
    • fix: always bundle dev dependencies (#17210)
    • fix: bundle Svelte libraries listed in dependencies instead of externalising them (#17234)

    Updated dependencies:

    Original source
  • Sep 30, 2026
    • Date parsed from source:
      Sep 30, 2026
    • First seen by Releasebot:
      Sep 30, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit patches rootDirs and fixes navigation and scroll restoration bugs for smoother back and forward cache behavior.

    Patch Changes

    • fix: resolve generated rootDirs from the project root (#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)
    • fix: clear navigating when a shallow popstate aborts an in-flight navigation (#17118)
    • fix: restore scroll position after back-forward cache returns (#17255)
    Original source
  • Sep 30, 2026
    • Date parsed from source:
      Sep 30, 2026
    • First seen by Releasebot:
      Sep 30, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit fixes platform proxy disposal when the Vite dev or preview server closes.

    Patch Changes

    • fix: dispose the platform proxy when the Vite dev or preview server closes (#17238)
    • Updated dependencies [12ae0b9, ee3332f, 72832f9, 846f3d4]:
    Original source
  • Sep 27, 2026
    • Date parsed from source:
      Sep 27, 2026
    • First seen by Releasebot:
      Sep 27, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit fixes route typing, fragment navigation leaks, and form registration issues.

    Patch Changes

    • fix: generate a never Path type when there are no routes (#17228)
    • fix: set the focus starting point without a fragment navigation, which leaked a hashchange to app listeners (#16992)
    • fix: keep a form.for instance registered when the derived that holds it disconnects and reconnects (#17230)
    Original source
  • Sep 27, 2026
    • Date parsed from source:
      Sep 27, 2026
    • First seen by Releasebot:
      Sep 27, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit fixes bundling of Svelte libraries in dependencies instead of externalizing them.

    Patch Changes

    • fix: bundle Svelte libraries listed in dependencies instead of externalising them (#17234)

    • Updated dependencies [f8a90be, 30d06f5, 0107721]:

    Original source
  • Sep 27, 2026
    • Date parsed from source:
      Sep 27, 2026
    • First seen by Releasebot:
      Sep 27, 2026
    Svelte logo

    SvelteKit by Svelte

    SvelteKit fixes bundling so Svelte libraries in dependencies are included instead of externalized.

    Patch Changes

    • fix: bundle Svelte libraries listed in dependencies instead of externalising them (#17234)
    • Updated dependencies [f8a90be, 30d06f5, 0107721]:
    Original source
Releasebot

Curated by the Releasebot team

Releasebot is an aggregator of official product update announcements from hundreds of software vendors and thousands of sources.

Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.