solidjs/solid

A declarative, efficient, and flexible JavaScript library for building user interfaces.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 42 minutes ago
Added to GitGenius on August 19th, 2023
Created on April 24th, 2018
Open Issues & Pull Requests: 24 (+0)
Number of forks: 1,093
Total Stargazers: 35,913 (+0)
Total Subscribers: 212 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 13.1 hours
Mean response time: 60.4 days
90th percentile: 71.1 days
Tracked items: 548

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 95% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "compilation" is answered fastest, typically in about an hour, while "unverified bug" waits about 3 months. Only 13% of issues opened in the past year have been closed. Three people close 87% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 22
New in 7 days: 22
Closed in 7 days: 27
Avg open age: 498 days
Stale 30+ days: 15
Stale 90+ days: 13

Recent activity

Opened in 7 days: 16
Closed in 7 days: 15
Comments in 7 days: 20
Events in 7 days: 50

Top labels

  • bug (218)
  • enhancement (140)
  • question (110)
  • typescript (83)
  • unverified bug (36)
  • wontfix (19)
  • alternative templating (13)
  • compilation (12)

Detailed Description

Solid is a declarative JavaScript library for building user interfaces that prioritizes performance through fine-grained reactivity rather than virtual DOM reconciliation. Written in TypeScript, it compiles JSX templates directly to real DOM nodes and updates them with surgical precision when state changes, ensuring that only code depending on modified state reruns. The library uses reactive primitives like createSignal to track dependencies automatically, allowing developers to declare state once and use it throughout their application with minimal rerendering overhead.

The core architectural approach treats components as regular JavaScript functions that execute once to set up the view, establishing what the documentation calls a render-once mental model. This contrasts with frameworks that rerender components on state changes. Solid achieves this through compile-time optimization of JSX and runtime dependency tracking, resulting in performance metrics that approach hand-optimized vanilla JavaScript according to the JS Framework Benchmark. The library is notably small and fully tree-shakable, with server-side rendering performance that matches its client-side efficiency.

Solid provides a comprehensive feature set for modern application development, including built-in state management through Context and Stores, eliminating the need for external state libraries in many cases. The framework supports Resources for server-loaded data, Suspense for asynchronous operations, concurrent rendering, streaming server-side rendering, progressive hydration, Error Boundaries, and custom element authoring. It integrates with established tooling like JSX, TypeScript, and the Vite ecosystem, while remaining unopinionated about code organization and encouraging patterns like declarative code and read-write segregation.

The repository shows active maintenance and community engagement.

Solid's design philosophy emphasizes pragmatism and productivity. Components are plain JavaScript functions with no hidden rendering rules, allowing developers to organize code freely and leverage native JavaScript libraries like D3 directly. The framework supports isomorphic rendering across client and server environments, with progressive hydration enabling faster time-to-interactive. The ecosystem is expanding with community-contributed primitives, component libraries like Kobalte, and build-time utilities that extend Solid's capabilities.

Browser support covers the last two years of modern browsers including Firefox, Safari, Chrome, and Edge on desktop and mobile, while explicitly excluding Internet Explorer. Server environments support Node LTS, Deno, and Cloudflare Workers. The project maintains an active Discord community where the creator and core team engage directly with users, and accepts donations through Open Collective to sustain development activities.