web development for the rest of us
A floor, not a guess: counts only commits whose author, co-author trailer, or message explicitly credits an AI tool (Claude, Copilot, Cursor, aider, Codex…). Based on 30 mainline commits. Unattributed AI code isn't counted here — the full audit estimates that separately.
mainCleaned up dead code in the props reactivity system that was causing TypeScript compilation failures. The change simplifies the internal proxy object by removing unused properties (`other` and `to_proxy`) that were only created in development mode.
Corrected how declaration tags are transformed during server-side rendering by ensuring the state parameter is properly passed to the visit function. This fixes an issue where declaration tags weren't being processed correctly on the server.
Published a patch release of Svelte fixing four issues: wrapping parentheses in {@const} declarations, reactivity context cleanup, searchParams subscriber notifications, and optional parameter handling in TypeScript scripts. The version number was bumped from 5.56.3 to 5.56.4 and the changelog was updated.
Fixed a bug where reactivity context wasn't properly unset after async operations completed, which could cause incorrect mutation errors when multiple promises were involved. The fix ensures context is always cleared at the right time by queuing a microtask to unset it after restoring.
Fixed the compiler to remove the `?` from optional TypeScript parameters (like `x?: string`) in `<script lang="ts">` blocks, while preserving optional chaining operators (like `x?.length`). This ensures generated JavaScript is valid after upgrading to esrap@2.2.12.
Fixed an issue where `{@const}` tags with parenthesized initializers (like `{@const x = (a)}`) had incorrect end positions in the parser output, causing source slices and tooling to get unbalanced code ranges. The fix uses the actual parser position instead of the expression node's end position to capture the closing parenthesis.
Fixed two notification issues in `SvelteURLSearchParams`: prevented unnecessary updates when the search string didn't actually change (fixing infinite effect loops), and added proper change tracking to the `forEach` method so templates using it now update when params change.
Upgraded the esbuild JavaScript bundler from version 0.25.11 to 0.28.1, which includes security fixes for the development server and Deno API, bug fixes for module evaluation and minification of certain JavaScript patterns, and improved CSS vendor prefixing.
Published a patch release fixing errors in destroyed effects and correcting BigInt typing in state snapshots. This automated release updates the package version and changelog.
Fixed a crash that occurred when an async `$derived` rejected after its error boundary was destroyed. The error handler now checks if the boundary still exists before attempting to call its error method, allowing errors to properly bubble up to parent boundaries instead of crashing.
Added `bigint` to the `Primitive` type definition so that `$state.snapshot()` now correctly infers BigInt properties instead of `never`. This is a type-only fix with no runtime impact.
Svelte has been updated to version 5.56.2 with five bug fixes and improvements, including proper tracking of effect end nodes for async sibling components, prevention of false-positive reactivity warnings, and fixes for animation directives and async deriveds. The package version and changelog have been automatically updated.
Fixed false-positive reactivity loss warnings that occurred when a flush happens before the tracker is reset by a microtask. The fix adds checks for null batch states to filter out these false positives in async operations.
Fixed a bug where async blocks wrapping sole component children would assign incorrect end nodes to effects, causing sibling components to render at wrong positions. The fix ensures nodes are properly assigned during async block initialization.
Bumped the esrap package from version 2.2.9 to 2.2.11 to avoid installing the broken 2.2.10 release. This is a maintenance update that also updates the associated dependency lock file.
Corrected an invalid CSS property in the {#each} documentation example from `rows` to `grid-template-rows` so the chess board grid displays properly with 8 rows and 8 columns.
Fixed a validation error where animation directives were incorrectly flagged when used with declaration tags in each blocks. The compiler now properly ignores declaration tags alongside animation directives, similar to how it already handles comment and const tags.
Updated vitest and coverage tools from version 2 to version 4, requiring adjustments to test syntax and console handling to maintain compatibility. All 7,569 tests continue to pass after these changes.
Pending async deriveds are now properly rejected as obsolete when a batch is discarded, preventing them from triggering already-completed batches and leaving the component in an unreactive state. This fixes a bug where async operations could cause parts of the component tree to stop responding to state changes.
Published a patch release fixing multiple parsing and compilation issues with declaration tags, including proper handling of duplicate definitions, whitespace tolerance, infinite loop prevention, and URL search params updates.
The compiler now detects and reports errors when a snippet block or declaration tag reuses a name that's already been declared in the script, preventing naming conflicts at compile time.
Fixed a bug where the server compiler wasn't checking references for blockers during async derived value optimization, which could cause incorrect behavior during hydration. Added a test case to ensure async derived props work correctly with closures.
Improved the parser to correctly handle division operators (/) inside declaration tags like `{const x = a / b}`. The fix aligns the statement parsing logic with expression parsing to robustly handle division without confusing it with regex or other syntax.
Fixed a compiler bug where a tag expression ending with a trailing slash character would cause the parser to hang indefinitely. The parser now correctly advances past the trailing slash to allow proper error reporting instead of looping forever.
Improved the parser to correctly distinguish between TypeScript `type` declarations and expressions using `type` as a variable identifier (like `type === 'all'` or `type instanceof Foo`). The parser now uses actual code parsing instead of character-class patterns to avoid misclassifying valid expressions as malformed declarations.
Fixed three bugs in declaration tags: allowing multiple declarators where later ones can reference earlier ones (e.g., `{let a = $state(0), b = $derived(a * 2)}`), tolerating whitespace before `let`/`const`, and eliminating spurious warnings for `$derived` declarations. The compiler now registers state transformers before visiting declarations and correctly tracks scope depth to avoid false `state_referenced_locally` warnings.
Fixed a bug where spreading props on `<input>` elements would lose newlines in the value when `type` was set after `value`. The fix ensures the input's `type` attribute is applied first so values are preserved correctly.
Fixed a bug where setting duplicate URL search parameters to a value that matches their joined string wouldn't trigger reactive updates. The fix compares parameter lists directly instead of their concatenated text, ensuring changes are always detected when parameters collapse from multiple values to a single value.
Removed redundant and AI-generated text from the browser support page, making it more concise and clear about what Svelte's minimum browser versions cover versus what they don't (like your own code and SvelteKit). The generation script was also cleaned up to remove verbose comments.
Removed an unused import from input bindings and refactored the async reactivity handler to improve code organization, add debug labels for derived values in development mode, and simplify promise handling logic.
A Monday email with what shipped in svelte, in plain English. No account needed — drop your email and we'll tell you when it's live.
[](https://repowrapped.com/gh/sveltejs/svelte)<a href="https://repowrapped.com/gh/sveltejs/svelte"><img src="https://repowrapped.com/gh/sveltejs/svelte/badge.svg" alt="shipped this week" /></a>