Let's cut through the hype for a minute. Every year, the JavaScript ecosystem births a new "React killer," and most of them fade into obscurity before you can finish reading the README. Solid.js isn't one of those. It's been quietly gaining momentum, and in 2024–2025, that momentum turned into a genuine tidal wave. Here's why — and why you should still think twice before rewriting your production app.
5 reasons Solid.js is winning
1. Reactivity without the virtual DOM tax
This is the big one. React popularized the virtual DOM as a way to abstract away direct DOM manipulation, but it introduced a reconciliation step that costs real performance. Solid compiles your components into fine-grained reactive updates that touch only the exact DOM nodes that need to change. No diffing. No reconciliation. No wasted cycles.
The result? Solid consistently sits at or near the top of the JS Framework Benchmark. We're not talking marginal gains — in complex UIs with thousands of reactive nodes, Solid can be an order of magnitude faster than React in raw update throughput. For applications where responsiveness is non-negotiable — think real-time dashboards, trading platforms, collaborative editors — this isn't academic. It's the difference between a smooth experience and a janky one.
2. Primitives that actually make sense
Solid's API surface is small and razor-sharp. You get three core primitives:
-
createSignal— reactive state -
createEffect— side effects that auto-track dependencies -
createMemo— derived computations with caching
That's fundamentally it. Compare this to React's ever-growing hook taxonomy: useState, useEffect, useMemo, useCallback, useRef, useReducer, useTransition, useDeferredValue, useOptimistic... and the subtle footguns buried in each one. How many production bugs have you traced back to a missing dependency in a useEffect array? Be honest.
Solid's dependency tracking is automatic. You access a signal inside an effect, and the effect subscribes. You stop accessing it, and the subscription is cleaned up. No dependency arrays. No stale closures. No exhaustive-deps lint rule arguing with your intent.
3. JSX without the compromises
Here's what trips people up initially: Solid uses JSX, but it doesn't re-run your component functions on every state change. Your component function runs once. That's it. The JSX you write is compiled into real DOM creation code, and the reactive system handles updates from there.
This eliminates entire categories of React pitfalls. You don't need to worry about:
- Unnecessary re-renders cascading through your component tree
- Wrapping callbacks in
useCallbackto stabilize references - Memoizing components with
React.memoto prevent render waste - The rules of hooks and their ordering constraints
You write what looks like familiar JSX, but the execution model is fundamentally more predictable. Components are setup functions, not render functions that get called over and over.
4. SolidStart is becoming a legit full-stack framework
Solid's meta-framework, SolidStart, has matured significantly. Built on top of Vinxi and Nitro, it gives you:
- File-based routing
- Server functions and API routes
- SSR, SSG, and streaming out of the box
- Nested layouts and error boundaries
- Built-in support for progressive enhancement
It's drawing clear inspiration from what made Next.js and Remix successful, but with Solid's performance characteristics baked into the foundation. Server functions in SolidStart feel natural — you mark a function with "use server" and call it from your components. Data loading is handled with route-level primitives that integrate with Solid's reactivity.
Is it as battle-tested as Next.js? No. But the trajectory is steep, and the developer experience is genuinely excellent.
5. The bundle size story is unbeatable
Solid's runtime is roughly 7KB gzipped. React + ReactDOM clocks in around 42KB gzipped. When you add a state management library, a memoization helper, and whatever else you bolt on to compensate for React's re-render model, the gap widens further.
But bundle size alone doesn't tell the full story. Because Solid compiles components into direct DOM instructions, the generated code is lean. There's no framework abstraction layer sitting between your logic and the browser at runtime. For performance-sensitive contexts — mobile web, emerging markets with slower connections, embedded webviews — this overhead reduction is meaningful.
Paired with tree-shaking and dead code elimination, Solid apps tend to ship dramatically less JavaScript than their React equivalents for comparable functionality.
The honest counterpoint: why switching might not be smart
I'd be doing you a disservice if I didn't lay out the other side. Frameworks aren't just about technical merit — they exist within ecosystems, team dynamics, and business constraints.
The ecosystem gap is real
React's ecosystem is staggeringly large. Need a date picker? There are twelve battle-tested options. Need an accessible modal? Radix, Headless UI, Reach UI — pick your flavor. Need a complex data table? AG Grid, TanStack Table, and a dozen others have first-class React support.
Solid's ecosystem is growing, but it's not there yet. You'll find yourself building components from scratch that you'd install as a package in React. For small teams shipping under tight deadlines, that cost adds up fast. Some libraries like TanStack Query have started offering Solid adapters, which is encouraging, but coverage is still spotty.
Hiring and onboarding friction
Try posting a job listing requiring Solid.js experience. Your candidate pool shrinks dramatically. React developers are everywhere — bootcamps teach it, university programs cover it, and most frontend engineers have at least working familiarity with it.
Solid's JSX-but-not-React model also creates a subtle onboarding trap. New team members who come from React will assume things work the way React works, and they'll write bugs because of it. Destructuring props breaks reactivity. Conditionals need <Show> or ternaries that preserve signal access. These aren't hard concepts, but they require unlearning habits, which takes time and introduces risk.
Community size and long-term support
React is backed by Meta. Angular is backed by Google. Vue has a massive and well-funded open source organization. Solid is primarily driven by Ryan Carniato and a dedicated but comparatively small core team.
Ryan is brilliant, and the community is passionate — but if you're a CTO evaluating framework choices for a product you expect to maintain for the next decade, the bus factor matters. The project's sustainability model, corporate sponsorship picture, and contributor depth are all things worth examining before going all-in.
Mature patterns for complex state management are still evolving
Solid's primitives are elegant for local and moderately complex state. But if your application has deeply interconnected global state — think a complex form builder, a CAD tool, or a multiplayer editing system — you'll find fewer established patterns and libraries compared to what exists in the React world (Redux, Zustand, Jotai, XState integrations, etc.).
Solid stores exist and work well, but the collective wisdom on structuring large-scale state in Solid apps is still being written. You'll be a pioneer, which is exciting if you have the appetite for it and risky if you don't.
Migration cost from an existing React codebase
If you have a large React application in production, the migration path isn't incremental. You can't embed Solid components inside a React app the way you might incrementally adopt React inside a legacy jQuery codebase. It's a rewrite, or at minimum a significant rearchitecture at the page/route level.
Rewrites are dangerous. They carry enormous risk, burn team morale, and often take twice as long as estimated. Unless your current stack is actively holding you back in measurable ways — performance bottlenecks you've profiled, developer velocity problems you've quantified — the switching cost rarely justifies the theoretical gains.
So, should you switch?
Here's my take after building with both extensively:
Start new projects with Solid if your team is open to learning and you value performance and developer experience. The framework rewards you with code that's easier to reason about and apps that fly.
Don't rewrite existing React apps unless you have a concrete, measurable reason. "Solid is faster" isn't enough. "Our dashboard drops to 15fps on realistic datasets, and we've exhausted React optimization strategies" is.
Experiment aggressively. Build a side project. Port a small internal tool. Get your hands dirty with signals and effects. Even if you stay in React-land, understanding Solid's reactivity model will make you a sharper engineer — and you'll immediately see why the React team is scrambling to ship their own compiler.
Solid.js is winning because it made fundamentally better technical choices at the core layer, and the rest of the developer experience has caught up. Whether it wins your particular game depends on factors that no benchmark can measure.
Top comments (0)