Change8

Migrating to SvelteKit @sveltejs/kit@3.0.0-next.6

Version @sveltejs/kit@3.0.0-next.6 introduces 7 breaking changes. This guide details how to update your code.

Released: 7/6/2026

7
Breaking Changes
8
Migration Steps
7
Affected Symbols

⚠️ Check Your Code

If you use any of these symbols, you need to read this guide:

failhandleErrorinvalidatecookies.parseform.fields.setfields.branch.issuesfield.touched

Breaking Changes

Issue #1

Responses for 204 status codes will now return no content, instead of potentially returning an empty body.

Issue #2

Form action responses now use the HTTP status code returned from the `fail()` function.

Issue #3

Nested server-only directories are no longer supported.

Issue #4

The configuration option `kit.prerender.origin` and the `adapter-node` environment variable `ORIGIN` have been removed. Use the new `kit.paths.origin` config option instead.

Issue #5

Calling `invalidate('All')` during navigation will no longer abort the current navigation.

Issue #6

The `handleError` function can now influence the HTTP status code of the response.

Issue #7

External redirects are forbidden by default. Configure explicitly if needed.

Migration Steps

  1. 1
    If you relied on 204 responses having a body, update your consumers to expect no content.
  2. 2
    Review form actions that use `fail()` to ensure the returned status code is what you intend for the HTTP response.
  3. 3
    Restructure any nested server-only directories (e.g., `src/routes/foo/server/bar.js` should be refactored).
  4. 4
    Replace usage of `kit.prerender.origin` or the `ORIGIN` environment variable with the new `kit.paths.origin` configuration option.
  5. 5
    If you relied on `invalidate('All')` aborting navigation, you may need to adjust navigation logic.
  6. 6
    If you implemented custom error handling via `handleError`, review how status codes are set.
  7. 7
    If you require external redirects, you must now explicitly enable them.
  8. 8
    The experimental remote form option `validate({ includeUntouched })` must now use the value `all` instead of its previous experimental value.

Release Summary

This release introduces significant breaking changes related to form actions, error handling, and configuration origins, alongside new features like form field utilities and bug fixes for request handling.

Need More Details?

View the full release notes and all changes for SvelteKit @sveltejs/kit@3.0.0-next.6.

View Full Changelog