solid-core-overview
Quick Reference
Version Matrix
| Package |
Version |
Status |
Notes |
solid-js |
1.x (1.8+) |
Stable |
Fine-grained reactivity, signals, stores, effects, SSR, streaming |
solid-js |
2.0 |
Beta |
Microtask batching, async first-class, onSettled replaces onMount |
@solidjs/start |
0.x |
Deprecated |
Used createServerData$, createServerAction$ — NEVER use for new projects |
@solidjs/start |
1.0 |
Stable |
Uses "use server" directive, built on Vinxi/Vite/Nitro |
@solidjs/router |
< 0.15 |
Legacy |
Used cache function (now deprecated) |
@solidjs/router |
0.15+ |
Stable |
Introduced query (replaces cache), current API |
Key Version Dependencies
| Dependency |
Requirement |
| SolidStart 1.0 |
Requires @solidjs/router 0.15+ |
@solidjs/router |
Requires solid-js 1.8.4+ |
createAsync |
Bridge API between 1.x and 2.0 — use it NOW |
babel-preset-solid |
Required build dependency for JSX compilation |
Critical Warnings
NEVER use SolidStart 0.x APIs (createServerData$, createServerAction$) in new projects — they are removed in SolidStart 1.0. ALWAYS use "use server" with query/action instead.
NEVER use cache from @solidjs/router — it is deprecated. ALWAYS use query (available in router 0.15+).
NEVER import store utilities from solid-js — stores live in solid-js/store. Wrong imports cause runtime errors with no compile-time warning.
NEVER import rendering utilities from solid-js — SSR/hydration functions live in solid-js/web.
NEVER confuse @solidjs/router (current) with the old solid-app-router package — the old package is abandoned.
API Categories at a Glance
Reactivity Primitives (solid-js)
| API |
Purpose |
createSignal |
Reactive value with getter/setter |
createEffect |
Side effects that auto-track dependencies |
createMemo |
Cached derived values (reactive source) |
createResource |
Async data fetching with loading/error states |
createComputed |
Synchronous pre-render state sync |
createRenderEffect |
Synchronous render-phase effects |
Reactive Utilities (solid-js)
| API |
Purpose |
batch |
Defer updates until callback completes |
untrack |
Read signals without creating dependencies |
on |
Explicit dependency specification for effects |
observable |
Convert signal to RxJS-compatible Observable |
from |
Bridge external reactive systems into signals |
Lifecycle (solid-js)
| API |
Purpose |
SolidJS 2.x |
onMount |
Run once after DOM mount (non-tracking) |
Replaced by onSettled |
onCleanup |
Cleanup on unmount or effect re-run |
Unchanged |
Store Utilities (solid-js/store)
| API |
Purpose |
createStore |
Proxy-based reactive nested state |
createMutable |
Direct-mutation reactive state (MobX-style) |
produce |
Immer-style mutation syntax for stores |
reconcile |
Diff-based store updates (API responses) |
unwrap |
Strip reactive proxy, get plain object |
Component Utilities (solid-js)
| API |
Purpose |
splitProps |
Split props into groups without losing reactivity |
mergeProps |
Merge props with defaults reactively |
createContext |
Create context for dependency injection |
useContext |
Consume context value |
lazy |
Code-split component with dynamic import |
children |
Resolve and track children reactively |
Control Flow (solid-js)
| Component |
Purpose |
<Show> |
Conditional rendering |
<For> |
Keyed list rendering (reference identity) |
<Index> |
Indexed list rendering (position identity) |
<Switch>/<Match> |
Multi-branch conditional |
<Suspense> |
Async loading boundary |
<ErrorBoundary> |
Error catching boundary |
<Portal> |
Render outside component tree |
<Dynamic> |
Dynamic component selection |
Rendering (solid-js/web)
| API |
Purpose |
render |
Mount app to DOM element |
hydrate |
Attach reactivity to server-rendered HTML |
renderToString |
Synchronous SSR |
renderToStream |
Streaming SSR |
isServer |
Boolean constant for environment detection |
Router (@solidjs/router)
| API |
Purpose |
Router, Route, A |
Core routing components |
useNavigate, useParams |
Navigation hooks |
useSearchParams, useLocation |
URL state hooks |
query |
Cached server data fetching |
createAsync |
Reactive async primitive (recommended) |
action |
Server mutation wrapper |
useSubmission |
Track mutation status |
SolidStart (@solidjs/start)
| API |
Purpose |
FileRoutes |
File-based route generation |
"use server" |
Server function directive |
| API routes |
HTTP method handlers (GET, POST, etc.) |
SolidJS 2.x Changes Summary
| Feature |
SolidJS 1.x |
SolidJS 2.x |
| Reactivity |
Synchronous by default |
Microtask-batched |
| Async |
Manual with createResource |
First-class Promises/async iterables |
| Effects |
Single createEffect |
Split compute/apply pattern |
| Lifecycle |
onMount |
onSettled (can return cleanup) |
| Store setters |
Path-style |
Draft-first by default |
| List rendering |
<Index> component |
<For keyed={false}> with accessors |
| Derived state |
createMemo only |
createSignal(fn) for derived-but-writable |
New 2.x Primitives
<Loading> — Fallback during initial render without tearing down UI
isPending() — Track refreshing state
action() — Dedicated mutation primitive with optimistic patterns
createOptimistic / createOptimisticStore — Explicit optimistic UI
Getting Started
npm init solid@latest
Minimal SolidStart Project Structure
my-app/
├── public/
├── src/
│ ├── routes/
│ │ └── index.tsx # / route
│ ├── entry-client.tsx # Client hydration entry
│ ├── entry-server.tsx # Server handler entry
│ └── app.tsx # Root component
├── app.config.ts # SolidStart configuration
├── package.json
├── tsconfig.json
└── vite.config.ts
Minimal app.tsx (SolidStart)
import { Suspense } from "solid-js";
import { Router } from "@solidjs/router";
import { FileRoutes } from "@solidjs/start/router";
export default function App() {
return (
<Router root={(props) => <Suspense>{props.children}</Suspense>}>
<FileRoutes />
</Router>
);
}
Minimal SolidJS App (No SolidStart)
import { render } from "solid-js/web";
import { createSignal } from "solid-js";
function App() {
const [count, setCount] = createSignal(0);
return <button onClick={() => setCount((c) => c + 1)}>Count: {count()}</button>;
}
render(() => <App />, document.getElementById("root")!);
Ecosystem Package Map
| Package |
npm Name |
Purpose |
| Solid Router |
@solidjs/router |
Client/server routing, data loading, actions |
| SolidStart |
@solidjs/start |
Full-stack meta-framework (SSR, API routes) |
| Solid Primitives |
@solid-primitives/* |
40+ community reactive utilities |
| Kobalte |
@kobalte/core |
Accessible unstyled UI components (like Radix UI) |
| Solid Testing Library |
@solidjs/testing-library |
Testing utilities (Testing Library conventions) |
| Solid DevTools |
solid-devtools |
Browser extension for signal/component inspection |
| Babel Preset |
babel-preset-solid |
JSX compilation (required build dependency) |
| Solid Transition Group |
solid-transition-group |
CSS enter/exit animations |
Reference Links
Official Sources