
Solid
A JavaScript library for building user interfaces that updates only the parts of the page that change.
- Stars
- 36.2k
- Forks
- 1.1k
- Licence
- MIT
- Language
- TypeScript
- Last update
- 4 days ago
- Type
- Library
What it is
Solid is a JavaScript library for building user interfaces. Instead of using a Virtual DOM, it compiles templates into real DOM nodes and updates just the pieces that depend on changed state. Developers use it to build interactive web apps that can also be rendered on the server.
- Build a client-rendered single-page app using the official JS or TypeScript starter template
- Create reactive state with createSignal and derive values from it
- Manage global state with built-in Context and Stores instead of a third-party library
- Load server data with Resources and show loading states with Suspense
- Render on the server with streaming SSR and progressive hydration
Great for
- Developers who want fine-grained control over what re-renders in a web UI
- Developers already comfortable with JSX and TypeScript
- Teams building client-rendered single-page apps or server-rendered apps
- People who want to inspect rendered output directly with browser devtools
Not ideal for
- Complete beginners with no JavaScript background, since the README assumes familiarity with components and state
- Projects that require a specific ecosystem of ready-made component libraries, since the README does not describe its ecosystem size
- Anyone who needs a framework with a large, established track record of production use, as the README does not discuss adoption beyond its own benchmarks
How to get it
- 1
Install with a package manager
You'll need: Node.js (version not specified in README) · npm, yarn, or pnpm
Create a new JavaScript app from the starter template
npx degit solidjs/templates/js my-appCreate a new TypeScript app from the starter template
npx degit solidjs/templates/ts my-appInstall the library in an existing project
npm i solid-js - 2
Run it
- Run npx degit solidjs/templates/js my-app (or the ts template) to create a project folder
- Change into the folder with cd my-app and install dependencies with npm i
- Start the development server with npm run dev
- Open the local address shown in the terminal to see the minimal client-rendered app
- 3
Get the most out of it
- Use the online playground to try the counter example without installing anything
- Read the interactive features tutorial linked in the README for a guided walkthrough
- Use the babel-preset-solid configuration to add JSX support to an existing build setup
- Configure tsconfig with jsx set to preserve and jsxImportSource set to solid-js for TypeScript projects
- Explore the solid-element package if you want to author custom web components
Downloads
Strengths
- Updates only the code that depends on changed state, avoiding whole-component re-renders
- Built-in primitives for state, context, stores, and async data reduce the need for extra libraries
- Renders to real DOM nodes, so standard browser devtools work for inspection
Trade-offs
- The README describes concepts like fine-grained reactivity that take time to learn compared with simpler templating
- Setup for JSX outside the starter templates requires configuring Babel or TypeScript, per the README
- Performance claims rely on the README's links to external benchmarks rather than independent analysis here
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| solid (this) | 36.2k | Library | intermediate | 4 days ago | Developers who want fine-grained control over what re-renders in a web UI |
| react | 252k | Library | intermediate | 5 days ago | Developers building interactive web interfaces with JavaScript |
| vue | 212k | Library | intermediate | 2.1 years ago | Maintaining an existing Vue 2 application that cannot yet be upgraded |
| svelte | 88.5k | Library | intermediate | 4 days ago | Developers who want to build interactive websites with less boilerplate |
| preact | 39k | Library | intermediate | 4 days ago | Web developers who already know React and want a lighter library |
| mitosis | 14.5k | Dev tool | intermediate | 8 days ago | Teams maintaining the same UI components across more than one framework |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.