Change8

@solidjs/web@2.0.0-rc.3

Breaking Changes
📦 solid-jsView on GitHub →
5 breaking6 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

  1. Update imports for runtimes from `@solidjs/dom-expressions` to `@solidjs/web`, `h`, `html`, or `universal` as appropriate.
  2. If using `babel-preset-solid`, switch to using `@solidjs/babel-plugin` or `@solidjs/compiler` directly.
  3. Update imports for compiler natives to `@solidjs/compiler-*`.
  4. 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`.

Affected Symbols