In the ever-evolving landscape of JavaScript frameworks, Svelte 5's introduction of runes - a reactive state system built on proxies - has sparked significant discussion among web developers. Released in October last year, Svelte 5 was positioned as the best version of the framework to date, but community feedback suggests a more complex reception. Developers familiar with Vue 3's Composition API and SolidJS signals have been comparing these approaches, highlighting strengths and limitations of each framework's reactivity model.
Runes Implementation Limitations
The implementation of Svelte 5's runes system has drawn criticism for its constraints. Unlike Vue 3 and SolidJS, which allow their reactivity systems to work in any JavaScript file, Svelte 5 requires runes to be used exclusively in .svelte
or .svelte.ts
files. This extends to testing environments, where test files must use the .svelte.test.ts
extension to access rune functionality. Many developers view this as an unnecessary restriction that creates what one commenter called unpleasant code infection across projects.
Additionally, hooks using runes must wrap state in getter functions to maintain reactivity when returning values, creating additional boilerplate compared to Vue 3's more straightforward approach. The inconsistency in how classes and plain JavaScript objects interact with runes has further complicated adoption.
Framework Comparison Points
-
Svelte 5
- Requires runes in
.svelte
or.svelte.ts
files - Needs getter functions to maintain reactivity when returning values
- Inconsistent handling between classes and plain objects
- Smaller ecosystem with fewer specialized components
- Form components uncontrolled by default
- Requires runes in
-
Vue 3
- Reactivity system works in any JS file
- More consistent API across use cases
- Mature ecosystem with more component options
- Upcoming alien-signals integration for performance
- Similar form handling to Svelte (uncontrolled by default)
-
SolidJS
- Signal-based reactivity usable in standard JS files
- Smaller API surface described as "simpler to reason about"
- Growing but still limited ecosystem
- Focuses on performance and simplicity
- Preparing for version 2.0 release
Framework Alternatives Gaining Interest
The discussion has prompted many developers to reconsider alternatives like Vue 3 and SolidJS. Vue 3's Composition API appears to be a particular beneficiary of this conversation, with many commenters praising its more consistent reactivity model and mature ecosystem.
I would strongly recommend Vue3. I am also an old timer. Hand rolled HTML and JavaScript since '97... Vue.js SFC is the thing that feels closest to HTML + JavaScript components done right. Its reactivity model is the same as that of JS whereas React's reactivity model is 'inverted'.
SolidJS has also received significant attention for its streamlined signals approach. Developers appreciate its smaller API surface and performance characteristics, though some note its ecosystem is still developing. The framework's design philosophy of being more of a library than a real framework resonates with developers seeking simplicity without sacrificing power.
Ecosystem Considerations
Beyond the technical aspects of reactivity systems, ecosystem maturity remains a crucial factor in framework selection. Svelte 5 users have reported challenges finding compatible libraries for common requirements like memory routers, data querying solutions, and specialized UI components. While these issues affect all newer frameworks to some degree, they present real-world obstacles for teams considering Svelte for production applications.
Vue 3's more established ecosystem and longer stability period make it attractive for developers who prioritize access to well-tested solutions and consistent patterns. As one commenter noted, Vue has been more stable for longer so it's easier to find dozens of examples of the thing you're trying to do with less argument over how to do it.
Community Response and Future Outlook
The community response to criticism of Svelte 5 has been mixed. Some defenders point to design decisions behind the limitations, suggesting they serve as guardrails for writing less bug-prone code. Others acknowledge that documentation and explanations could be improved to ease the developer experience.
For developers weighing their options, the choice between frameworks increasingly depends on specific project requirements and team preferences. While Svelte 5 introduces interesting concepts with runes, the implementation details have created friction for some users. Vue 3 continues to evolve with performance improvements like the upcoming alien-signals library integration, while SolidJS maintains its focus on simplicity and performance.
As web development continues to evolve, the conversation around reactivity models and developer experience will likely shape the next generation of frameworks. For now, developers have the luxury of choice between several capable approaches, each with their own philosophy on how to best manage state and reactivity in modern web applications.
Reference: Svelte5: A Less Favorable Vue3