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 => 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
- references/methods.md -- Complete import map for all entry points
- references/examples.md -- App setup, SolidStart setup, version-specific patterns
- references/anti-patterns.md -- Wrong imports, version mismatches, ecosystem confusion
Official Sources
1---2name: solid-core-overview3description: Use when starting a SolidJS project, checking API availability, or looking up import paths and version compatibility. Prevents using deprecated APIs such as SolidStart 0.x patterns or pre-0.15 router cache function. Covers version matrix for SolidJS 1.x/2.x and SolidStart, import reference, ecosystem package map, and getting started guidance. Keywords: SolidJS API, version matrix, SolidStart, solid-js imports, @solidjs/router, ecosystem, Vite, what is SolidJS, getting started, which version, API reference.4license: MIT5---67# solid-core-overview89## Quick Reference1011### Version Matrix1213| Package | Version | Status | Notes |14|---------|---------|--------|-------|15| `solid-js` | 1.x (1.8+) | Stable | Fine-grained reactivity, signals, stores, effects, SSR, streaming |16| `solid-js` | 2.0 | Beta | Microtask batching, async first-class, `onSettled` replaces `onMount` |17| `@solidjs/start` | 0.x | Deprecated | Used `createServerData$`, `createServerAction$` — NEVER use for new projects |18| `@solidjs/start` | 1.0 | Stable | Uses `"use server"` directive, built on Vinxi/Vite/Nitro |19| `@solidjs/router` | < 0.15 | Legacy | Used `cache` function (now deprecated) |20| `@solidjs/router` | 0.15+ | Stable | Introduced `query` (replaces `cache`), current API |2122### Key Version Dependencies2324| Dependency | Requirement |25|-----------|-------------|26| SolidStart 1.0 | Requires `@solidjs/router` 0.15+ |27| `@solidjs/router` | Requires `solid-js` 1.8.4+ |28| `createAsync` | Bridge API between 1.x and 2.0 — use it NOW |29| `babel-preset-solid` | Required build dependency for JSX compilation |3031### Critical Warnings3233**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.3435**NEVER** use `cache` from `@solidjs/router` — it is deprecated. ALWAYS use `query` (available in router 0.15+).3637**NEVER** import store utilities from `solid-js` — stores live in `solid-js/store`. Wrong imports cause runtime errors with no compile-time warning.3839**NEVER** import rendering utilities from `solid-js` — SSR/hydration functions live in `solid-js/web`.4041**NEVER** confuse `@solidjs/router` (current) with the old `solid-app-router` package — the old package is abandoned.4243---4445## API Categories at a Glance4647### Reactivity Primitives (`solid-js`)4849| API | Purpose |50|-----|---------|51| `createSignal` | Reactive value with getter/setter |52| `createEffect` | Side effects that auto-track dependencies |53| `createMemo` | Cached derived values (reactive source) |54| `createResource` | Async data fetching with loading/error states |55| `createComputed` | Synchronous pre-render state sync |56| `createRenderEffect` | Synchronous render-phase effects |5758### Reactive Utilities (`solid-js`)5960| API | Purpose |61|-----|---------|62| `batch` | Defer updates until callback completes |63| `untrack` | Read signals without creating dependencies |64| `on` | Explicit dependency specification for effects |65| `observable` | Convert signal to RxJS-compatible Observable |66| `from` | Bridge external reactive systems into signals |6768### Lifecycle (`solid-js`)6970| API | Purpose | SolidJS 2.x |71|-----|---------|-------------|72| `onMount` | Run once after DOM mount (non-tracking) | Replaced by `onSettled` |73| `onCleanup` | Cleanup on unmount or effect re-run | Unchanged |7475### Store Utilities (`solid-js/store`)7677| API | Purpose |78|-----|---------|79| `createStore` | Proxy-based reactive nested state |80| `createMutable` | Direct-mutation reactive state (MobX-style) |81| `produce` | Immer-style mutation syntax for stores |82| `reconcile` | Diff-based store updates (API responses) |83| `unwrap` | Strip reactive proxy, get plain object |8485### Component Utilities (`solid-js`)8687| API | Purpose |88|-----|---------|89| `splitProps` | Split props into groups without losing reactivity |90| `mergeProps` | Merge props with defaults reactively |91| `createContext` | Create context for dependency injection |92| `useContext` | Consume context value |93| `lazy` | Code-split component with dynamic import |94| `children` | Resolve and track children reactively |9596### Control Flow (`solid-js`)9798| Component | Purpose |99|-----------|---------|100| `<Show>` | Conditional rendering |101| `<For>` | Keyed list rendering (reference identity) |102| `<Index>` | Indexed list rendering (position identity) |103| `<Switch>`/`<Match>` | Multi-branch conditional |104| `<Suspense>` | Async loading boundary |105| `<ErrorBoundary>` | Error catching boundary |106| `<Portal>` | Render outside component tree |107| `<Dynamic>` | Dynamic component selection |108109### Rendering (`solid-js/web`)110111| API | Purpose |112|-----|---------|113| `render` | Mount app to DOM element |114| `hydrate` | Attach reactivity to server-rendered HTML |115| `renderToString` | Synchronous SSR |116| `renderToStream` | Streaming SSR |117| `isServer` | Boolean constant for environment detection |118119### Router (`@solidjs/router`)120121| API | Purpose |122|-----|---------|123| `Router`, `Route`, `A` | Core routing components |124| `useNavigate`, `useParams` | Navigation hooks |125| `useSearchParams`, `useLocation` | URL state hooks |126| `query` | Cached server data fetching |127| `createAsync` | Reactive async primitive (recommended) |128| `action` | Server mutation wrapper |129| `useSubmission` | Track mutation status |130131### SolidStart (`@solidjs/start`)132133| API | Purpose |134|-----|---------|135| `FileRoutes` | File-based route generation |136| `"use server"` | Server function directive |137| API routes | HTTP method handlers (GET, POST, etc.) |138139---140141## SolidJS 2.x Changes Summary142143| Feature | SolidJS 1.x | SolidJS 2.x |144|---------|-------------|-------------|145| Reactivity | Synchronous by default | Microtask-batched |146| Async | Manual with `createResource` | First-class Promises/async iterables |147| Effects | Single `createEffect` | Split compute/apply pattern |148| Lifecycle | `onMount` | `onSettled` (can return cleanup) |149| Store setters | Path-style | Draft-first by default |150| List rendering | `<Index>` component | `<For keyed={false}>` with accessors |151| Derived state | `createMemo` only | `createSignal(fn)` for derived-but-writable |152153### New 2.x Primitives154155- **`<Loading>`** — Fallback during initial render without tearing down UI156- **`isPending()`** — Track refreshing state157- **`action()`** — Dedicated mutation primitive with optimistic patterns158- **`createOptimistic`** / **`createOptimisticStore`** — Explicit optimistic UI159160---161162## Getting Started163164```bash165npm init solid@latest166```167168### Minimal SolidStart Project Structure169170```171my-app/172├── public/173├── src/174│ ├── routes/175│ │ └── index.tsx # / route176│ ├── entry-client.tsx # Client hydration entry177│ ├── entry-server.tsx # Server handler entry178│ └── app.tsx # Root component179├── app.config.ts # SolidStart configuration180├── package.json181├── tsconfig.json182└── vite.config.ts183```184185### Minimal app.tsx (SolidStart)186187```tsx188import { Suspense } from "solid-js";189import { Router } from "@solidjs/router";190import { FileRoutes } from "@solidjs/start/router";191192export default function App() {193 return (194 <Router root={(props) => <Suspense>{props.children}</Suspense>}>195 <FileRoutes />196 </Router>197 );198}199```200201### Minimal SolidJS App (No SolidStart)202203```tsx204import { render } from "solid-js/web";205import { createSignal } from "solid-js";206207function App() {208 const [count, setCount] = createSignal(0);209 return <button onClick={() => setCount((c) => c + 1)}>Count: {count()}</button>;210}211212render(() => <App />, document.getElementById("root")!);213```214215---216217## Ecosystem Package Map218219| Package | npm Name | Purpose |220|---------|----------|---------|221| Solid Router | `@solidjs/router` | Client/server routing, data loading, actions |222| SolidStart | `@solidjs/start` | Full-stack meta-framework (SSR, API routes) |223| Solid Primitives | `@solid-primitives/*` | 40+ community reactive utilities |224| Kobalte | `@kobalte/core` | Accessible unstyled UI components (like Radix UI) |225| Solid Testing Library | `@solidjs/testing-library` | Testing utilities (Testing Library conventions) |226| Solid DevTools | `solid-devtools` | Browser extension for signal/component inspection |227| Babel Preset | `babel-preset-solid` | JSX compilation (required build dependency) |228| Solid Transition Group | `solid-transition-group` | CSS enter/exit animations |229230---231232## Reference Links233234- [references/methods.md](references/methods.md) -- Complete import map for all entry points235- [references/examples.md](references/examples.md) -- App setup, SolidStart setup, version-specific patterns236- [references/anti-patterns.md](references/anti-patterns.md) -- Wrong imports, version mismatches, ecosystem confusion237238### Official Sources239240- https://docs.solidjs.com/concepts/intro-to-reactivity241- https://docs.solidjs.com/solid-start242- https://docs.solidjs.com/solid-router243- https://github.com/solidjs/solid244- https://github.com/solidjs-community/solid-primitives