SvelteKit
Full-stack web framework built on Svelte with file-based routing, SSR, and adapter-based deployment.
Patch Changes
- fix: regression where routes starting and ending with a route group are not matched correctly (#15903)
Minor Changes
-
breaking: the
.run()method has been removed from remote queries on both the client and the server. Useawait 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
submitmethod toformremote function instances (#15657) -
feat: pass
formremote function instance intoenhancecallback (#15657)
Patch Changes
-
fix: resolve the app payload without using
process.env.NODE_ENV(#15852) -
fix: support
exactOptionalPropertyTypesfor optional route params (#15825) -
fix: correctly send
truevalue 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)
Patch Changes
- fix: resolve paths to route files with the letter drive on Windows (#15793)
Minor Changes
-
feat: support
query.batchinrequested(...)(#15751) -
breaking: on the server, make the promise returned from
refreshrepresent adding the refresh to the map, not the time it takes to run the remote function (#15705) -
feat: experimental
query.livefunction (#15705)
Patch Changes
-
fix: unwrap
PromiseinRemoteCommandoutput 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)
Minor Changes
-
breaking: require
limitinrequested(as originally intended) (#15739) -
feat:
RemoteQueryFunctiongains an optional third generic parameterValidated(defaulting toInput) that represents the argument type after schema validation/transformation (#15739) -
breaking:
requestednow yields{ arg, query }entries instead of the validated argument (#15739)
Patch Changes
-
fix: allow
query().current,.error,.loading, and.readyto work in non-reactive contexts (#15699) -
fix: prevent
deep_setcrash on nullish nested values (#15600) -
fix: restore correct
RemoteFormFieldstyping 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 intransformPageChunkwould 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<void>. (#15710)
-
fix: throw an error when
resolveis 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)
Minor Changes
- feat: return boolean from
submitto indicate submission validity for enhancedformremote 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)
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)