Which UI frameworks work best with agentic development? I put all of the major players to the test against 9 weighted criteria.
The Criteria
Type System and Build Tooling (15% each): Agents lean on these to avoid mistakes and move fast.
Locality (13%): How many files does the agent have to touch to implement a feature? The fewer, the better.
Explicitness (13%): How much magic is there between a trigger and what gets rendered? The less magic, the better.
Convention Strength (11%): How many valid ways are there to do the same task? The fewer, the better.
Familiarity (11%): Available training data estimated from framework age, community volume, GitHub activity, and registry trends.
Token Efficiency (10%): How much code does a small feature cost? Less is more.
Stability (7%): How often does "How to do it" change? The less, the better.
Ecosystem Tooling (5%): Are there dev tools, test utilities, MCP servers, and other supporting tools?
You can see the criteria, the methodology, and all of the raw data here:
https://github.com/sethlivingston/ui-frameworks
The Winners
Elm and Svelte are in a class by themselves. High scores across the board, especially in the heavily weighted criteria. Hurt only by familiarity.
Elm is a functional language that hasn't been released since 2019. So @sveltejs is the clear winner here.
The Top Tier
These frameworks are all near-winners with one asterisk.
Solid, Remix, SvelteKit, and Stencil are all mid-rewrite. They each have a downside that might be fixed in the rewrite, for example SvelteKit's filename-based routing scatters features across files. Those downsides combined with a lower stability keeps them out of the winner's circle.
Phoenix LiveView and Stencil are exceptional frameworks that are capped by their niche.
Astro and Vue are solid (ha!) across the board, but elite nowhere.
The Strong Somewhere, Weak Elsewhere Tier
React is ubiquitous. It's one of only two frameworks (keep reading) that got a perfect 10 in familiarity. It also has strong ecosystem tooling and stability.
But it didn't even make it to the top tier.
Hooks, classes, high order components, render props, and a dozen state management approaches sink it. Features get spread across multiple files. And re-render behavior is governed by magic instead of explicit data flow.
As a longtime React developer, I can confirm. It's exhausting, even when AI is writing the code.
Angular has elite typing and build tooling. But it gives it back with features spread out across files and too many ways to do the same thing.
Lit has the highest stability in this tier, but its weak conventions hold it back.
Qwik has excellent explicitness but poor familiarity. Plus it's in the middle of a rewrite.
Laravel Livewire is PHP's equivalent of Phoenix LiveView. It has high explicitness and locality, but the nature of PHP drags it down. The Laravel team deserves a lot of credit for adopting AI tooling early on with Laravel Boost.
Preact has nice scores that are dragged down by many of the problems that drag React down.
The Fatal Flaw Tier
HTMX, Alpine.js, and Vanilla Web Components are the minimalists. They all suffer from a near-total absence of typing and build tooling. Agents have nothing to lean on but familiarity. HTMX is also in the middle of a re-write.
Next.js (React) and Nuxt (Vue) add scatter, weak conventions, and instability to their already-weak underlying rendering libraries.
TanStack Start and SolidStart are too new and mid-churn.
The Bottom Tier
Vanilla JavaScript is in a class by itself. It has a perfect 10 in familiarity but suffers mightily in just about every other category.
What Do You Think?
Was the scoring fair? Did I miss a framework or technology? Let me know! And don't forget you can see the complete body of work at https://github.com/sethlivingston/ui-frameworks.
Photo by Ant Rozetsky on Unsplash