s

sveltejs / svelte

You can copy the badge and add it to your README!

Continuous Releases from main
Version Packages (#17711) 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 ## svelte@5.51.2 ### Patch Changes - fix: take async into consideration for dev delegated handlers ([#17710](https://github.com/sveltejs/svelte/pull/17710)) - fix: emit state_referenced_locally warning for non-destructured props ([#17708](https://github.com/sveltejs/svelte/pull/17708)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>yesterday82265f1
Warn on non-destructured `$props()` reads in runes mode (#17708) Non-destructured `$props()` access in runes mode silently skipped the `state_referenced_locally` warning, leading to missed guidance when users read `props` via identifiers or member expressions. - **Analyzer behavior** - Include `rest_prop` bindings in `state_referenced_locally` detection so reads of `$props()` identifiers warn consistently with destructured props. - **Validation coverage** - Add a validator fixture for `$props()` identifiers and update the `props-identifier` snapshot expectations to capture the new warnings. Example: ```svelte <script> const props = $props(); const { model } = props; // now warns const value = props.model.value; // now warns </script> ``` <!-- START COPILOT ORIGINAL PROMPT --> <details> <summary>Original prompt</summary> > > ---- > > *This section details on the original issue you should resolve* > > <issue_title>False negative for `state_referenced_locally` warning on not destructured `$props` access?</issue_title> > <issue_description>### Describe the bug > > I was looking for a workaround for sveltejs/svelte#17669 and thought of not destructuring the `$props` directly; to my surprise there were no warnings at all. > > > ### Reproduction > > ```js > const props = $props(); > const { model } = props; // missing warning > > const value = props.model.value; // missing warning > ``` > > [Playground](https://svelte.dev/playground/untitled?version=5.50.2#H4sIAAAAAAAACn2QT4vCQAzFv0oIe1CQ9l51YY97lj1tPYxtXAam6TAT_1H63U0HUax1j3nvJeT3OmTTEBb4w2LFUY0L3FtHEYvfDuXiB28QVL8lv7zP4pGcDNrORJrSq5aFWPQMrmIVrJfPkktROQp00LQ1OehhDR8-tD7O5ku174GjcQdSM8WyNC0hz4HOniqhGk4msOW_klf54zrPNkTwzVUbgsZuz8z1G6GzYCHhQP3iDdV47Zltwv2XMEGN6Cbgk5vIGhujAj3AXstI4WxcycvivZFn7q1OxrqT5RqLvXGR-itXywVk_AEAAA) > > ### Logs > > ```shell > > ``` > > ### System Info > > ```shell > REPL - Svelte v.5.50.2 > ``` > > ### Severity > > annoyance</issue_description> > > ## Comments on the Issue (you are @copilot in this section) > > <comments> > </comments> > </details> <!-- START COPILOT CODING AGENT SUFFIX --> - Fixes sveltejs/svelte#17685 <!-- START COPILOT CODING AGENT TIPS --> --- 💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Rich-Harris <1162160+Rich-Harris@users.noreply.github.com> Co-authored-by: Rich Harris <rich.harris@vercel.com> Co-authored-by: Paolo Ricciuti <ricciutipaolo@gmail.com>yesterdaydd9fc0d
fix: take async into consideration for dev delegated handlers (#17710) Closes #17709 ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. - [x] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint`yesterday01f1937
Version Packages (#17704) 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 ## svelte@5.51.1 ### Patch Changes - fix: don't crash on undefined `document.contentType` ([#17707](https://github.com/sveltejs/svelte/pull/17707)) - fix: use symbols for encapsulated event delegation ([#17703](https://github.com/sveltejs/svelte/pull/17703)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2 days ago7299ffc
fix: don't crash on undefined `document.contentType` (#17707) closes #177062 days ago743d52a
fix: use symbols for encapsulated event delegation (#17703) Alternative to #17690. Closes #170573 days ago220b526
Version Packages (#17693) 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 ## svelte@5.51.0 ### Minor Changes - feat: Use `TrustedTypes` for HTML handling where supported ([#16271](https://github.com/sveltejs/svelte/pull/16271)) ### Patch Changes - fix: sanitize template-literal-special-characters in SSR attribute values ([#17692](https://github.com/sveltejs/svelte/pull/17692)) - fix: follow-up formatting in `print()` — flush block-level elements into separate sequences ([#17699](https://github.com/sveltejs/svelte/pull/17699)) - fix: preserve delegated event handlers as long as one or more root components are using them ([#17695](https://github.com/sveltejs/svelte/pull/17695)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>3 days ago7b6755e
fix: follow-up formatting in `print()` for block-level elements (#17699) Follow-up to #17319. The `Fragment` visitor in `print()` only flushed sequences on `RegularElement`, causing block-level elements (`Component`, `SvelteHead`, `SvelteBoundary`, etc.) to be lumped into the same sequence as adjacent nodes. This broke tools that programmatically manipulate the AST (e.g. [sveltejs/cli#915](https://github.com/sveltejs/cli/pull/915)). The fix flushes before and after all block-level element types, ensuring they get their own sequence and proper line separation. ### Before ```svelte <svelte:head><title>Page Title</title></svelte:head><div>no space</div> <Component /><Component /> <Component><span>child</span></Component><div>after component</div> <svelte:boundary><div>boundary content</div></svelte:boundary><div>after boundary</div> <!--comment--><div>after comment</div> <div>before comment</div> <!--comment--> {#each items as item} <div>{item}</div> {/each}<div>after each</div> {@render children()}<div>after render</div> <div>before render</div> {@render children()} ``` ### After ```svelte <svelte:head><title>Page Title</title></svelte:head> <div>no space</div> <Component /> <Component /> <Component><span>child</span></Component> <div>after component</div> <svelte:boundary><div>boundary content</div></svelte:boundary> <div>after boundary</div> <!--comment--> <div>after comment</div> <div>before comment</div> <!--comment--> {#each items as item} <div>{item}</div> {/each} <div>after each</div> {@render children()} <div>after render</div> <div>before render</div> {@render children()} ```3 days ago86d5522
fix: implement ref counting for mount with same target (#17695) ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [ ] Ideally, include a test that fails without this PR but passes with it. - [x] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` Fixes #17694 Not really sure how to add a failing test here. The code was generated by Codex 5.3, but I cleaned it up and manually reviewed it myself. Not sure if this is the best approach to solving the issue, though. It does add some overhead with the extra maps. --------- Co-authored-by: Rich Harris <rich.harris@vercel.com> Co-authored-by: Rich Harris <hello@rich-harris.dev>3 days ago0565dca
chore: compensate for github's complete lack of devex (#17698) As far as we can tell, there's no good way to turn off deployment request notifications. This removes automatic pkg.pr.new builds for commits not pushed directly to the svelte repository, meaning forks' commits will have to be manually requested through the GitHub Actions UI. It also makes the drive-by change of deriving the PR number from the commit, which technically is a "breaking change" because there _could_ be multiple PRs associated with a commit... but let's just not do that and we'll be okay.3 days ago168702d