Skip to content

fix: throw on external links in resolve#15733

Merged
elliott-with-the-longest-name-on-github merged 1 commit intomainfrom
elliott/resolve-throw-on-external-link
Apr 21, 2026
Merged

fix: throw on external links in resolve#15733
elliott-with-the-longest-name-on-github merged 1 commit intomainfrom
elliott/resolve-throw-on-external-link

Conversation

@elliott-with-the-longest-name-on-github
Copy link
Copy Markdown
Contributor

Closes #15714

resolve should not accept external links; the whole point of it is to resolve internal links.

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 20, 2026

🦋 Changeset detected

Latest commit: 3aea3eb

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@sveltejs/kit Patch

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

@svelte-docs-bot
Copy link
Copy Markdown

Comment thread packages/kit/src/runtime/app/paths/client.js

/** @type {import('./client.js').resolve} */
export function resolve(id, params) {
if (!id.startsWith('/')) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The resolve() function fails to reject protocol-relative URLs like //example.com/foo, allowing them to be mangled instead of throwing an error.

Fix on Vercel

@elliott-with-the-longest-name-on-github elliott-with-the-longest-name-on-github merged commit ee8047b into main Apr 21, 2026
29 checks passed
@elliott-with-the-longest-name-on-github elliott-with-the-longest-name-on-github deleted the elliott/resolve-throw-on-external-link branch April 21, 2026 15:07
This was referenced Apr 20, 2026
elliott-with-the-longest-name-on-github pushed a commit that referenced this pull request Apr 23, 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 main, this PR will
be updated.


# Releases
## @sveltejs/kit@2.58.0

### Minor Changes

- breaking: require `limit` in `requested` (as originally intended)
([#15739](#15739))


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


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

### Patch Changes

- fix: allow `query().current`, `.error`, `.loading`, and `.ready` to
work in non-reactive contexts
([#15699](#15699))


- fix: prevent `deep_set` crash on nullish nested values
([#15600](#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](#15723))


- fix: don't warn about removed SSI comments in `transformPageChunk`
([#15695](#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<void>.
([#15710](#15710))


- fix: throw an error when `resolve` is called with an external URL
([#15733](#15733))


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


- fix: reset form result on redirect
([#15724](#15724))

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

resolve() replaces the first character with backslash in external links

2 participants