I use svelte a lot, because react's rules and such tend to drive me nuts.<p>It's not that i can't get used to them, it's that i just don't want to have to deal with them when they exist mainly because it made it easier to implement, not easier to use. It just gets the balance wrong for me. To each their own. I've met people who love them.<p>Some of these arguments resonate, some don't.<p>In the case of Svelte 5, it is (unfortunately) easier to understand if you look at the post-compiled code. Which often makes it totally obvious what is going on and what works or doesn't. Which is not great. It also often issues error messages that remind me of C++ 20 years ago in their unhelpfulness, before a <i>lot of time</i> was spent making the error message better. For example, I walked the tanstack folks through an example of generated code, because totally reasonable and smart people have trouble wrapping their head around what happens under the covers and what the error messages mean:
<a href="https://github.com/TanStack/table/pull/5943">https://github.com/TanStack/table/pull/5943</a><p>IMHO, trying to teach people this level of idiosyncrasy is a bit silly, and regardless of theoretical benefit, seems unlikely to work long term. It feels like there is not enough compiler help here to make it feel really magical, though at a glance it looks like their good be. I hope they adjust this.<p>I also agree the community is frustrating to deal with a not insignificant amount of time. There are lots of good people, mind you, but also lots of "you are holding it wrong", etc. I reported what is a blazingly clear bug (once you know it exists):<p>Svelte5 ships two incompatible Snippet types because of the use of unique symbols for SnippetReturn. Different unique symbols are never compatible in TS.<p>So these two SnippetReturn types (which are then used in the Snippet type in each file):<p><pre><code> rg "SnippetReturn.*unique symbol"
types/index.d.ts
268: const SnippetReturn: unique symbol;
src/index.d.ts
271:declare const SnippetReturn: unique symbol
</code></pre>
are incompatible.<p>The error message you get if you trigger this is .. hilarious and hurts your brain (the two syntax highlighted types in this picture that look 100% identical are not compatible, one is from types/index.d.ts, one is from src/index.d.ts) -
<a href="http://tiny.cc/wnkc001" rel="nofollow">http://tiny.cc/wnkc001</a><p>I also reported a bug to the typescript folks about the error message.<p>The difference in how the triagers handled it were night and day.
Amusingly, the svelte side has a bog simple and obvious fix - share the (typeof'd) unique symbol type between the two files so there are not two unique symbols. 5-10 line fix, at most. You just have to decide how much to share (IE just SnippetReturn or the whole Snippet type, or what).
In the vast majority of projects i work on, someone would look at this, go "oh shit yeah we fucked that up whoops", fix it with the 10 line fix, and move on. There is absolutely zero reason or advantage to have the code like this. It is an obvious bug, it should be fixed, it's not worth a lot of time. But after many messages, I actually gave up on the svelte bug. To be fair i clearly got frustrated but man not a great experience ....<p>Compare to typescript - the typescript side requires work to issue a good error message here, and more thought.<p>Yet I'm in the midst of finishing a changelist on the typescript side to improve the compiler error message, because the experience dealing with the community was so much better.<p>Plenty of people I talk with have some story like this with Svelte :(<p>I will say, some of the other complaints here seem weird.
SVAR grid works fine for tables. It supports variable heights and widths for columns.
Maybe they specifically want unstyled tables? I dunno.<p>The usual ui complaint for svelte is not grid, but good tree components.
They also pick a few things they admit are not unique to svelte, and exist in other popular frameworks. Seems like a weird shot<p>Also, complaining about file naming and "unpleasant code infection" is also weird.<p>The other arguments seem much stronger - the lawyer in me wants to yell "put your arguments in order of strength, and remove the weakest ones. Quality wins over volume, and most people are not going to read the whole thing". If i'm really trying to make an effective argument, i make short ones, not long ones. On HN i'll do longform because i don't care enough most of the time to spend the time editing to make it effective. But if i was really trying to be convincing i would make much shorter ones.<p>In any case, i think some of this is reasonable. But having spent lots of time with frameworks, i'll keep using Svelte5, but I do hope things improve. I feel like i'd spend the same amount of time with other idiosyncrasies if i moved to Solid.