SolidJS

SolidJS

React-like DX with fine-grained reactivity

Features

  • Fine-grained reactivity without virtual DOM
  • JSX with true reactive primitives (signals, memos, effects)
  • No re-renders — components run once
  • Tiny runtime (~7kb gzipped)
  • First-class TypeScript support

Pros

  • Top-tier runtime performance in benchmarks
  • Familiar JSX syntax for React developers
  • True reactivity — only the exact DOM nodes that need updating change

Cons

  • Small but growing ecosystem
  • Destructuring props breaks reactivity (common gotcha)
  • Limited job market compared to mainstream frameworks

Overview

SolidJS is a declarative JavaScript library for building user interfaces that combines the developer experience of React with fine-grained reactivity. Created by Ryan Carniato, Solid uses reactive primitives (signals, memos, and effects) to track dependencies and update only the exact DOM nodes that need to change, without a virtual DOM diffing step.

Unlike React, Solid components run only once during initialization. The JSX in Solid compiles to real DOM operations, and the reactive system handles all subsequent updates. This means there are no re-renders, no stale closure issues, and no need for memoization hooks — the framework handles granular updates automatically.

When to Use

SolidJS is the right choice when you need maximum runtime performance, when you’re comfortable with JSX but want true reactivity, or when building performance-critical applications where every millisecond counts. It’s also great for developers who want React-like ergonomics without React’s re-rendering model.

Getting Started

npx degit solidjs/templates/ts my-app
cd my-app && npm install && npm run dev
import { createSignal } from "solid-js";

function Counter() {
  const [count, setCount] = createSignal(0);
  return <button onClick={() => setCount(count() + 1)}>Count: {count()}</button>;
}