@solidjs/web@2.0.0-rc.3
Breaking Changes📦 solid-jsView on GitHub →
⚠ 5 breaking✨ 6 features🐛 4 fixes🔧 14 symbols
Summary
This release absorbs the expressions snapshot, restructuring compilers and runtimes into new packages. It also introduces TypeScript for the DOM runtime and improves development recovery from reactivity halts.
⚠️ Breaking Changes
- The expressions snapshot has been absorbed into the main repository, with compilers lifted to `@solidjs/babel-plugin` and `@solidjs/compiler`. Runtimes are now dumped into `@solidjs/web`, `h`, `html`, and `universal`.
- The expressions dump has been collapsed, dropping the rxcore seam and flattening runtimes into `package/src/`. The `babel-preset-solid` has been deleted, and compiler natives are now published as `@solidjs/compiler-*`.
- The render/hydrate policy has been folded into the runtime implementations. The duplicate `mergeProps` re-export has been removed. JSX type sources are now kept in `packages/web/jsx/`, and the SSR package entry is collocated at `src/index.server.ts`.
- The dumped DOM runtime has been migrated from JavaScript with colocated `.d.ts` files to TypeScript sources, meaning published types now come from `tsc`.
- Frames, server-functions, and serialization implementations have been moved into their respective subpath folders. `@solidjs/h` and `@solidjs/html` are now bound directly to `@solidjs/web` instead of taking a runtime argument.
Migration Steps
- Update imports for runtimes from `@solidjs/dom-expressions` to `@solidjs/web`, `h`, `html`, or `universal` as appropriate.
- If using `babel-preset-solid`, switch to using `@solidjs/babel-plugin` or `@solidjs/compiler` directly.
- Update imports for compiler natives to `@solidjs/compiler-*`.
- Ensure your development tooling or custom dev server utilizes `resetErrorHalt` if you need to recover from reactivity halts during development.
✨ New Features
- Compilers are now available as `@solidjs/babel-plugin` and `@solidjs/compiler`.
- Runtimes are now available in `@solidjs/web`, `h`, `html`, and `universal`.
- Compiler natives are published as `@solidjs/compiler-*`.
- The DOM runtime is now written in TypeScript, with published types generated by `tsc`.
- The runtime now recovers from `REACTIVITY_HALTED` in development workflows, preventing HMR and playground embeds from being permanently bricked by uncaught errors. The refresh runtime revives scheduling before patching hot updates, and `render()` resets the halt in dev before mounting. `resetErrorHalt` is re-exported from `solid-js` for dev tooling.
- Solid-native names are used for internal development markers and experimental frame protocol identifiers.
🐛 Bug Fixes
- The shared JSON codec options resolver is now typed, ensuring packed CommonJS declarations remain valid for strict Node16 consumers.
- Text nodes are reused for dynamic text in multi slots. `normalize` now leaves string/number values raw, and `insertExpression` materializes them at commit. This change significantly improves update throughput on certain workloads by reducing DOM node allocations.
- The server entry is now typed against the client `solid-js` declarations it resolves. The client `HydrationScript` stub is typed as a JSX component, and published `@solidjs/web` types now point to the same JSX module `jsx-runtime` uses, ensuring router `Action`s type-check as form `action`s.
- The SSR package entry is now collocated at `src/index.server.ts`.