solid-js

solid-js breaking-changes badge

solid-js (latest known version: 2.0.0) has 66 known breaking changes on record, each backed by a source URL.

Actively maintainedLatest known version: 2.0.0npm ↗

Security advisories

GHSA-3qxh-p7jc-5xh6HIGH<1.9.4

Solid Lacks Escaping of HTML in JSX Fragments allows for Cross-Site Scripting (XSS)

source ↗

Recent changes

v2.0.0-beta.0Notable

Dev guardrails with dev warnings that catch accidental top-level reads in components and writes in reactive scopes before they become async bugs

source ↗

v2.0.0-beta.0Notable

More predictable scheduler: updates are microtask-batched and reads don't update until the batch flushes (use flush() only when you truly need to settle now)

source ↗

v2.0.0-beta.0Notable

Derived state is a primitive with function forms like createSignal(fn) and createStore(fn) making derived-but-writable patterns explicit and composable

source ↗

v2.0.0-beta.0Notable

Mutations have a home with action(...) and optimistic primitives (createOptimistic, createOptimisticStore) for optimistic → await → refresh flows

source ↗

v2.0.0-beta.0Notable

Pending UI is an expression via isPending(() => expr) to tell when refreshing work is in flight without tearing down the UI

source ↗

v2.0.0-beta.0Notable

<Loading> component for initial readiness shows a fallback while a subtree can't produce UI yet, then keeps the UI stable while background work happens

source ↗

v2.0.0-beta.0Notable

Async is now first-class: computations can return Promises or async iterables and the graph knows how to suspend/resume work

source ↗

v2.0.0-beta.0Breaking

use: directives are removed; use ref directive factories and arrays instead

source ↗

v2.0.0-beta.0Breaking

Store setters are draft-first by default; storePath(...) exists as an opt-in helper if you want the old path-style ergonomics

source ↗

v2.0.0-beta.0Breaking

createEffect is split (compute → apply), and onMount is replaced by onSettled (which can return cleanup)

source ↗

v2.0.0-beta.0Breaking

Index is replaced by <For keyed={false}>, and For children receive accessors (item() / i())

source ↗

v2.0.0-beta.0Breaking

classList is folded into class

source ↗

v2.0.0-beta.0Breaking

use: directives are replaced by ref directive factories with array composition

source ↗

v1.9.0Notable

Fixed an issue with lazy images by updating the heuristic to use `importNode` instead of `cloneNode` for templates with lazy images

source ↗

v1.9.0Notable

Client methods from `solid-js/web` are now exported from the server (they will throw if used in server environment)

source ↗

v1.9.0Notable

Improved Hydration Mismatch Error to output the template and matching ID for easier debugging

source ↗

v1.9.0Notable

Custom elements with the `is` attribute are now detected and receive special behavior

source ↗

v1.9.0Notable

Added support for handleEvent syntax in non-delegated events using objects with properties like `passive` and `once`

source ↗

v1.9.0Notable

Added `bool:` attribute namespace to explicitly set attributes according to boolean attribute rules

source ↗

v1.9.0Notable

Improved event handler delegating retargetting to better handle shadow DOM events

source ↗

v1.9.0Notable

Added JSDOM to the compiler to better detect invalid HTML at build time, including nested invalid elements like `<a>` inside other `<a>` tags

source ↗

v1.9.0Deprecation

`oncapture:` is now deprecated in favor of using `on:` with event properties

source ↗

v1.9.0Breaking

Removed the browser field from exports, which may cause issues with legacy packages that don't support export conditions

source ↗

v1.8.0Notable

Improved guards on global HydrationScript to prevent duplicate inclusion when multiple scripts are added to the same page, addressing issues in Micro-frontends or 3rd party Islands solutions.

source ↗

v1.8.0Notable

Changed open hydration markers from `#` to `$` to fix NGINX Server Side Includes compatibility, as comments led with `#` are treated as special directives by some servers.

source ↗

v1.8.0Notable

Template size reduction: implemented removal of unnecessary quotes in template strings (a compiler optimization technique), in addition to the removal of unnecessary closing tags from 1.7.

source ↗

v1.8.0Notable

Hydration improvements: fixed element duplication issues with fragments, especially with lazy component siblings or top-level fragments. Updated DOM snapshot accuracy during streaming and hydration pauses. Added performance improvements to avoid redundantly setting attributes or props during hydration.

source ↗

v1.8.0Notable

De-duping streaming serialization: decoupled promise serialization from Resources into a generic mechanism, enabling nested promises and more complicated data structures. Added deep de-duping of data serialized across flushes to avoid resending the same data in different streaming chunks, beneficial for Islands and recursive data structures.

source ↗

v1.8.0Breaking

Hydration will now error more aggressively when mismatches happen, as values will be kept as they were on the server rather than how they may compute at runtime during hydration.

source ↗

v1.7.0Notable

Test suite moved to Vitest

source ↗

Check what changed for solid-js since your installed version, live.

Open the playground →