Change8

solid-js@2.0.0-rc.3

📦 solid-jsView on GitHub →
3 features🐛 6 fixes1 deprecations🔧 21 symbols

Summary

This release introduces a new diagnostics package for improved debugging and performance analysis, alongside several bug fixes for SSR hydration and reactivity. Server-side write behavior has been updated with deprecations for setter writes and clearer handling of optimistic writes.

Migration Steps

  1. If bridging a subscription, make the subscription the async source itself instead of pushing writes from its callback to avoid deprecated server setter writes.

✨ New Features

  • Introduced `@solidjs/diagnostics` package for agent-consumable diagnostics, including `captureArtifact()`, assertion helpers (`expectNoDiagnostics`, `expectDiagnostic`, `expectRerunBudget`, `expectNoWaste`), scenario budgets (`assertBudget`), Vitest matchers, a browser bridge, a Playwright adapter, and a protocol for the Vite-plugin dev-server endpoint. `solid-js` now includes a `skills/reactivity-diagnostics` repair guide.
  • Server store setters now apply returned replacements, matching the client contract. Array replacements are also fixed.
  • Optimistic writes are now true no-ops on the server, as they are masks that revert at settle and server output represents settled state.

🐛 Bug Fixes

  • Fixed async-generator projections (and memos) freezing after SSR hydration. The adoption wrappers now correctly track the serialized stream's terminal state.
  • Corrected projection drafts to be proxies over a fake target instead of the store proxy itself, resolving issues with invariant validation during derive continuations.
  • Fixed store replay's first-pull thenable swallowing exceptions during SSR snapshot application, ensuring failures route to the flight's rejection.
  • Ensured server signal overload declarations are adjacent to their implementation for successful declaration builds.
  • Recovered from `REACTIVITY_HALTED` in dev workflows, allowing HMR and playground embeds to revive scheduling and reset halts before mounting, preventing permanent bricking until a full page reload.
  • Fixed an array-shrink hole in projection sync replacement.

Affected Symbols

⚡ Deprecations

  • Setter writes on the server are deprecated and will become an error in a future release. Currently, they are warnings and inert data. To fix, bridge subscriptions to be async sources instead of pushing writes from their callbacks.