Change8

@sveltejs/kit@2.56.0

Breaking Changes
📦 sveltekitView on GitHub →
3 breaking3 features🐛 10 fixes🔧 10 symbols

Summary

This release stabilizes remote function caching and overhauls query management by introducing the `run()` method, alongside adding support for TypeScript 6.0.

⚠️ Breaking Changes

  • Client-driven refreshes have been reworked, requiring updates to how refreshes are initiated.
  • Remote function caching is stabilized by sorting object keys, which may change caching behavior.
  • Queries must now be awaited using the new `run()` method; awaiting queries outside of render is disallowed.

Migration Steps

  1. If you were awaiting queries directly, update this to use the new `run()` method on the query object.
  2. Review client-driven refresh logic due to rework in [#15562].

✨ New Features

  • Added support for TypeScript 6.0.
  • Remote function transport now uses `hydratable`. (Related to breaking change #15533)
  • Allow `form` fields to specify a default value using `field.as(type, value)`.

🐛 Bug Fixes

  • Prevent requesting new data when `.refresh` is called on a query that has no existing cache entry.
  • Enabled using multiple remote functions within a single async derived.
  • Fixed a false-positive warning regarding overridden Vite `base` setting when `paths.base` is set in `svelte.config.js`.
  • Queries are now managed within their own `$effect.root`.
  • Avoided the `inlineDynamicImports` deprecation warning when building the service worker with Vite 8.
  • Correctly escaped backticks during CSS precomputation.
  • Obsolete forks are now discarded before navigation finishes.
  • Ensured the default Svelte 5 `error.svelte` file uses runes mode.
  • Deduplicated same-cache-key `batch` calls during SSR.
  • Decremented `pending_count` when a form callback does not call `submit()`.

Affected Symbols