SvelteKit

Frameworks & Libraries

The web framework for building Svelte applications.

Latest 2.70.2 · by SvelteWebsitesveltejs/kit

Release activity

Release activity — 50 releases across 36 days since Feb 20, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Feb 20, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 19, 2026No releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 20261 release on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 20261 release on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 20261 release on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
MondayNo releases on Apr 20, 2026No releases on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 20263 releases on Jun 8, 2026No releases on Jun 15, 20261 release on Jun 22, 2026No releases on Jun 29, 20265 releases on Jul 6, 20261 release on Jul 13, 20261 release on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026
TuesdayNo releases on Apr 21, 2026No releases on Apr 28, 20261 release on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 20261 release on Jun 2, 2026No releases on Jun 9, 20261 release on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 20261 release on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 20261 release on Aug 4, 2026
WednesdayNo releases on Apr 22, 2026No releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 20262 releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 20262 releases on Jul 29, 2026No releases on Aug 5, 2026
Thursday1 release on Apr 23, 2026No releases on Apr 30, 2026No releases on May 7, 20262 releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 20261 release on Jun 4, 20263 releases on Jun 11, 20261 release on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on Apr 24, 20261 release on May 1, 2026No releases on May 8, 2026No releases on May 15, 20261 release on May 22, 2026No releases on May 29, 20262 releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 20262 releases on Jul 17, 20261 release on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on Apr 25, 2026No releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 20261 release on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026

50 releases since Feb 20, 2026, busiest day 5

Changelog

3.0.0-next.14

Pre-release
Added 3
  • Return the list of compressed files from builder.compress
  • Add page and endpoint booleans to $app/manifest's routes and export a ManifestRoute type
  • Add PageRouteId and EndpointRouteId types to $app/types
Changed 4
  • Refresh all load functions and queries when clicking a link to the current URL
  • Only include routes with a +page or +server in RouteId
  • Require Node 22.17
  • preloadCode now takes a route ID instead of a pathname, and route IDs are not prefixed with paths.base
Fixed 11
  • Generate valid Path types for routes with optional or rest params, several params in one segment, or escape sequences
  • Decode all numeric character references above ffff when crawling prerendered pages
  • Don't treat Object.prototype members as param matchers during validation
  • Exclude routes without a page or endpoint from routes in $app/manifest and remove directories with no route files from LayoutParams
  • Record the mime types of prerendered paths in the server manifest
  • Expand [x+nn] and [u+nnnn] escape sequences when resolving a route id to a pathname
Removed 1
  • Remove deprecated .run() method from live queries
Major Changes
  • breaking: refresh all load functions/queries when clicking a link to the current URL (#16572)

  • breaking: only include routes with a +page or +server in RouteId (#16580)

  • breaking: require Node 22.17 (#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)

  • breaking: remove deprecated .run() method from live queries (#16573)

Minor Changes
  • feat: return the list of compressed files from builder.compress (#16566)

  • feat: add page and endpoint booleans to $app/manifest's routes, and export a ManifestRoute type (#16594)

  • feat: add PageRouteId and EndpointRouteId to $app/types (#16594)

Patch Changes
  • fix: generate valid Path types for routes with optional or rest params, several params in one segment, or escape sequences (#16577)

  • fix: decode all numeric character references, including above ffff, when crawling prerendered pages (#16611)

  • chore: deduplicate request hashing for serialized fetch responses (#16499)

  • fix: don't treat Object.prototype members as param matchers during validation (#16612)

  • fix: exclude routes without a page or endpoint from routes in $app/manifest, and remove directories with no route files from LayoutParams (#16588)

  • chore: reuse base64 and text decoding helpers (#16608)

  • fix: record the mime types of prerendered paths in the server manifest (#16564)

  • chore: only generate each route's resolution module once when prerendering (#16576)

  • fix: expand [x+nn] and [u+nnnn] escape sequences when resolving a route id to a pathname (#16570)

  • fix: allow routes to contain [ and ] via the [x+5b] and [x+5d] escapes (#16569)

  • chore: remove the dead SSRState.fallback field and name the server state fork semantics (#16598)

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

  • fix: write generated tsconfig to node_modules/$app/tsconfig.json so that tools with simplified tsconfig resolution can find it (#16589)

  • 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: correctly decode [u+nnnn] escape sequences above ffff (#16611)

View originalPermalink
How 3.0.0-next.14 went

2.70.2

Fixed 1
  • prevent quadratic backtracking in Accept header content negotiation
Patch Changes
  • fix: prevent quadratic backtracking in Accept header content negotiation (#1)
View originalPermalink
How 2.70.2 went

3.0.0-next.13

Pre-release
Added 2
  • Add shallow routing to goto and deprecate pushState and replaceState
  • Preserve page state set through goto(..., { state, persistState: true }) across reloads
Fixed 15
  • Avoid Vite dev server reload on initial page request
  • Don't set a null accept-language header on internal fetch sub-requests when the incoming request has none
  • Correctly detect prerendered paths in server fetch when paths.base is set
  • Don't duplicate remote modules in the generated manifest
  • Exclude inlined files from the page's $app/manifest immutable list
  • Don't attempt to serialize fetch responses when the request body is not a string or TypedArray
Removed 1
  • 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 1
  • Deprecate error(status, {...}) in favour of error(status, message, {...})
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)

  • breaking: deprecate error(status, {...}) in favour of error(status, message, {...}) (#16540)

Minor Changes
  • feat: add shallow routing to goto and deprecate pushState and replaceState (#16449)

  • feat: preserve page state set through goto(..., { state, persistState: true }) across reloads (#16449)

Patch Changes
  • chore: deduplicate repeated CSP directive handling (#16498)

  • 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: correctly detect prerendered paths in server fetch when paths.base is set (#16525)

  • fix: don't duplicate remote modules in the generated manifest (#16532)

  • fix: exclude inlined files from the page's $app/manifest immutable list (#16531)

  • perf: avoid quadratic remote form issue merging (#16493)

  • fix: don't attempt to serialize fetch responses when the request body is not a string or TypedArray (#16501)

  • fix: read the error status of App.Error in the prerender and query.live remote functions (#16529)

  • fix: propagate errors from prerendered remote responses instead of re-running the function (#16535)

  • fix: respect the status returned from handleError on the fallback error page served to error-page sub-requests (#16528)

  • fix: skip unnecessary version.json checks if updated.current is already true (#16518)

  • fix: allow generation of $app/tsconfig without TypeScript installed (#16534)

  • perf: use a Set to check element ids when validating fragment links during prerendering (#16494)

  • fix: only include _app/immutable files in $app/manifest's immutable in the service worker (#16531)

  • fix: log errors caught by the Vite dev server handler (#16550)

  • fix: resolve root per instance of the SvelteKit Vite plugin (#16513)

  • fix: ignore path casing differences when warning about overridden Vite config on Windows (#16545)

  • fix: preserve the current URL search parameters when submitting a remote form without JavaScript (#16373)

  • fix: treeshake prerendered remote functions in the right chunks (#16533)

  • fix: error during development if the adapter does not support instrumentation and it exists (#16548)

View originalPermalink
How 3.0.0-next.13 went

3.0.0-next.12

Pre-release
Added 5
  • Add $app/manifest module with immutable, assets, prerendered, and routes exports
  • Validate that all remote form fields were created with form.fields.foo.as(...)
  • Make $app/paths importable in service workers
  • Add $app/service-worker module
  • Improve tsconfig validation
Changed 2
  • Write tsconfig to node_modules/$app/tsconfig
  • Detect new deployments on data, remote, and form action responses, tab focus, and visibility change, and default version.pollInterval to 1 hour
Fixed 7
  • Default cookies to secure to false during development
  • Allow undefined values to be passed to form field .as(...) where applicable
  • Include queries refreshed from within another query in the serialized response
  • Generate sourcemaps for remote modules
  • Avoid empty getElementById() call on hash routing navigation
  • Warn if hook files are spelled as "hook" instead of "hooks"
  • Prevent infinite loops when server-side queries refresh each other in a cycle during the single-flight drain
Removed 4
  • Rename Pathname type to Path and Asset to AssetPath
  • Remove leading / from Path and AssetPath
  • Error on event.url, event.params and event.route access inside queries
  • Delete $service-worker module
Deprecated 1
  • Deprecate the alias option
Major Changes
  • breaking: rename Pathname type to Path and Asset to AssetPath (#16430) breaking: remove leading / from Path and AssetPath

  • breaking: write tsconfig to node_modules/$app/tsconfig (#16458)

  • breaking: error on event.url, event.params and event.route access inside queries (#16452)

  • breaking: delete $service-worker module (#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)

Minor Changes
  • feat: add $app/manifest module with immutable, assets, prerendered, and routes exports (#16372)

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

  • feat: make $app/paths importable in service workers (#16441)

  • feat: $app/service-worker module (#16458)

  • feat: better tsconfig validation (#16458)

  • fix: default cookies to secure to false during development (#16462)

Patch Changes
  • fix: allow undefined values to be passed to form field .as(...) where applicable (#15681)

  • fix: include queries refreshed from within another query in the serialized response (#16461)

  • fix: generate sourcemaps for remote modules (#16440)

  • fix: avoid empty getElementById() call on hash routing navigation (#16448)

  • fix: warn if hook files are spelled as "hook" instead of "hooks" (#16483)

  • chore: deprecate the alias option (#16470)

  • 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)

  • fix: resolve remote modules as external during dev prebundling so packages can re-export remote functions (#16426)

  • fix: refetch route-tracking server data when navigating away from an error page (#16381)

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

  • fix: fall back to the page's form actions when a sibling endpoint has no POST handler (#16349)

  • 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)

  • chore: deduplicate type-stripping logic in tweak_types (#16454)

  • fix: more informative error message when running a command inside a query or prerender function (eb5c973)

View originalPermalink
How 3.0.0-next.12 went

3.0.0-next.11

Pre-release
Added 3
  • support sourcemaps in production
  • support function validators for environment variables
  • better error logging
Changed 2
  • config exported from a universal route file now takes precedence over a server one
  • special filename patterns are now consistent
Fixed 4
  • don't treat callable standard schemas as function param matchers
  • reject malformed streamed data encoding
  • hide stack traces for internal errors like 404s
  • don't report empty environment variables as missing
Major Changes
  • breaking: config exported from a universal route file takes precedence over a server one (#16400)

  • breaking: consistent special filename patterns (#16382)

Minor Changes
  • feat: support sourcemaps in production (#16412)

  • feat: support function validators for environment variables (#16402)

  • feat: better error logging (#16374)

Patch Changes
  • fix: don't treat callable standard schemas as function param matchers (#16403)

  • fix: reject malformed streamed data encoding (#16423)

  • fix: hide stack traces for internal errors like 404s (#16411)

  • perf: match only unpaired surrogates when escaping HTML (#16407)

  • fix: don't report empty environment variables as missing (#16401)

  • chore: clarify which hooks run during server route resolution (#16397)

View originalPermalink
How 3.0.0-next.11 went

2.70.1

Changed 1
  • Update links to hooks documentation
Patch Changes
  • docs: update links to hooks documentation (#16417)
View originalPermalink
How 2.70.1 went

3.0.0-next.10

Pre-release
Changed 1
  • Skip import graph collection outside client environments
Fixed 2
  • Treat data: protocol URLs as external for redirect
  • Warn if there are plugins using transformIndexHtml
Removed 1
  • Move defineEnvVars to @sveltejs/kit/env
Major Changes
  • breaking: move defineEnvVars to @sveltejs/kit/env (#16375)
Patch Changes
  • fix: treat data: protocol URLs as external for redirect (#16392)

  • perf: skip import graph collection outside client environments (#16383)

  • fix: warn if there are plugins using transformIndexHtml (#16394)

View originalPermalink
How 3.0.0-next.10 went

3.0.0-next.9

Pre-release
Changed 3
  • The `handle` hook's `resolve` function is now typed to always return a Promise
  • Server-only directories (`/server/` in the path) are now treated as server-only everywhere inside the project except `src/routes` and the assets directory
  • Delegate CORS handling to Vite for static directory requests during development
Fixed 3
  • Avoid client-side code being bundled by Cloudflare Wrangler
  • Handle rejected streamed server data after delayed loads
  • Enable CSRF protection in builds with a non-production NODE_ENV value
Removed 1
  • Replace the `$lib` alias with `#lib` and remove `files.lib` config
Deprecated 1
  • 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`
Security 1
  • Disallow cross-origin form submissions without a Content-Type header
Major Changes
  • breaking: handle's resolve is now typed to always return a Promise (#16352)

  • breaking: replace the $lib alias with #lib and remove files.lib config. (#16360)

  • 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: delegate CORS handling to Vite for static directory requests during development (#16357)

Minor Changes
  • 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)
Patch Changes
  • perf: cache the default cookie header parse and avoid allocations in cookies.get (#16341)

  • fix: avoid client-side code being bundled by Cloudflare Wrangler (#16364)

  • fix: handle rejected streamed server data after delayed loads (#16268)

  • fix: enable CSRF protection in builds with a non-production NODE_ENV value (#16313)

View originalPermalink
How 3.0.0-next.9 went

2.70.0

Added 1
  • Move defineEnvVars to @sveltejs/kit/env
Fixed 1
  • Enable CSRF protection in builds with a non-production NODE_ENV value
Minor Changes
  • feat: move defineEnvVars to @sveltejs/kit/env (#16378)
Patch Changes
  • fix: enable CSRF protection in builds with a non-production NODE_ENV value (#16313)
View originalPermalink
How 2.70.0 went

3.0.0-next.8

Pre-release
Added 2
  • Allow hyphens in param and matcher names
  • Add ErrorProps to generated types
Changed 2
  • Make getRequest and setResponse synchronous
  • Make page.url immutable on a type level
Fixed 7
  • Detect destructured load and actions exports during type generation
  • Ensure CSS URL references are absolute when paths.relative is false
  • Exclude deleted cookies from cookies.getAll() so it stays consistent with cookies.get()
  • Reset failed <svelte:boundary> on client navigation so a stale +error.svelte is torn down
  • Preserve shared client chunk hashes when the app version changes
  • Align MAX_COOKIE_SIZE with RFC 6265bis
  • Use mouseover+mousemove for preloading to reduce events
Removed 1
  • Remove experimental.handleRenderingErrors flag
Deprecated 1
  • Deprecate invalidateAll in favor of refreshAll
Major Changes
  • breaking: remove experimental.handleRenderingErrors flag (#16265)

  • breaking: make getRequest and setResponse synchronous (#16280)

  • breaking: make page.url immutable on a type level (#16256)

  • breaking: add refreshAll and deprecate invalidateAll (#16289)

Minor Changes
  • feat: allow hyphens in param and matcher names (#16284)

  • feat: add ErrorProps to generated types (#16272)

Patch Changes
  • fix: detect destructured load and actions exports during type generation (#16329)

  • fix: ensure CSS URL references are absolute when paths.relative is false (#16315)

  • fix: exclude deleted cookies from cookies.getAll() so it stays consistent with cookies.get() (#16297)

  • fix: reset failed <svelte:boundary> on client navigation so a stale +error.svelte is torn down (#16296)

  • fix: preserve shared client chunk hashes when the app version changes (#16324)

  • fix: align MAX_COOKIE_SIZE with RFC 6265bis (#16322)

  • fix: use mouseover+mousemove for preloading to reduce events (#16325)

View originalPermalink
How 3.0.0-next.8 went

2.69.3

Fixed 3
  • Detect destructured load and actions exports during type generation
  • Ensure CSS URL references are absolute when paths.relative is false
  • Align MAX_COOKIE_SIZE with RFC 6265bis
Patch Changes
  • fix: detect destructured load and actions exports during type generation (#16329)

  • fix: ensure CSS URL references are absolute when paths.relative is false (#16315)

  • fix: align MAX_COOKIE_SIZE with RFC 6265bis (#16322)

View originalPermalink
How 2.69.3 went

3.0.0-next.7

Pre-release
Added 1
  • Allow adapters to provide additional Vite plugins
Changed 2
  • Change `form.error` type from `any` to `App.Error | undefined`
  • Disallow `*.remote.ts/js` files unless `experimental.remoteFunctions` is enabled
Fixed 9
  • Defer `query.refresh()` in server commands until after the command body completes
  • Resolve service worker and `tsconfig.json` based on Vite `root` setting
  • Populate `$app/env/*` dynamic variables in contexts that don't run the dev server, such as `vite-node`
  • No longer throw "An impossible situation occurred" when a server-only module is imported by both server and client code
  • Set `define` values on `globalThis` when running Vitest
  • Serve `.ico` files with `image/x-icon` Content-Type
Removed 3
  • Move tracing out of the experimental namespace and remove the instrumentation flag
  • Remove `$app/stores`
  • Remove param files in folder in favor of `params.js/ts` file
Major Changes
  • breaking: change form.error type from any to App.Error | undefined (#16245)

  • feat: allow adapters to provide additional Vite plugins (#16206)

  • breaking: move tracing out of the experimental namespace and remove the instrumentation flag (#16260)

  • breaking: remove $app/stores (#15499)

  • breaking: disallow *.remote.ts/js files unless experimental.remoteFunctions is enabled (#16247)

  • breaking: remove param files in folder in favor of params.js/ts file (#16189)

Patch Changes
  • fix: defer query.refresh() in server commands until after the command body completes (#16225)

  • fix: resolve service worker and tsconfig.json based on Vite root setting (#16229)

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

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

  • fix: set define values on globalThis when running Vitest (#16246)

  • fix: serve .ico files with image/x-icon Content-Type (#16234)

  • fix: make paths.origin type looser (#16215)

  • fix: avoid client build warning about externalising node:async_hooks (#16244)

  • fix: allow reserved words (e.g. delete, class) as remote function export names (#16264)

View originalPermalink
How 3.0.0-next.7 went

2.69.2

Fixed 1
  • Set `define` values on `globalThis` when running Vitest
Patch Changes
  • fix: set define values on globalThis when running Vitest (#16246)
View originalPermalink
How 2.69.2 went

2.69.1

Fixed 2
  • prevent prototype pollution when deleting file inputs
  • prevent unhandled promise rejection
Patch Changes
  • fix: prevent prototype pollution when deleting file inputs (#16218)

  • fix: prevent unhandled promise rejection (#16219)

View originalPermalink
How 2.69.1 went

2.69.0

Added 1
  • Expose `submitted` property of remote forms
Fixed 2
  • Clear issues and touched states on form reset
  • Return `undefined` from `fields.branch.issues()` when only `fields.branch.leaf` has issues
Minor Changes
  • feat: expose submitted property of remote forms (#14811)
Patch Changes
  • fix: clear issues and touched states on form reset (#16163)

  • fix: return undefined from fields.branch.issues() when only fields.branch.leaf has issues (#16187)

View originalPermalink
How 2.69.0 went

2.68.0

Added 2
  • Expose RemoteFormEnhanceInstance and RemoteFormEnhanceCallback types
  • Set value of submit fields when form is submitted
Fixed 5
  • Skip native_navigation when __data.json returns 404 on a static fallback page
  • Ignore third-party monkeypatches in pushState/replaceState warning detection
  • Snapshot form fields on read
  • Strip field prefix before erroring on duplicates
  • Call reset function via prototype
Minor Changes
  • feat: expose RemoteFormEnhanceInstance and RemoteFormEnhanceCallback types (#15816)

  • feat: set value of submit fields when form is submitted (#15979)

Patch Changes
  • fix: skip native_navigation when __data.json returns 404 on a static fallback page (#16135)

  • fix: ignore third-party monkeypatches in pushState/replaceState warning detection (#15267)

  • fix: snapshot form fields on read (#16150)

  • fix: strip field prefix before erroring on duplicates (#16151)

  • fix: call reset function via prototype (#16138)

  • chore: fix navigation type hover info (#16147)

View originalPermalink
How 2.68.0 went

3.0.0-next.6

Pre-release
Added 4
  • Use type: 'module' for service worker registrations
  • Add dirty() property to form fields
  • Add cookies.parse method
  • Add field.touched() helper to remote form fields
Changed 8
  • Return no content for 204 responses
  • Form action responses now use the HTTP status code returned from fail
  • Nested server-only directories
  • Add kit.paths.origin config option, remove kit.prerender.origin and the adapter-node ORIGIN environment variable
  • Don't abort navigation when calling invalidate(All) during navigation
  • Allow handleError to influence status code
  • Forbid external redirects by default
  • Experimental remote form validate({ includeUntouched }) option is now all
Fixed 4
  • Drain unconsumed request bodies so keep-alive connections don't hang
  • Properly handle Date objects in form.fields.set
  • Skip clean fields when programmatically validating forms
  • Return undefined from fields.branch.issues() when only fields.branch.leaf has issues
Major Changes
  • breaking: return no content for 204 responses (#16200)

  • breaking: form action responses now use the HTTP status code returned from fail (#16200)

  • breaking: nested server-only directories (#15685)

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

  • breaking: don't abort navigation when calling invalidate(All) during navigation (#16188)

  • breaking: allow handleError to influence status code (#16162)

  • breaking: forbid external redirects by default (#16198)

Minor Changes
  • feat: use type: 'module' for service worker registrations (#16169)

  • feat: add dirty() property to form fields (#16208)

  • feat: add cookies.parse method (#16203)

Patch Changes
  • fix: drain unconsumed request bodies so keep-alive connections don't hang (#16170)

  • fix: properly handle Date objects in form.fields.set (#16168)

  • fix: skip clean fields when programmatically validating forms (#16208)

  • breaking: experimental remote form validate({ includeUntouched }) option is now all (#16208)

  • fix: return undefined from fields.branch.issues() when only fields.branch.leaf has issues (#16187)

  • feat: add field.touched() helper to remote form fields (#14692)

View originalPermalink
How 3.0.0-next.6 went

3.0.0-next.5

Pre-release
Added 3
  • Add 'error' result type to `preloadData`
  • Expose `submitted` property of remote forms
  • Send periodic `keep-alive` SSE comments from `query.live` to prevent idle-timeout errors
Changed 3
  • Require Svelte config options to be passed through the Vite plugin
  • `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
  • Require `vite@^8.0.12`, the first Vite 8 release bundling stable `rolldown` 1.0.0
Fixed 5
  • Clear issues and touched states on form reset
  • Return 404 for form actions and remote functions whose name is an `Object.prototype` member
  • Render pages over sibling endpoints without GET or HEAD handlers
  • Sort directory entries when building the route manifest so node indices are deterministic across runtimes
  • Include hoisted packages in Vite's `server.fs.allow` list
Removed 1
  • Remove `base`, `assets`, and `resolveRoute` from `$app/paths`
Major Changes
  • breaking: remove base, assets, and resolveRoute from $app/paths (#15507)

  • breaking: require Svelte config options to be passed through the Vite plugin (#16007)

  • 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: add 'error' result type to preloadData (#12579)

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

Minor Changes
  • feat: expose submitted property of remote forms (#14811)
Patch Changes
  • fix: clear issues and touched states on form reset (#16163)

  • fix: return 404 for form actions and remote functions whose name is an Object.prototype member (#16072)

  • feat: send periodic keep-alive SSE comments from query.live to prevent idle-timeout errors (#16063)

  • fix: render pages over sibling endpoints without GET or HEAD handlers (#16125)

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

  • fix: include hoisted packages in Vite's server.fs.allow list (#15998)

View originalPermalink
How 3.0.0-next.5 went

2.67.0

Added 1
  • Add `prerender.handleInvalidUrl` option for invalid URLs discovered while crawling
Fixed 2
  • Support `exactOptionalPropertyTypes` for optional form schema fields
  • Avoid unnecessarily overriding a user's Vite 8 `codeSplitting` setting
Minor Changes
  • feat: add prerender.handleInvalidUrl option for invalid URLs discovered while crawling (#16088)
Patch Changes
  • fix: support exactOptionalPropertyTypes for optional form schema fields (#15866)

  • fix: avoid unnecessarily overriding a user's Vite 8 codeSplitting setting (#16118)

View originalPermalink
How 2.67.0 went

2.66.0

Added 2
  • Precompress prerendered `.md` and `.mdx` files
  • Warn the user when they forget to make boolean inputs optional in their form schemas
Fixed 16
  • Blur active element before component update during navigation so that blur/focusout handlers fire while old component data is still valid
  • Ensure `base` is available from `$service-worker` during development
  • Use correct relative asset paths when rendering an error page for a missing `__data.json` request
  • Preserve active `for await` consumers across `query.live` reconnects
  • Settle `query.live` reconnect promise on all exit paths, preventing `invalidateAll()` from deadlocking when a live query is offline or interrupted
  • Preserve last value when a `query.live` stream completes without yielding on reconnect
Minor Changes
  • feat: precompress prerendered .md and .mdx files (#15893)

  • feat: warn the user when they forget to make boolean inputs optional in their form schemas (#15804)

Patch Changes
  • fix: blur active element before component update during navigation so that blur/focusout handlers fire while old component data is still valid (#15452)

  • fix: ensure base is available from $service-worker during development (#15882)

  • fix: use correct relative asset paths when rendering an error page for a missing __data.json request (#15884)

  • fix: preserve active for await consumers across query.live reconnects (#16022)

  • fix: settle query.live reconnect promise on all exit paths, preventing invalidateAll() from deadlocking when a live query is offline or interrupted (#16022)

  • fix: preserve last value when a query.live stream completes without yielding on reconnect (#16022)

  • fix: remove types: ['node'] from generated tsconfig to avoid errors when @types/node is not installed (#15709)

  • fix: prefer pages over endpoints when prerendering (#16076)

  • fix: restore snapshots after afterNavigate callbacks (#16066)

  • fix: support ws:/wss: and trusted-types-eval for CSP sources (#15938)

  • fix: omit empty file inputs from remote form data (#15898)

  • fix: fail early if a route with +page and +server is marked as prerenderable (#16075)

  • fix: wait a tick before resetting forms (#15805)

  • fix: preflight schemas apply correctly when chained before for (#15863)

  • fix: blank page in SPA mode when root layout load() throws (#15798)

  • fix: pass all unknown options from the sveltekit Vite plugin through to vite-plugin-svelte (#16010)

View originalPermalink
How 2.66.0 went

2.65.2

Fixed 11
  • Throw an error when prerendering a root +server.js that returns a non-HTML response
  • Decode base64-serialized fetch bodies before caching them for client-side replay
  • Correctly access explicit dynamic public environment variables from prerendered pages and service workers
  • Allow preloadCode to be called during initial page load
  • Send cache-control: private, no-store on remote function responses so personalized query results can never be cached by shared caches
  • Preserve the HTTP status and error body when a remote function request fails in transport instead of reporting a generic 500
Patch Changes
  • fix: throw an error when prerendering a root +server.js that returns a non-HTML response (#15994)

  • fix: decode base64-serialized fetch bodies before caching them for client-side replay (#16034)

  • fix: correctly access explicit dynamic public environment variables from prerendered pages and service workers (#16024)

  • fix: allow preloadCode to be called during initial page load (#16028)

  • fix: send cache-control: private, no-store on remote function responses so personalized query results can never be cached by shared caches (#16020)

  • fix: preserve the HTTP status and error body when a remote function request fails in transport (e.g. a 401/403 from a handle hook), instead of reporting a generic 500 (#16021)

  • fix: avoid loading universal nodes during build analysis when the app uses a hash router (#16042)

  • fix: correctly serve client entry during development when using the pnpm global virtual store (#16045)

  • fix: normalize path separators when comparing config (#16037)

  • fix: ensure building resolves correctly to allow avoiding build-time explicit environment variable validation (#16058)

  • fix: prevent unhandled promise rejections when remote function failures are consumed via current/error instead of await (#16018)

View originalPermalink
How 2.65.2 went

2.65.1

Fixed 4
  • Avoid importing the Vite development client code into builds with a non-standard NODE_ENV
  • Don't emit the unused bundle and stylesheet files when using bundleStrategy: 'inline'
  • Reset queries before navigating when invalidateAll is set
  • Regression in loading assets for absolute path apps
Patch Changes
  • fix: avoid importing the Vite development client code into builds with a non-standard NODE_ENV (#16023)

  • fix: don't emit the unused bundle and stylesheet files when using bundleStrategy: 'inline' (#16025)

  • fix: reset queries before navigating when invalidateAll is set (#16014)

  • fix: regression in loading assets for absolute path apps (#16026)

View originalPermalink
How 2.65.1 went

3.0.0-next.4

Pre-release
Fixed 1
  • reset queries before navigating when invalidateAll is set
Patch Changes
  • fix: reset queries before navigating when invalidateAll is set (#16014)
View originalPermalink
How 3.0.0-next.4 went

3.0.0-next.3

Pre-release
Added 1
  • Allow queries to refresh other queries
Fixed 2
  • Dedupe remote data
  • Skip client build if all routes have CSR disabled
Minor Changes
  • feat: allow queries to refresh other queries (#16012)
Patch Changes
  • fix: dedupe remote data (#15991)

  • fix: skip client build if all routes have CSR disabled (#15936)

View originalPermalink
How 3.0.0-next.3 went

2.65.0

Added 1
  • Allow queries to refresh other queries
Fixed 2
  • Dedupe remote data
  • Skip client build if all routes have CSR disabled
Minor Changes
  • feat: allow queries to refresh other queries (#16012)
Patch Changes
  • fix: dedupe remote data (#15991)

  • fix: skip client build if all routes have CSR disabled (#15936)

View originalPermalink
How 2.65.0 went

3.0.0-next.2

Pre-release
Fixed 4
  • use SSE for query.live
  • use forward slashes in the generated env.d.ts import path on Windows
  • avoid importing Vite while validating explicit environment variables
  • ensure version is defined when importing from $app/env with explicit environment variables
Patch Changes
  • fix: use SSE for query.live (#15957)

  • fix: use forward slashes in the generated env.d.ts import path on Windows (#15977)

  • fix: avoid importing Vite while validating explicit environment variables (#15953)

  • docs: adjust the release version of explicit env vars (#15968)

  • fix: ensure version is defined when importing from $app/env with explicit environment variables (#15971)

View originalPermalink
How 3.0.0-next.2 went

2.64.0

Added 1
  • Allow commands to receive File objects
Fixed 1
  • Avoid server components from being bundled if SSR is turned off for a route
Minor Changes
  • feat: allow commands to receive File objects (#15978)
Patch Changes
  • fix: avoid server components from being bundled if SSR is turned off for a route (#15982)
View originalPermalink
How 2.64.0 went

2.63.1

Fixed 5
  • use SSE for query.live
  • use forward slashes in the generated env.d.ts import path on Windows
  • allow $app/environment with a warning when explicitEnvironmentVariables is enabled
  • avoid importing Vite while validating explicit environment variables
  • ensure version is defined when importing from $app/env with explicit environment variables
Patch Changes
  • fix: use SSE for query.live (#15957)

  • fix: use forward slashes in the generated env.d.ts import path on Windows (#15977)

  • fix: allow $app/environment with a warning when explicitEnvironmentVariables is enabled (#15980)

  • fix: avoid importing Vite while validating explicit environment variables (#15953)

  • docs: adjust the release version of explicit env vars (#15968)

  • fix: ensure version is defined when importing from $app/env with explicit environment variables (#15971)

View originalPermalink
How 2.63.1 went

3.0.0-next.1

Pre-release
Fixed 1
  • Reinstate $app/environment as an alias for $app/env to support dependencies that import it
Patch Changes
  • fix: reinstate $app/environment as an alias for $app/env, in case dependencies import it (#15964)
View originalPermalink
How 3.0.0-next.1 went

3.0.0-next.0

Pre-release
Added 2
  • Add config.kit.output.linkHeaderPreload to preload using the Link header
  • Add explicit env vars
Changed 4
  • Upgrade to cookie v1, cookie names must now contain only ASCII characters
  • Default the cookie path option to '/'
  • The delta property now only exists for popstate navigation events
  • Resolve paths using the Vite config root option instead of process.cwd() to better support monorepo configurations such as Vitest workspaces
Fixed 2
  • Remove check for svelte.config.js before running sync
  • Generate a placeholder tsconfig.json to squelch sync-time warnings
Removed 11
  • TypeScript 6 is now the minimum required version
  • Node 22 or newer is now required
  • Remove the preloadStrategy option, modulepreload will always be used
  • Remove @sveltejs/kit/node/polyfills
  • Require @sveltejs/vite-plugin-svelte v7
  • Remove createEntries from the Builder object passed to adapter functions
Deprecated 1
  • Deprecate Response helpers in favor of platform-provided alternatives
Major Changes
  • breaking: TypeScript 6 is now the minimum required version (#15930)

  • breaking: upgrade to cookie v1. Cookie names must now contain only ASCII characters (#13386)

  • breaking: require Node 22 or newer (#12548)

  • 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: remove createEntries from the Builder object passed to adapter functions (#15509)

  • 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: remove deprecated pragma header in version polling for improved CORS support (#15428)

  • breaking: require Svelte 5.48.0 or newer (#15371)

  • chore: change error, isHttpError, redirect, and isRedirect to refer to public type instead of internal class (#15250)

  • 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)

Minor Changes
  • feat: resolve paths using the Vite config root option instead of process.cwd() to better support monorepo configurations such as Vitest workspaces (#15469)

  • chore: deprecate Response helpers in favor of platform-provided alternatives (#15448)

  • feat: explicit env vars (#15934)

Patch Changes
  • fix: remove check for svelte.config.js before running sync (#15946)

  • fix: generate a placeholder tsconfig.json to squelch sync-time warnings (#15948)

  • chore: remove dependency on kleur (#12548)

  • chore: remove dependency on set-cookie-parser (#15384)

  • fix: allow use of $app/env/public in service workers (#15950)

View originalPermalink
How 3.0.0-next.0 went

2.63.0

Added 1
  • explicit env vars
Fixed 3
  • remove check for svelte.config.js before running sync
  • generate a placeholder tsconfig.json to squelch sync-time warnings
  • allow use of $app/env/public in service workers
Minor Changes
  • feat: explicit env vars (#15934)
Patch Changes
  • fix: remove check for svelte.config.js before running sync (#15946)

  • fix: generate a placeholder tsconfig.json to squelch sync-time warnings (#15948)

  • fix: allow use of $app/env/public in service workers (#15950)

View originalPermalink
How 2.63.0 went

2.62.0

Added 1
  • Support passing Svelte(Kit) config via Vite plugin
Fixed 4
  • Preserve multiple Set-Cookie headers on 304 responses
  • Preload for anchor elements that were just previously preloaded
  • Catch load function streaming errors on the client
  • Avoid generating the _app/env.js module if public dynamic environment variables are not used by the app
Minor Changes
  • feat: support passing Svelte(Kit) config via Vite plugin (#15944)
Patch Changes
  • fix: preserve multiple Set-Cookie headers on 304 responses (#15902)

  • fix: preload for anchor elements that were just previously preloaded (#15915)

  • fix: catch load function streaming errors on the client (#15929)

  • fix: avoid generating the _app/env.js module if public dynamic environment variables are not used by the app (#15940)

View originalPermalink
How 2.62.0 went

2.61.1

Fixed 1
  • fix regression where routes starting and ending with a route group are not matched correctly
Patch Changes
  • fix: regression where routes starting and ending with a route group are not matched correctly (#15903)
View originalPermalink
How 2.61.1 went

2.61.0

Added 3
  • Live query instances are now themselves async-iterable
  • Add programmatic `submit` method to `form` remote function instances
  • Pass `form` remote function instance into `enhance` callback
Changed 1
  • Remote queries can now be awaited in any context including event handlers, module scope, and async callbacks, not just inside reactive contexts, with cache shared across reactive and non-reactive subscribers
Fixed 8
  • Resolve the app payload without using `process.env.NODE_ENV`
  • Support `exactOptionalPropertyTypes` for optional route params
  • Correctly send `true` value to the server for 'submit' and 'hidden' form fields
  • Avoid build warnings about undefined universal hooks
  • Prefer default error page when failing to decode the URL pathname
  • Disable link prefetching on slow internet connections
  • Allow routes ending with optional parameters next to more specific routes
  • Remove reliance on Content-Length header in deserialize_binary_form to avoid failures when proxies strip the header and use chunked transfer encoding
Removed 1
  • Remove the `.run()` method from remote queries on both the client and the server; use `await query()` directly instead
Minor Changes
  • breaking: the .run() method has been removed from remote queries on both the client and the server. Use await query() directly instead — it now works everywhere (#15779)

  • feat: remote queries can now be awaited in any context (event handlers, module scope, async callbacks), not just inside reactive contexts. The cache is shared across reactive and non-reactive subscribers, so awaiting a query in an event handler will dedupe with components that have already subscribed to the same query. (#15779)

  • feat: live query instances are now themselves async-iterable (#15878)

  • feat: add programmatic submit method to form remote function instances (#15657)

  • feat: pass form remote function instance into enhance callback (#15657)

Patch Changes
  • fix: resolve the app payload without using process.env.NODE_ENV (#15852)

  • fix: support exactOptionalPropertyTypes for optional route params (#15825)

  • fix: correctly send true value to the server for 'submit' and 'hidden' form fields (#15858)

  • fix: avoid build warnings about undefined universal hooks (#15895)

  • fix: prefer default error page when failing to decode the URL pathname (#15744)

  • fix: disable link prefetching on slow internet connections (#15885)

  • fix: allow routes ending with optional parameters next to more specific routes (#15861)

  • fix: remove reliance on Content-Length header in deserialize_binary_form, which caused failures when proxies (e.g. Vercel, Azure) strip the header and use chunked transfer encoding (#15796)

View originalPermalink
How 2.61.0 went

2.60.1

Fixed 1
  • prevent query.batch cross-talk
Patch Changes
  • chore: bump svelte and devalue (#15836)

  • fix: prevent query.batch cross-talk (dadaefc)

View originalPermalink
How 2.60.1 went

2.60.0

Added 2
  • Allow 'submit' and 'hidden' form fields to accept numbers and booleans
  • Warn on unread form remote function validation issues
Fixed 2
  • Abort navigation after async rendering if obsolete
  • Skip refreshing queries on full-page reload form submissions
Minor Changes
  • feat: allow 'submit' and 'hidden' form fields to accept numbers and booleans (#15802)

  • feat: warn on unread form remote function validation issues (#15653)

Patch Changes
  • fix: abort navigation after async rendering if obsolete (#15811)

  • fix: skip refreshing queries on full-page reload form submissions (#15803)

View originalPermalink
How 2.60.0 went

2.59.1

Fixed 1
  • resolve paths to route files with the letter drive on Windows
Patch Changes
  • fix: resolve paths to route files with the letter drive on Windows (#15793)
View originalPermalink
How 2.59.1 went

2.59.0

Added 2
  • Support `query.batch` in `requested(...)`
  • Experimental `query.live` function
Changed 1
  • On the server, make the promise returned from `refresh` represent adding the refresh to the map, not the time it takes to run the remote function
Fixed 6
  • Unwrap `Promise` in `RemoteCommand` output type
  • Empty call to `.updates()` on a command/form invocation means 'don't update anything'
  • `form.fields.foo.as('checkbox', default_value)` now works
  • Remote forms with default values defined by `field.as('text', defaultValue)` now correctly reset to the provided default values once submitted
  • Make sure queries always get started correctly
  • Allow plain functions as overrides in `updates`
Minor Changes
  • feat: support query.batch in requested(...) (#15751)

  • breaking: on the server, make the promise returned from refresh represent adding the refresh to the map, not the time it takes to run the remote function (#15705)

  • feat: experimental query.live function (#15705)

Patch Changes
  • fix: unwrap Promise in RemoteCommand output type (#15771)

  • fix: empty call to .updates() on a command/form invocation means "don't update anything" (#15705)

  • fix: form.fields.foo.as('checkbox', default_value) now works (#15752)

  • fix: remote forms with default values defined by field.as('text', defaultValue) now correctly reset to the provided default values once submitted (#15753)

  • fix: make sure queries always get started correctly (#15705)

  • fix: allow plain functions as overrides in updates (#15705)

View originalPermalink
How 2.59.0 went

2.58.0

Added 1
  • Add optional third generic parameter `Validated` to `RemoteQueryFunction` that represents the argument type after schema validation/transformation
Changed 3
  • Require `limit` in `requested`
  • Make `requested` yield `{ arg, query }` entries instead of the validated argument
  • Change enhance function return type from void to MaybePromise<void>
Fixed 7
  • Allow `query().current`, `.error`, `.loading`, and `.ready` to work in non-reactive contexts
  • Prevent `deep_set` crash on nullish nested values
  • Restore correct `RemoteFormFields` typing for nullable array fields so `.as('checkbox')` and friends work again
  • Don't warn about removed SSI comments in `transformPageChunk`
  • Throw an error when `resolve` is called with an external URL
  • Avoid FOUC for CSR-only pages by loading styles and fonts before CSR starts
  • Reset form result on redirect
Minor Changes
  • breaking: require limit in requested (as originally intended) (#15739)

  • feat: RemoteQueryFunction gains an optional third generic parameter Validated (defaulting to Input) that represents the argument type after schema validation/transformation (#15739)

  • breaking: requested now yields { arg, query } entries instead of the validated argument (#15739)

Patch Changes
  • fix: allow query().current, .error, .loading, and .ready to work in non-reactive contexts (#15699)

  • fix: prevent deep_set crash on nullish nested values (#15600)

  • fix: restore correct RemoteFormFields typing for nullable array fields (e.g. when a schema uses .default([])), so .as('checkbox') and friends work again (#15723)

  • fix: don't warn about removed SSI comments in transformPageChunk (#15695)

    Server-side include (SSI) directives like <!--#include virtual="..." --> are HTML comments that are replaced by servers such as nginx. Previously, removing them in transformPageChunk would trigger a false positive warning about breaking Svelte's hydration. Since SSI comments always start with <!--# and Svelte's hydration comments never do, they can be safely excluded from the check.

  • Change enhance function return type from void to MaybePromise. (#15710)

  • fix: throw an error when resolve is called with an external URL (#15733)

  • fix: avoid FOUC for CSR-only pages by loading styles and fonts before CSR starts (#15718)

  • fix: reset form result on redirect (#15724)

View originalPermalink
How 2.58.0 went

2.57.1

Fixed 4
  • Improve validation for redirect inputs
  • Enforce BODY_SIZE_LIMIT on chunked requests
  • Use default values as fallbacks
  • Relax form typings for union types
Patch Changes
  • fix: better validation for redirect inputs (10d7b44)

  • fix: enforce BODY_SIZE_LIMIT on chunked requests (3202ed6)

  • fix: use default values as fallbacks (#15680)

  • fix: relax form typings for union types (#15687)

View originalPermalink
How 2.57.1 went

2.57.0

Added 1
  • Return boolean from `submit` to indicate submission validity for enhanced `form` remote functions
Fixed 5
  • Use array type for select fields that accept multiple values
  • Silently 404 Chrome DevTools workspaces request in dev and preview
  • Require `'svelte-trusted-html'` and `'sveltekit-trusted-url'` in `config.kit.csp.directives['trusted-types']` when configured
  • Avoid inlineDynamicImports ignored with codeSplitting warning when using Vite 8
  • Reimplement treeshaking non-dynamic prerendered remote functions
Minor Changes
  • feat: return boolean from submit to indicate submission validity for enhanced form remote functions (#15530)
Patch Changes
  • fix: use array type for select fields that accept multiple values (#15591)

  • fix: silently 404 Chrome DevTools workspaces request in dev and preview (#15656)

  • fix: config.kit.csp.directives['trusted-types'] requires 'svelte-trusted-html' (and 'sveltekit-trusted-url' when a service worker is automatically registered) if it is configured (#15323)

  • fix: avoid inlineDynamicImports ignored with codeSplitting warning when using Vite 8 (#15647)

  • fix: reimplement treeshaking non-dynamic prerendered remote functions (#15447)

View originalPermalink
How 2.57.0 went

2.56.0

Added 3
  • Support TypeScript 6.0
  • Use `hydratable` for remote function transport
  • Allow `form` fields to specify a default value with `field.as(type, value)`
Changed 4
  • Rework client-driven refreshes
  • Stabilize remote function caching by sorting object keys
  • Add `run()` method to queries and disallow awaiting queries outside render
  • Isolate command-triggered query refresh failures per-query
Fixed 10
  • Don't request new data when `.refresh` is called on a query with no cache entry
  • Allow using multiple remote functions within one async derived
  • Avoid false-positive overridden Vite `base` setting warning when setting a `paths.base` in `svelte.config.js`
  • Manage queries in their own `$effect.root`
  • Avoid `inlineDynamicImports` deprecation warning when building the service worker with Vite 8
  • Correctly escape backticks when precomputing CSS
Minor Changes
  • breaking: rework client-driven refreshes (#15562)

  • breaking: stabilize remote function caching by sorting object keys (#15570)

  • breaking: add run() method to queries, disallow awaiting queries outside render (#15533)

  • feat: support TypeScript 6.0 (#15595)

  • breaking: isolate command-triggered query refresh failures per-query (#15562)

  • feat: use hydratable for remote function transport (#15533)

  • feat: allow form fields to specify a default value (field.as(type, value)) (#15577)

Patch Changes
  • fix: don't request new data when .refresh is called on a query with no cache entry (#15533)

  • fix: allow using multiple remote functions within one async derived (#15561)

  • fix: avoid false-positive overridden Vite base setting warning when setting a paths.base in svelte.config.js (#15623)

  • fix: manage queries in their own $effect.root (#15533)

  • fix: avoid inlineDynamicImports deprecation warning when building the service worker with Vite 8 (#15550)

  • fix: correctly escape backticks when precomputing CSS (#15593)

  • fix: discard obsolete forks before finishing navigation (#15634)

  • chore: tighten up override implementation (#15562)

  • fix: ensure the default Svelte 5 error.svelte file uses runes mode (#15609)

  • fix: deduplicate same-cache-key batch calls during SSR (#15533)

  • fix: decrement pending_count when form callback doesn't call submit() (#15520)

View originalPermalink
How 2.56.0 went

2.55.0

Added 1
  • Page and layout params with matchers are now type narrowed in $app/types for better type safety when working with params in $app/types, $app/state, and hooks
Minor Changes
  • feat: page and layout params with matchers are now type narrowed in $app/types, leading to better type safety when working with params in $app/types, $app/state, and hooks. (#15502)
View originalPermalink
How 2.55.0 went

2.54.0

Added 2
  • Allow error boundaries to catch errors on the server
  • Allow resolve() to accept pathnames with a search string and/or hash
Changed 1
  • Remove deprecation warnings for config.kit.files.* options when validating the Svelte config file
Fixed 2
  • Don't wait for remote functions that are not awaited in the template
  • Handle form target attribute in remote form redirects
Minor Changes
  • feat: allow error boundaries to catch errors on the server (#15308)
Patch Changes
  • chore: upgrade devalue (#15535)

  • fix: don't wait for remote functions that are not awaited in the template (#15280)

  • feat: allow resolve() to accept pathnames with a search string and/or hash (#15458)

  • chore: remove deprecation warnings for config.kit.files.* options when validating the Svelte config file (#15482)

  • fix: handles form target attribute in remote form redirects (#15457)

View originalPermalink
How 2.54.0 went

2.53.4

Fixed 1
  • avoid Vite warning about unknown codeSplitting option
Patch Changes
  • fix: avoid Vite warning about unknown codeSplitting option (#15451)
View originalPermalink
How 2.53.4 went

2.53.3

Fixed 1
  • prevent overlapping file metadata in remote functions form
Patch Changes
  • fix: prevent overlapping file metadata in remote functions form (faba869)
View originalPermalink
How 2.53.3 went

2.53.2

Fixed 5
  • server-render nested form value sets
  • use deep partial types for form remote functions .value() and .set(...)
  • provide correct url info to remote functions
  • allow optional types for remote query/command/prerender functions
  • allow commands in more places
Patch Changes
  • fix: server-render nested form value sets (#15378)

  • fix: use deep partial types for form remote functions .value() and .set(...) (#14837)

  • fix: provide correct url info to remote functions (#15418)

  • fix: allow optional types for remote query/command/prerender functions (#15293)

  • fix: allow commands in more places (#15288)

View originalPermalink
How 2.53.2 went

2.53.1

Fixed 1
  • Address warning about inlineDynamicImports when using Vite 8
Patch Changes
  • fix: address warning about inlineDynamicImports when using Vite 8 (#15403)
View originalPermalink
How 2.53.1 went

2.53.0

Added 1
  • Support for Vite 8
Fixed 2
  • Remove event listeners on form attachment cleanup
  • Apply queries refreshed in a form remote function when a redirect is thrown
Minor Changes
  • feat: support Vite 8 (#15024)
Patch Changes
  • fix: remove event listeners on form attachment cleanup (#15286)

  • fix: apply queries refreshed in a form remote function when a redirect is thrown (#15362)

View originalPermalink
How 2.53.0 went
View all

Discussion