solidjs-v2-migrationlisted
Install: claude install-skill khmm12/solidjs-v2-skills
# Migrate Solid 1.x → 2.0
Convert 1.x code to 2.0 in passes: mechanical first, then semantic, then
diagnostics-driven cleanup. The full rename/removal table with before/after
recipes is in `references/migration-map.md` — read it before starting; this
file is the workflow.
## Step 0 — establish the direction
- Source must be Solid 1.x (imports like `solid-js/web`, `solid-js/store`,
`createResource`, `Suspense`). Target version: whatever `solid-js@2.x` /
`@solidjs/web` beta the project declares (or the latest, if you're also
bumping `package.json`).
- Betas drift. The installed typings (`node_modules/solid-js/types`,
`@solidjs/web`) outrank docs and this skill's references when they disagree.
- Upgrade `solid-js`, `@solidjs/web`, and `babel-preset-solid` together.
## Pass 1 — mechanical (grep-and-replace, low judgement)
1. Dependencies: `solid-js@2.x`, add `@solidjs/web`, matching
`babel-preset-solid`.
2. `tsconfig.json`: `"jsxImportSource": "@solidjs/web"`.
3. Import paths and pure renames — tables at the top of
`references/migration-map.md`. Greppable: `solid-js/web`, `solid-js/store`,
`Suspense`, `SuspenseList`, `ErrorBoundary`, `mergeProps`, `splitProps`,
`unwrap`, `onMount`, `createSelector`, `Context.Provider`, `classList`,
`equalFn`, `getListener`.
Mind the non-1:1 renames: `Errored`'s fallback gets an error **accessor**
(`err()`), `splitProps` → `omit` inverts the result (rest-only), `merge` treats
`undefined` as an override, `onSettled` is