I haven't finished reading the article yet. I am a fan of Svelte, though, and have switched to using it by default for new projects - coming from a React background.
Typescript is not a language that is good for making basic comprehensive abstractions in.
JSX is not a language that is good for making basic comprehensive abstractions in.
It's still got some baggage left over from Javascript, to be sure. But the typing is genuinely very good, and more than sufficient for "basic comprehensive abstractions".
JSX is just Javascript with syntactic sugar for HTML. It's not really intended as a general-purpose language. TSX is a fine language, but I wouldn't use it for "basic comprehensive abstractions".
Like if you want to make a basic dashboard, things like alpine/htmx should make more sense to you and you should definitely go for it
But I have found that if you are writing ever so slightly complex code, you might be then forced to write js code (not sure about blazor but even that suffers a little in benchmarks but the fact that somebody can fully stop to never touch js sounds a bit intriguing even though it maybe slow but sure)
So when you are forced to use js to write complex software, frameworks especially frameworks like svelte / maybe solid could definitely help you out
Honestly, sveltekit is just html css js and some opinionated stuff and I kinda feel like that this might be the sane thing but maybe that's because I was there when svelte 3 was launched and I was 15 so svelte was something sooo interesting to me (still is! but golang is also love, man I know that svelte and go could be integrated and maybe I would), I never really went around learning pure js dom manipulation / ts / jsx if I am being honest so I am not that much of an expert
Also, I'm not a huge fan of synthetic benchmarks like in the article such as "render a static list of 25000 elements". This never happens in the real world, you would use some implementation of a virtual list instead.
And you know what? No matter the browser, no matter the OS it all worked and rendered the same.
Probably Adobe Flash was like that also.
First app we rewrote to AngularJS. You know what happened to it. So then we rewrote it to Vue.
The same effing app just to keep the stack “modern”.
I don’t know what is wrong with all these people.
God I wish something like Silverlight returned in a way that is mobile battery friendly.
Not exactly the same, but there is Blazor, it is using html instead of xaml. Also there are third party solutions (I have no experience with) like Uno and Avalonia, both are xaml-based.
> mobile battery friendly
Do you have some specific framework in mind that is not battery friendly? Probably anything is built on js/wasm isn't battery friendly.
See “Thoughts on Flash” by Steve Jobs
https://web.archive.org/web/20170615060422/https://www.apple...
—
As for Blazor, we ain’t fools to rewrite the RIA app the fourth time.
I just wish these “innovation” MF stopped reinventing the wheel.
The code from 2008 was perfectly fine and should have worked in 2025 if all these guys stopped making web frameworks like hot cakes. Some of us with an actual job have products that last more than a couple years (15+ in my case)
Like, here's the thing, sure it can create the code but LLM's stop so early in things like svelte atleast that's my opinion. I never really learnt react and didn't ever use react with any LLM
fun fact: Chatgpt 3 could write perfectly well sveltekit, that's how I "vibecoded" in the start
Like, sure I would copy paste but deep down I just felt like most of this is just plain html css js and nothing too much to worry about and that soothed me that sure this may be vibe coded but I was a real noob of svelte but the vibe coding was a bit of a successful :p
I have stopped it / atleast reminded myself 100 times to stop it because I want to feel even more confident with svelte and really learn it even more to the point that I can be 100% confident to write complex software in svelte myself and well only using AI for the boilerplate part or the tedious parts I am not sure, there is a lure to ask LLM's more and more and to depend on them more or maybe its just me I am not sure.
Angular has OnPush change detection strategy and can even be free of zone.js now, so this isn't necessarily true.
Where frameworks lack today, in my opinion, are in providing the right tools further optimize the UX of interacting with web sites. It's a constant struggle of loading spinners and flicker and loss of scroll positions.
The only framework I see that actually tries to resolve these very hard problems is React, through their work on new asynchronous primitives like startTransition. Yes, they are currently hard to understand how to properly use, but I so wish the discourse would be around how to best resolve these actual UX issues than who can create 50M divs the fastest.
As an addition to the general commentary here, "The Toilet Paper" is an unfortunate choice of label for this article, and maybe also indicative of the quality of the writing.
No framework will stand the test of time. I encourage everyone to, at the very least, own your state and router libraries, as you'll be able to extend them when you want to jump ship in a more incremental fashion. Going all in on a single framework's state, router, and view libraries will create a ton of inertia...
Would this make me a bad guy if I tried but couldn't find the link? oof. wait for sometime so that I see the list of my github stars because its hidden somewhere in there...
Edit: found it! https://github.com/outpoot/gurted
Here's a video as well which I found later through the github username and some yt searches later
Yes, any framework is fast enough. At this point, everybody probably knows already. Nobody would ever say React is not appropriate because it's slower than Svelte. No sane person would ever argue for a migration from React to Svelte based on this benchmark.
But being against the performance benchmark is such a weird take. It's so strange that many times there are hidden agendas.
Many times because a person advocates for X over Y at Company Z. Then, there's some random benchmark saying Y is faster. Now the person needs some way to cope. The best way is to refute the benchmark in some ways, but this would take a huge amount of time and effort. The second best way is to simply say "it doesn't matter. I hate this useless benchmark. There are more important problems to solve!"... as if everyone on the planet has to always solve the most important problem first ... only one problem and no more. Haha
Also isn't Preact meant to be a faster option if you really need performance?
Literally every other JS framework figured this out years and years ago and some over a decade ago. Compilers help to raise the floor for everyone so we don’t need to worry about making a dumb mistake and drastically slowing down our programs. Compilers are the evolution of software.
It's the primary reason virtual table libraries exist.
You can get away without using frontend frameworks for small and simple projects. However, for large and complex projects you will struggle. For example, try building Google Docs without a frontend library. You will struggle even if you have an army of developers at your disposal. In fact, with a larger team, a library/framework helps standardize things.
Except that Google Docs is not built with a framework. At least not a generic one and being generic is kind of the hallmark of framework.
Most software doesn't require large teams, ones with large enough structure to utilize cross-functional teams are siloed enough that it also still doesn't matter and the most standardization that's effectively useful is the company's specific UI library for their corporate branding.
At that point you're really using the company's library, and less of the underlying framework anyway. Uber, AAA, American Express, etc. All of them do basically this.
Small and simple projects like checks notes VSCode, Obsidian, Min (browser).
Long answer: https://2024.stateofjs.com/en-US/libraries/#tools_arrows
It shares a space with React and Vue in terms of positive opinions. Opinions are worse since v5 due to the perceived increase in complexity of using the Runes system.
It is the fourth most used JS framework behind React, Vue, and Angular.
Afterall, what is fun in webdev if not for creating factions and I am part of the lovely sveltelandia! Proud to be a member of it and I have full trust on the team.
Blazor is slow for other reasons. You can make wasm web frameworks fast (see leptos and dioxus). It can be as fast as vanilla js. Sledgehammer on this benchmark is wasm: https://krausest.github.io/js-framework-benchmark/2023/table...
I am probably just not smart enough to get it, but it reminds me of the constant seemingly pointless rewrites I see in companies. Figure out what works and keep it, is that so hard? Why can other languages do that. Is this just the nature of web dev?
I still prefer svelte but it's less mature and universally-known. React is still a pretty good choice if you need something that will more or less work and that anyone can write.
I know svelte/sveltekit and would want to contribute to svelte apps (a good reminder that I should)
But there are some projects that I really really want to contribute to / heck even port to sveltekit like cinny and hedgedoc and the likes and so I almost feel pressured by the system to learn react so that I can finally feel confident enough to understand their repositories as they scare me right now...
Cinny:https://github.com/cinnyapp/cinny Hedgedoc:https://github.com/hedgedoc/hedgedoc
Isn't it mainly about playing nice with crawlers? SEO and the like?
(that was my understanding but I'm a backend dev).
Honestly except for the marketing page and blogs and stuff, most apps are fine without server rendering. In fact I'd say many that avoid server rendering actually feel better simply because next.js makes it really easy to screw up your performance doing it.
Lots of newcomers are struggling and not understanding what are the options and which approach is best for their case.
Business people don’t help as they rightfully don’t care. But they want „do everything” - „pay once” approach so people bolt on static pages ona apps or other way around.
Example: This logistics SPA I was building I realized could just be single pages with some data for most of the stuff (tracking, inventory, etc...) but for admins they wanted a whole dashboard. This was a conditional on some value of the stored session user. So it ended up being kinda a website for parts of it and an SPA admin panel if the user conditionally matched some privileges. Probably should have been separate stacks but they used the same data so early on they made it the same Next app.
I don't think the whole website vs app thing is always as simple as static blog pages vs full fledged JS-heavy app. There is a spectrum and overlap even within a single "application" because of various requirements.
That being said, I'm waiting in the back stage, like many other folks, for tanstack to get production-ready, because of the all the weird crap being pulled by Vercel on NextJS.
What are the reasons for not doing SSR?
EDIT: if its pure (not reactive to any other variable but other variables may react to it) they will auto memoize I guess to avoid their own reactivity engine doing a bunch of useless shit when no value was actually updated. Correct me here if I am wrong.
You have to opt-in to prop-diffing conditional re-renders (which I wouldn't call a "reactivity engine" either) per component, via React.memo.
And then you also have to opt-in to prop memoization for non-primitives for the prop-diffing not to be useless.
These re-renders might not result in any actual DOM changes since there is an additional vDOM diffing step from the resulting render (which, again, I wouldn't call a "reactivity engine").
I’ve also used Next for new projects in the last year - it just depends on the infra requirements.
Vercel’s position in the ecosystem is one we should question. Maybe it’s not good for innovation to use Next for every new project. The recent controversy with their CEO isn’t helping the situation either.
That idea actually turned out to work well so others adopted it. Meanwhile in the web ecosystem elm is basically no more and react has changed enough that it's barely recognizable anymore.
People are looking for a satisfying non-leaky abstraction to build upon and they don't find it with web technologies. They get close, but those last few pieces never quite fit, and we lack the power to reshape the pieces, so we tear out all the pieces and try again. Maybe this next time we'll find a better way to fit them together.
Of course I hear plenty of people complaining that apps on top of hypertext is a fundamental mistake and so we can't expect it to ever really work, but the way you put it really made it click for me. The problem isn't that we haven't solved the puzzle, it's that the pieces don't actually fit together. Thank you.
You have a point but you're giving Svelte unfair criticism here.
Well, short answer is that it's been in the "figure out what works" phase for many years now. The developer experience has improved a lot over the years, but it's at the expense of constant breaking changes and dependency hell if you want to upgrade existing code.
Vue 3.4 (2023) rewrote their template rendering engine to be 2x as fast as well.
They don’t really understand that software isn’t about “my framework can render 1000 elements 500ms faster” but rather my organization of hundreds or thousands of front end engineers (mix of employees and contractors both of whom usually don’t give a fuck) across the WORLD need to be able to work together on a significant product and ship constantly without breaking things.
And customers don’t give a fuck otherwise they wouldn’t be paying six figures or more for literally shit software.
That said I have tried it a couple times over the years. Not sure I like the latest direction they’ve gone though.
if they had stayed on their origin basis of making web apps fast with interop n ease of use the you wouldn't have the rune nonsense.
(2022 paper https://helda.helsinki.fi/server/api/core/bitstreams/a301a02...)
I wasn't (and still am not) the biggest fan of the new Runes syntax, but I've gotten used to it, and it doesn't really hurt my productivity or get in my way that much.
There's definitely an ecosystem gap compared to React, but there are still lots of really good components and frameworks out there. For example, there's a native Svelte version of IBM's Carbon Design[1] which I've used and found to be very high-quality.
And as for arguments that React will keep winning due to LLMs not having enough corpus to learn less-popular frameworks, I've anecdotally had good success with using LLMs to edit and generate Svelte code. There are occasionally some issues (like it generating pre-runes syntax or using deprecated stuff like stores) but it works well enough to be useful, and definitely better than I expected.
Making my LLM aware of these documents significantly mitigated issues I had with adopting Svelte 5 syntax.
(I say this speaking from a NixOS laptop; Nix operations are invariably much faster than alternatives, like Docker, assuming you have the technical chops to get them to work)
Also the article is commenting on this other article from 2022 which is severely outdated by now.
https://journals.riverpublishers.com/index.php/JWE/article/v...
Also no Solid.js?
Is this AI?
Fun fact just asked chatgpt, and even chatgpt says that blazor is not js framework, so the fact that author did say makes it prove that it was just a mistake and not some AI thing but you can't always be sure of these things
It said to my question, is blazor a js framework?
Good question — no, Blazor is not a JavaScript framework.
Here’s a clear breakdown
What Blazor Actually Is
Blazor is a .NET-based web framework created by Microsoft that lets you build client-side and server-side web apps using C# and Razor, instead of JavaScript.
It runs on top of .NET runtime — not on a JavaScript engine like React, Angular, or Vue do.
Pasting the link to it here https://chatgpt.com/c/68e6d1ed-9030-8322-82fa-84267f8d20c5
Offtopic but why is my chatgpt being so sycophantic, I thought that they had reverted out the update which was causing the sycophancy but I am tired of this dumb LLM praising me, I am starting to dread the first sentence of chatgpt because of it saying good point or anything bruh.
> This requires the framework to track which components are dirty. Vue does this at runtime, Svelte handles it at compile time.
How can it possibly track this at compile time? Best I could see if tracking where those bits could be set, but not actually setting them.
I am deeply, deeply disappointed in the field. It simultaneously has an extremely high rate of churn and an extremely low rate of actual innovation.
After observing the discipline for nearly two decades, I am concluding that almost all the "progress" really starts to look like we're just rearranging the furniture endlessly without substantive improvements in developer velocity or end user experience.
Any given "progress" looks reasonable for a moment but is ultimately circular. We've been playing rock/paper/scissors with "better" techniques for a long time now.
But given that there has not actually been progress either, my guess is that this is a temporary situation.
Either way, Svelte is one of those things that promise some real progress. Not one of the things that have the same amount of problems, but in a different configuration.
I personally like React with just React Router 7 in framework mode (Remix). So simple, so intuitive, just works, paper thing abstractions over stuff everyone already knows how to do. (Next.js OTOH I do not love)
React is where industry mind share and energy is today, regardless of developer opinions
The web is supposed to be made by tinkerers and hobbyists.
timeon•1h ago
Obligatory: sad state of web where React is so popular.
brazukadev•1h ago