Qwik Core 2.0.0-rc.4 Improves SSR Reliability and Developer Experience
The latest Qwik release introduces a new inline bootstrap script strategy for CSP compliance, enhances SSR stability for pending boundaries, and includes a comprehensive migration tool for v2.
Qwik published @qwik.dev/[email protected].
The default module qwikloader strategy now starts from a small inline bootstrap script rather than an external script tag. The bootstrap receives the CSP nonce like other inline scripts. Deployments using policies built on script-src 'self' and fixed sha256-... hashes must add a hash for the new bootstrap script.
The migrate-v2 tool, contributed by @wmertens in #9178, now includes all v1 migrations and runs via npx @qwik.dev/core@latest migrate-v2.
Fixes to server-side rendering ensure a throw inside out-of-order <Pending> content no longer crashes the server, zero content is preserved in streamed pending boundaries, and resolved pending content stays visible after parent updates. Subscriptions are isolated between pending boundaries sharing reactive state. SSR subscribes qwikloader to event names as elements render, and interactions made before resume are preserved on WebKit during HTML streaming stalls.
Resumed child components rerender on prop changes. Components serialized twice resume correctly with their render functions, and resumed state persists when pending segments finish before the shell. The release rejects oversized or malformed BigInt values in serialized state.
Computed signals recompute once without stale sources in diamond dependency graphs. Component props derived from computed signals avoid going stale when reading a lazy QRL during an update. Inserting a component retains the next sibling's signal bindings, and removing or reordering elements stops the re-insertion of stationary siblings.
Click-to-source finds browser-created elements during development. Editing an imported CSS file avoids page reloads. @qwik.dev/core/optimizer re-exports createOptimizer. The TypeScript optimizer prevents elements with spread props and keys from losing children or props or throwing _createElement is not defined, and keeps outer loop items in scope for nested loop handlers. Dependency on @qwik.dev/optimizer is updated to 2.1.0-rc.10.
