GitShow/solidjs/solid
solidjs

solid

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

by solidjs
declarativefine-grainedjavascriptjsxperformanceproxiesreactivesolid
Star on GitHubForkWebsitenpm

TypeScript

35.9k stars1.1k forks194 contributorsActive · 12m agoSince 2018v1.9.0MIT

Meet the team

See all 194 on GitHub →
ryansolid
ryansolid1.5k contributions
thetarnav
thetarnav33 contributions
otonashixav
otonashixav25 contributions
Jutanium
Jutanium23 contributions
trusktr
trusktr18 contributions
dependabot[bot]Bot
dependabot[bot]15 contributions
davedbase
davedbase14 contributions
bikeshedder
bikeshedder12 contributions

Languages

View on GitHub →
TypeScript73.5%
JavaScript26.3%
CSS0.2%

Commit activity

Last 12 weeks · 28 commits

Full graph →

Community health

5 of 6 standards met

Community profile →
87
✓README✓License✓Contributing✓Code of Conduct○Issue Template✓PR Template

Recent PRs & issues

Active · Last activity 12m ago
See all on GitHub →
ryansolid
Render against a document other than window.documentOpenIssue

Moved from ryansolid/dom-expressions#253 / the layering discussion on solid#1740. / always hit global . Scoped custom element registries and shadow-root-backed documents need the mount root’s document-like object instead. #1740 put a field on the reactive owner. That was rejected because it puts DOM-specific state into the owner. The gap is still real; the enhancement is a renderer-owned document (or equivalent) that does not leak into rxcore.

ryansolid · 1h ago
ryansolid
Merge adjacent sibling templates in a fragment into one templateOpenIssue

Moved from ryansolid/dom-expressions#458. A fragment of adjacent static siblings compiles to one per root: Those could be a single template string (and one clone) when nothing dynamic sits between them. Reported by @milomg; playground: https://playground.solidjs.com/anonymous/6f9638af-453b-4841-b8cd-76ea1c4fc15a

ryansolid · 1h ago
ryansolid
insert() should accept iterable collections, not only arraysOpenIssue

Moved from ryansolid/dom-expressions#294. only walks arrays. A custom iterable of nodes (anything with that is not an array) is skipped with . That shows up from non-JS producers (e.g. Squint) that hand JSX a collection rather than . This is still real. It was never taken because walking general iterables on the insert hot path has a cost, and / other list helpers would need the same treatment to be consistent. Leaving it here as an enhancement for 2.x rather than a 1.x fix.

ryansolid · 1h ago

Recent fixes

View closed PRs →
brenelz
fix(signals): replay pending-gated readers stranded by a transaction's silent value promotionMergedPR

Summary Follow-up to #3041 — the companion backfill itself is fixed in rc.2 (verified against the published tarball), but the reported "still one value behind sometimes" turned out to be a distinct, long-standing bug (reproduces on rc.1, rc.2, and ). Symptom: content whose async read is short-circuited behind a pending gate — — lands showing the previous committed value and never corrects until the next write. A flat effect that reads unconditionally is fine, and user-tier is unaffected, which is why it only bites "sometimes". Root cause When the pending gate flips off during the landing flush, the render effect re-runs and reads the async memo for the first time. That read happens under the isPending companion's optimistic lane ( assigns the source's , and settle keeps it), so serves the committed old value. The staged then promotes via , which deliberately never re-notifies — stranding the reader on the old value. The engine already has a replay contract for exactly this shape (gated subs recorded at read time, replayed by after commit — #2963), but the branch of only recorded when no** transaction was active, so transaction landings fell through the hole. Fix In , whenever a committed-view read hides a staged , record the reader into . The existing replay re-runs it right after promotion, within the same synchronous flush — the effect sequence goes with no paint in between. Tests — signals-level regression pinning the exact value sequence (fails before the fix with the effect stuck on ). — the DOM shape through `pikachucharizardpackages/solid-web/test/latest-ispending-issue-3041.spec.tsx` — control spec pinning the full #3041 app shape (banner + content across sequential transitions and rapid mid-flight clicks), which passed before and after. Full suites green: solid-signals 1351, solid-web 425, solid 561. 🤖 Generated with Claude Code

brenelz · 1h ago
ryansolid
Absorb DOM Expressions into SolidMergedPR

Summary Lift the JSX compilers as and , and collapse the DOM/SSR runtime into (plus / / ) so Solid 2.0 no longer depends on a sibling checkout. Fold render/hydrate policy into the runtime, migrate the absorbed DOM code to TypeScript feature folders, and bake Solid defaults (, ) into both compilers. Make JS CI pass on without a native compiler build: stop tracking the generated Babel bundle, skip in root , and fix HydrationScript / published JSX identity so examples typecheck. File compiler/runtime issues on this repo after merge, not ryansolid/dom-expressions. Binary publish stays a separate dispatch workflow, same as expressions. Test plan [ ] JS CI green on this PR ( + ; compiler native matrix is push-to- / dispatch only) [ ] Confirm no remaining package.json dependencies [ ] After merge, add a redirect/banner on the expressions repo so new issues land here Made with Cursor

ryansolid · 2h ago
birkskyum
refactor(web): move server function runtime into `@solidjs/web`MergedPR

Summary move the server-function implementation and declarations into expose Solid-owned protocol metadata and flash helpers from the core entry build the client, server, and rich-argument entries from Solid-owned source inject the server-function protocol into the generic dom-expressions frame adapters move the complete protocol test suite into Solid preserve the existing public API and generated package output The runtime source is synchronized with dom-expressions at . Why is the framework-neutral rendering layer. Server functions are not rendering primitives. They define Solid's client/server protocol, including reference registration, request encoding, dispatch, errors, redirects, revalidation, CSRF, progressive enhancement, and observability. The compiler and public API already identify this as Solid functionality through . Keeping the implementation in dom-expressions makes Solid's protocol an implicit responsibility of a lower-level renderer and exposes Solid-specific concepts to every dom-expressions consumer. This change aligns implementation ownership with the existing public boundary. Generic framing and serialization primitives remain in dom-expressions, while Solid supplies the server-function protocol adapter. The dom-expressions copy remains temporarily so this can land without an atomic cross-repository release. Its removal is prepared in ryansolid/dom-expressions#577. This PR has been tested against both the current dom runtime and #577, so no third migration PR is required. Verification full workspace build 1,042 tests passed, 2 skipped build, declarations, and type tests against the current dom runtime the same build, declarations, type tests, and runtime tests against dom-expressions #577 ESM import and packaged-type integration tests npm package dry run CodSpeed CodSpeed could not find a successful run for the actual base at , so it compared this branch to older across different runtime environments. The reported changes are all signals and store benchmarks, which this PR does not modify.

birkskyum · 8h ago
Structured data for AI agents

Repository: solidjs/solid. Description: A declarative, efficient, and flexible JavaScript library for building user interfaces. Stars: 35917, Forks: 1094. Primary language: TypeScript. Languages: TypeScript (73.5%), JavaScript (26.3%), CSS (0.2%). License: MIT. Homepage: https://solidjs.com Topics: declarative, fine-grained, javascript, jsx, performance, proxies, reactive, solid. Latest release: v1.9.0 (1y ago). Open PRs: 2, open issues: 21. Last activity: 12m ago. Community health: 87%. Top contributors: ryansolid, thetarnav, otonashixav, Jutanium, trusktr, dependabot[bot], davedbase, bikeshedder, aminya, Gavin-Gong and others.

·@ofershap

Replace github.com with gitshow.dev