npm / vite-plugin-solid
vite-plugin-solid
What changed in vite-plugin-solid 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-30.
2 breaking1 behavior and defaults14 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initvite-plugin-solid 217 changes
Breaking changes 2
The plugin no longer changes resolve.alias, so aliases in your config retain priority over aliases added by later plugins.
Without ssr: true, modules loaded on the server compile to non-hydratable SSR output instead of DOM output; Vitest keeps DOM output.
Behavior and default changes 1
When the root config declares test.projects and leaves this option unset, the plugin sets it to false so each inline project resolves its own Vite config; explicit values are respected.
Fixes and other changes 14
In jsdom and happy-dom tests, Node no longer receives the browser condition for packages Vitest leaves external, allowing Node-only packages such as msw/node to load under Vitest 4 and later.
Modules with extensions after a query are compiled, and custom extensions are matched when the query contains a dot.
Test mode is excluded from HMR setup.
Client transforms keep $ServerOnly templates while HMR is active; an explicit solid.omitServerOnlyTemplates setting still takes precedence.
Packages with a solid export condition declared only in the workspace root package.json are now inlined for projects in that workspace.
Production builds now dedupe nested copies of solid-js, preventing a second runtime from breaking context lookups.
An explicit setting still takes precedence over keeping $ServerOnly templates in client transforms during HMR.
Server builds targeting webworker now resolve the server build of solid-js, so server APIs no longer resolve to browser stubs.
Vitest retains the jsdom environment and jest-dom setup when server.deps.external already lists solid-js.
The jsdom default no longer overrides environments configured in Vitest workspaces and projects.
In Vitest DOM tests without ssr, the plugin inlines solid-js and packages that import it without a solid export condition; user inline entries are merged, and externalizing solid-js opts out.
For Vitest versions before 1.0 with jest-dom 6 or later, the plugin injects the ESM vitest entry as an absolute path to avoid loading the CommonJS entry.
The Vitest setup file is injected only when jest-dom resolves from the project root, avoiding failures from transitive installations.
The scan transform uses the classic JSX runtime so .tsx files no longer cause a parse error that aborts dependency scanning and skips pre-bundling.