On the plus side, maybe this means the endless churn of JS libraries will finally slow down and as someone who isn’t a JS developer but occasionally needs to dip their toe into the ecosystem, I can actually get stuff done without having to worry about 6-month old tutorials being wrong and getting caught in endless upgrade hell.
The argument here is that React has permanently won because LLMs are so heavily trained on it and default to it in their answers.
I don't buy this. The big problem with React is that the compilation step is almost required - and that compilation step is a significant and growing piece of friction.
Compilation and bundling made a lot more sense before browsers got ES modules and HTTP/2. Today you can get a long way without a bundler... and in a world where LLMs are generating code that's actually a more productive way to work.
Telling any LLM "use Vanilla JS" is enough to break them out of the React cycle, and the resulting code works well and, crucially, doesn't require a round-trip through some node.js build mechanism just to start using it.
Call me a wild-eyed optimist, but I'm hoping LLMs can help us break free of React and go back to building things in a simpler way. The problems React solve are mostly around helping developers write less code and avoid having to implement their own annoying state-syncing routines. LLMs can spit out those routines in a split-second.
I don't buy it either. The reality is that the people who do hiring don't understand the problems they are working on and which tech stack is appropriate. They might not understand or even like React, but they are going to pick it because they know that they can hire other people who understand it. We will end up with lots of projects in 5-10 years where people will ask "why the hell did you use React for this?" ....actually thats the reality now!
I think that while it may be easier to develop with LLMs in languages and frameworks the LLM may “know” best, in theory, models could be trained to code well in any language and could even promote languages that either the sponsoring company or LLM “prefers”.
I don't buy it either. I've been building my own backend framework for the past 2.5 years, and even though it's a DSL over Python and there's no documentation online and barely one in my computer, Claude Code understands it with enough usage examples in my codebase.
In front-end as well—I've been able to go much farther for simple projects using alpine than more complex frameworks. For big products I use Elm, which isn't exactly the most common front-end choice but it provides a declarative programming style that forces the LLM to write more correct code faster.
In general, I think introspectible frameworks have a better case, and whether they're present in training data or not becomes more irrelevant as the introspectibility increases. Wiring the Elm compiler to a post-write hook means I basically have not written front-end code in 4 or 5 months. Using web standards and micro frameworks with no build step means the LLM can inspect the behaviour using the chrome dev tools MCP and check its work much more effectively than having to deal with the React loop. The ecosystem is so fragmented there, I'm not sure about the "quality because of quantity of training data" argument.
I feel like there could be a loophole here for the new-framework-author. Stick to using JSX for the view; JSX is just syntax sugar for built in react functions for constructing a tree, which can be easily swappable with your own implementation. I recall years ago using a babel plugin that just emitted static HTML from JSX. I know Vue.js v2 also had JSX support that way.
I think LLMs, despite already being trained massively on React, can easily adapt their output to suit a new framework's-specific API surface with a simple adjustment to the prompt. Maybe include an abbreviated list of type/function signatures that are specific to your new framework and just tell the LLM to use JSX for the views?
What I think will definitely be a challenge for new library authors in the age of LLMs is state management. There are already tons of libraries that basically achieve the same thing but have vastly different APIs. In this case, new lib-authors may be forced to just write pluggable re-implementations of existing libraries just to enable LLMs to emit compilable/runnable code. Though I dont know of any state management library that dominates the web like React does with the view layer.
I'm not really sure why this focuses so much on React, when it's a general "issue"/"feature"
More broadly, obviously there is some pressure to use a framework/library/programminglang/editor that has better LLM training. But even before LLMs.. you'd want to choose the one that has more SO questions, more blog posts and books published about it. The one where you can hire experienced programmers.
New players has a certain activation energy they need to overcome - which is probably good. B/c it slows down the churn of new shiny with incrementally improvements. I think a paradigm shift is sufficient though. Programmers like new shiny things - especially the good ones that are passionate about their craft
Thanks god. The days people kept inventing new JS frameworks or even dialects (coffeescript, remember?) every three months couldn't be gone fast enough.
I embraced this when I had the same realisation that React will get reinforced the most, and vibe-coded something in it.
I had to ditch the whole thing and rewrite it in Vue when it got big enough that I couldn’t debug it without learning React.
Vibe-coding something in a stack you know or want to know means you can get off your high horse and peek into the engine.
I still agree with the sentiment that React is winning; if the competition of volume. But other frameworks won’t stop existing unless you believe that people exclusively choose what is dominant. But there will always be artisans, even after all old people who learned the alternatives were flushed out.
LLMs are great at HTMX and Python. Both Claude Code and Codex do well at it so I’m fine with things like that. React is fine but HTMX does well. I also frequently used to copy Claude’s generated React things into ChatGPT and ask it to rewrite them in Vanilla JS and it would work but that was a year ago when artifacts were just being launched.
You could always write some code in a different framework and help spread around other types of reusable template frameworks. Like in XSLT for example...oh wait... that's been killed off too.
If this gets me out of the "This framework that almost everyone uses and is easy to hire for and that works well for a lot of people is literally unusable compared to this new hot framework I fell in love with recently! We need to rebuild everything!"-discussion, I'm fine with it
I try to filter out such people in hiring nowadays but sometimes you miss, or come into an existing team with these issues
I don't buy it, I've used LLMs (well, mostly sonnet 4.5 and sometimes gpt5) in a variety of front-end frameworks (react, vue, htmx) and they do just fine. As usual, requires a lot of handholding and care to get good results, but I've found this is true for react codebases just as much as anything else.
A blog named "AI Focus" is of course going to push LLMs and vibe coding. But here in the real world, people can still code without LLMs, or use them with a human in control, where the LLM can look at existing code written in a framework that is not React.
Also, React was extremely popular before any LLMs were out there. I would not ascribe much of the growth to vibe coding.
As LLMs improve, it matters less what they are trained on and more what they understand. I've used codex on some very obscure code bases and frameworks. It's fine. It understands them. It broadly does the right things. It can understand from examples in your code how to use things. To give you one example, I'm using an obscure framework called fritz2 with kotlin-js. Kotlin-js is not that widely used. And I'm probably one of a handful of active users of this Fritz2 framework in the world. There isn't a whole lot of code to train on. And what little there is is probably a bit outdated.
It's fine. I've been using codex on some code bases with this with pretty alright results. I also use codex to generate typescript/react code. I'm getting similar results. I had a little wow moment when I asked it to add some buttons and then afterwards realized that it had figured out the localization framework (one of my creations) and added translations for the button labels. All unprompted. It clearly understood the code base and how I like things done. So it just went ahead and did them. The syntax is not a problem. The obscurity of the library is not a problem as long as you give it enough to work with. It does less well coding something from scratch than working on existing code.
IMHO, things like react are optimized for humans. They aren't actually that optimal for LLMs to work with. It's actually impressive that they can. Too much expressiveness and ambiguity. LLMs like things spelled out. Humans don't. We're still doing things manually so it helps if we can read and edit what the LLMs do. But that won't stay like that.
I think in a few years, we'll start seeing languages and frameworks that are more optimal for Agentic coding tools as they will be the main users. So, stronger typing. More verbosity and less ambiguity.
A built in feature with frameworks is that you constantly have to update your code to be in sync with the latest version of the framework, this create work for contractors, it's like a taxation of software.
The last time we updated react we had to do it because we were using a version so old it had been unsupported for several years. While also using modern components and libraries.
I noticed something similar. Even non technical clients now come with technical requirements because they use chatgpt, and it's always a react app.
Poking client reqs is such a high value skill, most freelancers will just build what the client asks, "ok here's a react frontend with a postgres db and a crud app for your ecommerce website" instead of asking what the functional requirements are, maybe it can be a shopify thing, or just post it on amazon, or maybe a plain html app (optionally with js)
It can be valid to ask for a brick house if you know what the other ways to build a house are, but if you just asked chatgpt for a house plan and it said "bricks", because it's the most housey thing and you said ok because it rings a bell and sounds housey, having a dev that asks and tells you about wooden houses or steel beams or concrete is the best that can happen.
I appreciate when it happens the other way around, I go to a lawyer and tell them I want a corp, they start off assuming I know my shit, and after 5 minutes we are like, oh I don't want a corp
38 comments
[ 4.0 ms ] story [ 61.4 ms ] threadI don't buy this. The big problem with React is that the compilation step is almost required - and that compilation step is a significant and growing piece of friction.
Compilation and bundling made a lot more sense before browsers got ES modules and HTTP/2. Today you can get a long way without a bundler... and in a world where LLMs are generating code that's actually a more productive way to work.
Telling any LLM "use Vanilla JS" is enough to break them out of the React cycle, and the resulting code works well and, crucially, doesn't require a round-trip through some node.js build mechanism just to start using it.
Call me a wild-eyed optimist, but I'm hoping LLMs can help us break free of React and go back to building things in a simpler way. The problems React solve are mostly around helping developers write less code and avoid having to implement their own annoying state-syncing routines. LLMs can spit out those routines in a split-second.
I think that while it may be easier to develop with LLMs in languages and frameworks the LLM may “know” best, in theory, models could be trained to code well in any language and could even promote languages that either the sponsoring company or LLM “prefers”.
In front-end as well—I've been able to go much farther for simple projects using alpine than more complex frameworks. For big products I use Elm, which isn't exactly the most common front-end choice but it provides a declarative programming style that forces the LLM to write more correct code faster.
In general, I think introspectible frameworks have a better case, and whether they're present in training data or not becomes more irrelevant as the introspectibility increases. Wiring the Elm compiler to a post-write hook means I basically have not written front-end code in 4 or 5 months. Using web standards and micro frameworks with no build step means the LLM can inspect the behaviour using the chrome dev tools MCP and check its work much more effectively than having to deal with the React loop. The ecosystem is so fragmented there, I'm not sure about the "quality because of quantity of training data" argument.
And LLMs can create idiomatic CRUD pages using it. I just needed to include one example in AGENTS.md
I think LLMs, despite already being trained massively on React, can easily adapt their output to suit a new framework's-specific API surface with a simple adjustment to the prompt. Maybe include an abbreviated list of type/function signatures that are specific to your new framework and just tell the LLM to use JSX for the views?
What I think will definitely be a challenge for new library authors in the age of LLMs is state management. There are already tons of libraries that basically achieve the same thing but have vastly different APIs. In this case, new lib-authors may be forced to just write pluggable re-implementations of existing libraries just to enable LLMs to emit compilable/runnable code. Though I dont know of any state management library that dominates the web like React does with the view layer.
More broadly, obviously there is some pressure to use a framework/library/programminglang/editor that has better LLM training. But even before LLMs.. you'd want to choose the one that has more SO questions, more blog posts and books published about it. The one where you can hire experienced programmers.
New players has a certain activation energy they need to overcome - which is probably good. B/c it slows down the churn of new shiny with incrementally improvements. I think a paradigm shift is sufficient though. Programmers like new shiny things - especially the good ones that are passionate about their craft
I absolutely wouldn't be swapping because the output 'isn't good enough'.
I had to ditch the whole thing and rewrite it in Vue when it got big enough that I couldn’t debug it without learning React.
Vibe-coding something in a stack you know or want to know means you can get off your high horse and peek into the engine.
I still agree with the sentiment that React is winning; if the competition of volume. But other frameworks won’t stop existing unless you believe that people exclusively choose what is dominant. But there will always be artisans, even after all old people who learned the alternatives were flushed out.
I try to filter out such people in hiring nowadays but sometimes you miss, or come into an existing team with these issues
Should have made graphs testing LLMs with different frameworks.
Also, React was extremely popular before any LLMs were out there. I would not ascribe much of the growth to vibe coding.
It's fine. I've been using codex on some code bases with this with pretty alright results. I also use codex to generate typescript/react code. I'm getting similar results. I had a little wow moment when I asked it to add some buttons and then afterwards realized that it had figured out the localization framework (one of my creations) and added translations for the button labels. All unprompted. It clearly understood the code base and how I like things done. So it just went ahead and did them. The syntax is not a problem. The obscurity of the library is not a problem as long as you give it enough to work with. It does less well coding something from scratch than working on existing code.
IMHO, things like react are optimized for humans. They aren't actually that optimal for LLMs to work with. It's actually impressive that they can. Too much expressiveness and ambiguity. LLMs like things spelled out. Humans don't. We're still doing things manually so it helps if we can read and edit what the LLMs do. But that won't stay like that.
I think in a few years, we'll start seeing languages and frameworks that are more optimal for Agentic coding tools as they will be the main users. So, stronger typing. More verbosity and less ambiguity.
In the meantime real engineers still use the proper tools.
This too shall pass.
Poking client reqs is such a high value skill, most freelancers will just build what the client asks, "ok here's a react frontend with a postgres db and a crud app for your ecommerce website" instead of asking what the functional requirements are, maybe it can be a shopify thing, or just post it on amazon, or maybe a plain html app (optionally with js)
It can be valid to ask for a brick house if you know what the other ways to build a house are, but if you just asked chatgpt for a house plan and it said "bricks", because it's the most housey thing and you said ok because it rings a bell and sounds housey, having a dev that asks and tells you about wooden houses or steel beams or concrete is the best that can happen.
I appreciate when it happens the other way around, I go to a lawyer and tell them I want a corp, they start off assuming I know my shit, and after 5 minutes we are like, oh I don't want a corp