fix: refetch route-tracking server data when navigating away from an error page - #16381
Merged
Rich-Harris merged 1 commit intoJul 22, 2026
Conversation
|
Install the latest version of pnpm add https://pkg.svelte.dev/@sveltejs/kit/c/8a8aca172f1c82395019a83399e67fb41a6c3164Open in Note This PR is from a fork. A maintainer must approve approve each commit before it can be built and installed. |
🦋 Changeset detectedLatest commit: 8a8aca1 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Nic-Polumeyv
marked this pull request as ready for review
July 17, 2026 04:02
Rich-Harris
pushed a commit
that referenced
this pull request
Jul 24, 2026
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to version-3, this PR will be updated.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ `version-3` is currently in **pre mode** so this branch has prereleases rather than normal releases. If you want to exit prereleases, run `changeset pre exit` on `version-3`.⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ # Releases ## @sveltejs/kit@3.0.0-next.12 ### Major Changes - breaking: rename `Pathname` type to `Path` and `Asset` to `AssetPath` ([#16430](#16430)) breaking: remove leading `/` from `Path` and `AssetPath` - breaking: write tsconfig to `node_modules/$app/tsconfig` ([#16458](#16458)) - breaking: error on `event.url`, `event.params` and `event.route` access inside queries ([#16452](#16452)) - breaking: delete `$service-worker` module ([#16450](#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](#16496)) ### Minor Changes - feat: add `$app/manifest` module with `immutable`, `assets`, `prerendered`, and `routes` exports ([#16372](#16372)) - feat: validate that all remote form fields were created with form.fields.foo.as(...) ([#16331](#16331)) - feat: make `$app/paths` importable in service workers ([#16441](#16441)) - feat: `$app/service-worker` module ([#16458](#16458)) - feat: better tsconfig validation ([#16458](#16458)) - fix: default cookies to `secure` to `false` during development ([#16462](#16462)) ### Patch Changes - fix: allow `undefined` values to be passed to form field `.as(...)` where applicable ([#15681](#15681)) - fix: include queries refreshed from within another query in the serialized response ([#16461](#16461)) - fix: generate sourcemaps for remote modules ([#16440](#16440)) - fix: avoid empty getElementById() call on hash routing navigation ([#16448](#16448)) - fix: warn if hook files are spelled as "hook" instead of "hooks" ([#16483](#16483)) - chore: deprecate the `alias` option ([#16470](#16470)) - fix: prevent infinite loops when server-side queries refresh each other in a cycle during the single-flight drain ([#16461](#16461)) - fix: populate `version` in service workers ([#16434](#16434)) - fix: resolve remote modules as external during dev prebundling so packages can re-export remote functions ([#16426](#16426)) - fix: refetch route-tracking server data when navigating away from an error page ([#16381](#16381)) - fix: serialize `query(...).set(...)`/`query(...).refresh()` values into the rendered HTML when called from within a query during SSR ([#16461](#16461)) - fix: fall back to the page's form actions when a sibling endpoint has no POST handler ([#16349](#16349)) - fix: return a lightweight 404 instead of rendering the error page for subresource requests ([#16463](#16463)) - fix: preserve stripped path prefixes by making trailing-slash redirects relative ([#16431](#16431)) - chore: deduplicate type-stripping logic in `tweak_types` ([#16454](#16454)) - fix: more informative error message when running a command inside a query or prerender function ([`eb5c973`](eb5c973)) ## @sveltejs/adapter-cloudflare@8.0.0-next.3 ### Patch Changes - chore: bump `@cloudflare/workers-types` to `4.20260621.1` ([#16455](#16455)) - Updated dependencies [[`adc4c5b`](adc4c5b), [`ecb0701`](ecb0701), [`4b4cc60`](4b4cc60), [`7390dbe`](7390dbe), [`2e71340`](2e71340), [`c87bc3a`](c87bc3a), [`af15c6c`](af15c6c), [`c6fa431`](c6fa431), [`bfe4dea`](bfe4dea), [`df7dc72`](df7dc72), [`5ae11a1`](5ae11a1), [`781205c`](781205c), [`c87bc3a`](c87bc3a), [`a1bfeb9`](a1bfeb9), [`c87bc3a`](c87bc3a), [`9f0127d`](9f0127d), [`4b4cc60`](4b4cc60), [`8f5b9c7`](8f5b9c7), [`c9b5544`](c9b5544), [`fe1d4a4`](fe1d4a4), [`4b4cc60`](4b4cc60), [`5f78e95`](5f78e95), [`25510fc`](25510fc), [`c99a6cf`](c99a6cf), [`17a45ca`](17a45ca), [`2ca20c3`](2ca20c3), [`eb5c973`](eb5c973)]: - @sveltejs/kit@3.0.0-next.12 ## @sveltejs/adapter-netlify@7.0.0-next.4 ### Patch Changes - fix: await `init` on every request to prevent race condition ([#16467](#16467)) - chore: bump Rolldown to `1.2.0` ([#16455](#16455)) - Updated dependencies [[`adc4c5b`](adc4c5b), [`ecb0701`](ecb0701), [`4b4cc60`](4b4cc60), [`7390dbe`](7390dbe), [`2e71340`](2e71340), [`c87bc3a`](c87bc3a), [`af15c6c`](af15c6c), [`c6fa431`](c6fa431), [`bfe4dea`](bfe4dea), [`df7dc72`](df7dc72), [`5ae11a1`](5ae11a1), [`781205c`](781205c), [`c87bc3a`](c87bc3a), [`a1bfeb9`](a1bfeb9), [`c87bc3a`](c87bc3a), [`9f0127d`](9f0127d), [`4b4cc60`](4b4cc60), [`8f5b9c7`](8f5b9c7), [`c9b5544`](c9b5544), [`fe1d4a4`](fe1d4a4), [`4b4cc60`](4b4cc60), [`5f78e95`](5f78e95), [`25510fc`](25510fc), [`c99a6cf`](c99a6cf), [`17a45ca`](17a45ca), [`2ca20c3`](2ca20c3), [`eb5c973`](eb5c973)]: - @sveltejs/kit@3.0.0-next.12 ## @sveltejs/adapter-node@6.0.0-next.6 ### Patch Changes - fix: preserve stripped path prefixes by making trailing-slash redirects relative ([#16431](#16431)) - chore: bump Rolldown to `1.2.0` ([#16455](#16455)) - Updated dependencies [[`adc4c5b`](adc4c5b), [`ecb0701`](ecb0701), [`4b4cc60`](4b4cc60), [`7390dbe`](7390dbe), [`2e71340`](2e71340), [`c87bc3a`](c87bc3a), [`af15c6c`](af15c6c), [`c6fa431`](c6fa431), [`bfe4dea`](bfe4dea), [`df7dc72`](df7dc72), [`5ae11a1`](5ae11a1), [`781205c`](781205c), [`c87bc3a`](c87bc3a), [`a1bfeb9`](a1bfeb9), [`c87bc3a`](c87bc3a), [`9f0127d`](9f0127d), [`4b4cc60`](4b4cc60), [`8f5b9c7`](8f5b9c7), [`c9b5544`](c9b5544), [`fe1d4a4`](fe1d4a4), [`4b4cc60`](4b4cc60), [`5f78e95`](5f78e95), [`25510fc`](25510fc), [`c99a6cf`](c99a6cf), [`17a45ca`](17a45ca), [`2ca20c3`](2ca20c3), [`eb5c973`](eb5c973)]: - @sveltejs/kit@3.0.0-next.12 ## @sveltejs/adapter-vercel@7.0.0-next.3 ### Patch Changes - fix: await `init` on every request to prevent race condition ([#16467](#16467)) - chore: bump Rolldown to `1.2.0` ([#16455](#16455)) - Updated dependencies [[`adc4c5b`](adc4c5b), [`ecb0701`](ecb0701), [`4b4cc60`](4b4cc60), [`7390dbe`](7390dbe), [`2e71340`](2e71340), [`c87bc3a`](c87bc3a), [`af15c6c`](af15c6c), [`c6fa431`](c6fa431), [`bfe4dea`](bfe4dea), [`df7dc72`](df7dc72), [`5ae11a1`](5ae11a1), [`781205c`](781205c), [`c87bc3a`](c87bc3a), [`a1bfeb9`](a1bfeb9), [`c87bc3a`](c87bc3a), [`9f0127d`](9f0127d), [`4b4cc60`](4b4cc60), [`8f5b9c7`](8f5b9c7), [`c9b5544`](c9b5544), [`fe1d4a4`](fe1d4a4), [`4b4cc60`](4b4cc60), [`5f78e95`](5f78e95), [`25510fc`](25510fc), [`c99a6cf`](c99a6cf), [`17a45ca`](17a45ca), [`2ca20c3`](2ca20c3), [`eb5c973`](eb5c973)]: - @sveltejs/kit@3.0.0-next.12 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
After an error page renders,
current.routeisnull(load_root_error_pagestoresroute: nullin the navigation state). The next navigation computesso the route counts as unchanged no matter where the user goes next. A root layout server load that tracked
routeis then skipped as fresh, and its data from before the error page renders on the new page. The new test's failing assertion onversion-3shows the layout still claiming the previous route:A missing
current.routenow counts as changed. On a first-ever navigation the flag is irrelevant, the node has no previous data to reuse anyway, so the only behavior change is the conservative refetch after error pages.The interaction was never designed.
route: nullcame in #6552 to givebeforeNavigatea value meaning "no matched route", and the guard came two months later in #7450 with route tracking itself, mirroring the adjacenturl_changednull-guard. Neither discussed the error-page case.The test lives in the no-ssr app. Its root layout gains a server load returning
route.id, the navigation's data request is intercepted with a 500 to produce the error page, and the follow-up navigation must show the new route id. The app's root+layout.server.jswas an empty file, shipped by #11354 so its 404-loop test has a server load node in dev; giving it a real load keeps that trigger intact.Found while reviewing #16380, which mirrors this computation for the error page itself and carries the same one-line fix.
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
Tests
pnpm testand lint the project withpnpm lintandpnpm checkChangesets
pnpm changesetand following the prompts. Changesets that add features should beminorand those that fix bugs should bepatch. Please prefix changeset messages withfeat:,fix:, orchore:.Edits