Svelte, a JavaScript framework that compiles declarative components into efficient JavaScript code, is experiencing significant user-reported issues with its new reactivity model in Svelte 5, particularly concerning $state
and $derived
constructs.
Recent issues and pull requests (PRs) indicate ongoing struggles with the reactivity system introduced in Svelte 5. Key issues include #13244, which addresses custom element naming bugs, and #13237, which discusses unexpected synchronous behavior due to $inspect
. These issues highlight user confusion and technical challenges with the new features. Additionally, PRs like #13241 aim to fix promise callback errors in #await
blocks, suggesting active efforts to stabilize the framework.
Simon H (dummdidumm)
Ben McCann (benmccann)
Lucas Garron (lgarron)
Frédéric Crozatier (fcrozatier)
autocomplete
tokens (#13229)Paolo Ricciuti (paoloricciuti)
Dominic Gannaway (trueadm)
Rich Harris (Rich-Harris)
github-actions[bot]
<svelte:self>
(#13219) suggest potential API changes on the horizon.Timespan | Opened | Closed | Comments | Labeled | Milestones |
---|---|---|---|---|---|
7 Days | 40 | 27 | 142 | 23 | 3 |
30 Days | 161 | 116 | 636 | 98 | 3 |
90 Days | 313 | 200 | 1307 | 200 | 4 |
All Time | 7014 | 6193 | - | - | - |
Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Simon H | 4 | 34/28/4 | 33 | 336 | 6921 | |
Rich Harris | 10 | 51/43/10 | 76 | 345 | 6503 | |
Dominic Gannaway | 6 | 33/28/4 | 55 | 169 | 2989 | |
Ben McCann | 4 | 10/8/0 | 11 | 51 | 1244 | |
Paolo Ricciuti | 2 | 12/10/1 | 16 | 58 | 587 | |
github-actions[bot] | 2 | 25/26/0 | 26 | 7 | 518 | |
Dani Sandoval (DreaminDani) | 1 | 1/1/0 | 1 | 1 | 83 | |
Frédéric Crozatier | 1 | 4/4/0 | 4 | 5 | 57 | |
Gautier Ben Aïm | 1 | 2/2/0 | 2 | 7 | 48 | |
brunnerh | 1 | 3/2/0 | 2 | 1 | 34 | |
Lucas Garron | 1 | 1/1/0 | 1 | 2 | 24 | |
Eng Zer Jun | 1 | 1/1/0 | 1 | 2 | 16 | |
Mirwaisse (Mirwaisse) | 1 | 1/1/0 | 1 | 1 | 12 | |
TOMIKAWA Sotaro | 1 | 1/1/0 | 1 | 4 | 11 | |
James Glenn (JR-G) | 0 | 1/0/0 | 0 | 0 | 0 | |
Matei Trandafir (rChaoz) | 0 | 1/0/1 | 0 | 0 | 0 | |
adiGuba (adiguba) | 0 | 3/0/1 | 0 | 0 | 0 | |
Jeremiasz Major (jrmajor) | 0 | 2/0/2 | 0 | 0 | 0 | |
Geoff Cox (GeoffCox) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (mimbrown) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (Conduitry) | 0 | 1/0/0 | 0 | 0 | 0 | |
Orlando Jimenez (OrlandoJE) | 0 | 1/0/1 | 0 | 0 | 0 | |
Pallav Rai (Pallavrai) | 0 | 1/0/0 | 0 | 0 | 0 | |
Maxime LUCE (SomaticIT) | 0 | 1/0/0 | 0 | 0 | 0 | |
Etai Nadler (etainad008) | 0 | 1/0/0 | 0 | 0 | 0 | |
Akshit Garg (AkshitGarg24) | 0 | 1/0/0 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
The Svelte GitHub repository has seen a significant uptick in issue activity, with 821 open issues currently logged. Recent issues highlight various bugs and feature requests, particularly concerning the new rune system and its integration with existing functionalities. A notable theme is the ongoing struggle with reactivity in complex scenarios, especially when dealing with asynchronous operations and nested components. Additionally, several discussions revolve around improving the developer experience by refining error messages and enhancing TypeScript support.
Several issues indicate confusion or frustration among users regarding the new reactivity model introduced in Svelte 5, particularly concerning $state
, $derived
, and their interactions with traditional JavaScript constructs. There are also recurring mentions of challenges related to CSS handling and transitions, especially in Safari.
Here are some of the most recently created and updated issues:
Issue #13244: Custom Elements can have a tag name ending with a hyphen
Issue #13237: Svelte 5: $inspect
makes $effect
run synchronously
$inspect
, leading to confusion about timing guarantees in reactive updates.Issue #13236: Svelte 5: #await
block is evaluated after component is no longer rendered
#await
block continues to evaluate even after its parent component has been unmounted, causing errors.Issue #13234: Reactivity lost on $state
from class when said $state
is consumed in another project (micro-frontend)
$state
across micro-frontend boundaries, indicating potential problems with state management.Issue #13233: Collapse inlined variables into templates
Issue #13232: Use standard for
and if
with non-reactive variables
Issue #13226: A11y: add attribute hints for role="tab"
and role="tabpanel"
Issue #13219: Deprecate <svelte:self>
?
<svelte:self>
tag due to typing issues and suggests alternatives.The dataset consists of a detailed list of open and closed pull requests (PRs) from the Svelte repository, highlighting recent contributions, fixes, features, and documentation updates. The analysis focuses on the themes, commonalities, and notable trends within these PRs.
PR #13243: chore: pin aria-query and axobject-query
Created by Conduitry, this PR aims to pin specific package versions to avoid unexpected issues in the future.
PR #13242: perf: inline default imports into template
Proposed by Ben McCann, this performance enhancement seeks to reduce output size by inlining imports.
PR #13241: fix: disable promise callback when {#await} is destroyed
Submitted by adiGuba, this fix addresses potential errors caused by unresolved promise callbacks after component destruction.
PR #13240: docs: Add spread guidance for multiple event handlers
Geoff Cox added documentation to help users manage multiple event handlers effectively.
PR #13239: fix: avoid flushing sync with $inspect
Dominic Gannaway's fix aims to improve performance by avoiding unnecessary flushes during inspection.
PR #13235: docs: fixes relating to bind:files
& note on FileList
API
Brunnerh's documentation update addresses issues related to file binding in Svelte.
PR #13225: fix: allow component to be mounted in iframe
Maxime LUCE's PR enhances the ability to mount components within iframes while addressing CSS injection issues.
PR #13204: fix: import process for improved Deno compatibility
Ben McCann proposes changes for better compatibility with Deno.
PR #13176: feat : add svelte 5 codemods
Akshit Garg introduces codemods to facilitate migration from Svelte 4 to Svelte 5.
PR #13171: fix : separate template_effect
for dynamic class/style directive with dynamic attributes
Paolo Ricciuti's fix addresses issues with dynamic styling and class directives in templates.
PR #13238: fix: migrate $$slots.default
correctly
Merged by Simon H, this PR ensures proper migration of default slots during updates.
PR #13231: feat: add infinite loop effect callstack
This feature introduces a mechanism for tracking infinite loops during effect execution.
PR #13230: docs: adjust bind:files
section
Documentation improvements were made regarding file binding in Svelte components.
PR #13229: fix: add missing autocomplete
tokens
Frédéric Crozatier added missing tokens for the autocomplete attribute in HTML elements.
PR #13228: Version Packages (next)
This PR was automatically generated for versioning purposes and includes several patch changes.
PR #13222: fix: allow custom element events on slot to bubble inside custom element
This fix ensures that events from slots within custom elements are properly handled.
PR #13218: fix: correctly validate nested if block tags
This PR improves validation logic for nested if blocks in templates.
PR #13217: docs: note event attributes in breaking changes
Documentation was updated to reflect changes regarding event attributes in Svelte 5.
PR #13216: fix: try catch strict_equals
to avoid error accessing STATE_SYMBOL
A defensive coding approach was introduced to handle potential errors gracefully.
PR #13215: fix: allow &
to appear at the top when inside a :global(...)
This fix allows valid CSS rules involving nesting selectors within global styles.
The recent pull requests reflect a strong focus on enhancing performance, improving documentation, and fixing bugs as the Svelte community transitions towards Svelte 5. A notable trend is the emphasis on ensuring backward compatibility while introducing new features or fixes, which is evident in PRs like #13230 and #13184 that address specific user concerns while maintaining existing functionality.
The current state of pull requests in the Svelte repository illustrates a vibrant development ecosystem focused on performance optimization, robust documentation, and community engagement as it transitions towards Svelte 5. Continuous improvement efforts through bug fixes and feature enhancements demonstrate a commitment to delivering a high-quality framework that meets user needs while also preparing for future growth and adaptation within the web development landscape.
Simon H (dummdidumm)
$$slots.default
(#13238).bind:files
section (#13230).Ben McCann (benmccann)
Lucas Garron (lgarron)
Frédéric Crozatier (fcrozatier)
Paolo Ricciuti (paoloricciuti)
Dominic Gannaway (trueadm)
Rich Harris (Rich-Harris)
github-actions[bot]
Overall, the development team is engaged in a robust cycle of feature enhancement, bug fixing, and collaborative problem-solving, reflecting a healthy open-source project environment.