Not available
The names below are absent from the ShadowJS package namespace.
The names below are absent from the ShadowJS package namespace. Importing one is a type error; choose the replacement listed in the table or redesign that part of the application.
| Solid | Status | Closest alternative today |
|---|---|---|
createSignal, createMemo, createEffect, createRenderEffect, createSelector, createUniqueId, createResource, createStore |
renamed | useStore, useMemo, useEffect, useRenderEffect, useSelector, useId, useResource, useStore |
on |
removed | The two-function form of useEffect(deps, fn) |
createComputed |
none | useMemo for pure derivations; useRenderEffect(compute, apply) for a write that may wait for the flush |
createReaction |
useReaction(onInvalidate) |
track(fn) runs fn now; the first change calls onInvalidate once. Call track again to re-arm |
createDeferred |
useDeferredValue (1.0, 2026-10-09) |
Same behavior; the lane runs after urgent work. |
from, observable, enableExternalSource |
useExternalStore(subscribe, getSnapshot, { getServerSnapshot }) |
subscribe(notify) returns the unsubscribe function; getSnapshot() is read untracked |
startTransition, useTransition |
same names (1.0, 2026-10-09) | See Transitions. |
createMutable, modifyMutable |
none | useStore with a draft setter |
clientOnly(() => import(...)) |
none | <ClientOnly> for client-only content; compose it with lazy for a lazy component |
MetaProvider, getAssets, useAssets |
none | Delete MetaProvider; Title, Meta, Link, Style, Base need no provider. On the server collect tags with createServerHead() |
HydrationScript, generateHydrationScript |
same names (@shadow-js/web/server) |
Early event capture; the data block is still read by hydrate. |
DEV |
none | isDev from @shadow-js/core |
Router, Route, HashRouter, MemoryRouter, StaticRouter |
none | createRouter with defineRoute; see Solid Router |
createAsync, createAsyncStore, query, revalidate, reload, json |
none | A route loader with useLoaderData, useResource, router.invalidate() |
action, useAction, useSubmission, useSubmissions |
none | An async function, useOptimistic, then router.invalidate() |
useIsRouting, useResolvedPath, useCurrentMatches, usePreloadRoute |
none | useNavigation, useHref, useMatches, router.preload |