solid-js@2.0.0-rc.3
📦 solid-jsView on GitHub →
✨ 3 features🐛 6 fixes⚡ 1 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
- 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
@solidjs/diagnosticscaptureArtifact()expectNoDiagnosticsexpectDiagnosticexpectRerunBudgetexpectNoWasteassertBudget@solidjs/diagnostics/vitest@solidjs/diagnostics/browser@solidjs/diagnostics/playwright@solidjs/diagnostics/protocolartifactToJSONL()solid-jsskills/reactivity-diagnosticscreateProjectioncreateMemorefresh()Object.keys(state)resetErrorHaltcreateOptimisticcreateOptimisticStore
⚡ 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.