CodeVetter
← All unpacks
CodeVetter · Repo Unpack evidence

solidjs/solid

Scanned commit b25c557754 dated 2026-09-04 — last upstream commit. Generated by codevetter 1.15.0 on 2026-10-02.

github.com/solidjs/solid ↗ · 183 files · 861 KB

Website • API Docs • Features Tutorial • Playground • Discord Solid is a declarative JavaScript library for creating user interfaces.

Deep analysis by cli:codex via the codex CLI on 2026-10-02 (537s) — every claim below links to its cited source files. Source inspection; upstream code and tests were not executed.

Overview

Solid is a TypeScript and JavaScript UI library for application developers, combining reactive signals with compiled templates that update real DOM nodes. This repository contains the reactive runtime, browser and server component implementations, structured stores, a Babel preset, custom-element integration, and static-rendering utilities. Its distinctive architecture separates dependency tracking from rendering and selects browser, development, and server implementations through package export conditions.

System map

The repository distributes several packages around Solid's reactive runtime and rendering adapters. Browser, development, and server execution are separate build targets selected through conditional exports. pnpm and Turborepo coordinate compilation, declaration generation, testing, and publishing; the Express applications are examples of consuming the library.

Feature catalog

Solid's public features center on reactive state, declarative control flow, asynchronous rendering, and lifecycle management. Consumers can use compiled JSX, hyperscript, tagged templates, custom elements, or custom host renderers. The repository also exposes server rendering and static generation, with a small routed example demonstrating Home, Profile, and Settings.

All 15 feature catalog claims →

Data flow

Reactive reads create dependency edges, and setters propagate invalidation through computation and effect queues. Stores translate property access and path updates into the same signal machinery, while resources translate asynchronous results into state and Suspense notifications. Server rendering uses hydration context to associate resources and fragments, and static generation adds a subprocess and filesystem output boundary.

Behavior traces

Source inspection followed browser hydration and navigation, structured-state updates, asynchronous resource completion, and static HTML persistence. These traces name the local functions and identify external renderer boundaries explicitly. They describe implementation paths rather than runtime results observed during this investigation.

Testing signals

Tests and CI were inspected, not executed; test existence supplies coverage intent rather than a passing result. Vitest separates jsdom client tests from Node server tests, with additional TypeScript checks and Node assertion/import checks. This inventory is bounded: inspected tests substantiate specific contracts, while coverage configuration and script selection identify limits without establishing exhaustive repository coverage.

All 14 testing signals claims →

Risk map

The strongest source-observed boundaries are configured code execution and output paths in static generation, external execution in optional integration tests, and shared runtime state. Package-condition mistakes and duplicated client/server behavior can affect broad portions of the public API. These are source observations or labeled hypotheses, not confirmed vulnerabilities or runtime failures.

Extension points

Extension primarily happens through factory callbacks, renderer host operations, scoped providers, and compiler options. Development hooks expose graph and store updates, while external-source factories connect other reactive systems. Packaging and examples also contain explicit lists that must be extended when adding a new public entrypoint or sample route.

Contributor handoff

Begin with package exports and build/test configuration before editing runtime behavior, because environment selection changes implementation semantics. Keep client/server parity, owner cleanup, hydration IDs, and store safety guards explicit in any proposed change. Tests and CI were inspected, not executed, and this brief is a bounded source inventory rather than exhaustive coverage or validation.

Languages

LanguageFilesShare of source
TypeScript7062%
JavaScript4338%
JSON33docs/config
Markdown22docs/config
YAML7docs/config
CSS1docs/config

Start reading here

Probable source entrypoint: packages/ — inferred from the directory tree and manifest, not the upstream docs.

Source roots

packages/ (159 files)

Source layout — packages/

PathFiles
packages/babel-preset-solid/5
packages/solid/116
packages/solid-element/6
packages/solid-ssr/26
packages/test-integration/6

Repository structure

Top-level pathFiles
packages/159
.github/6
.changeset/2
documentation/1

Docs found: CONTRIBUTING.mdREADME.mddocumentation/resources/examples.md

Package

package.json — solid-js v1.0.0, 35 declared dependencies.

@babel/cli@babel/core@babel/preset-env@babel/preset-typescript@changesets/cli@rollup/plugin-babel@rollup/plugin-commonjs@rollup/plugin-json@rollup/plugin-node-resolve@rollup/plugin-replace@types/node@vitest/coverage-v8

CI & config entrypoints

Structural health signals

Average score 9.2/10 across 63 analyzed source files; 1 hotspot surfaced.

These are deterministic review leads — size, churn, and structural signals — not proof of a bug in this project.

Recent history