August 19th, 2026
The latest news releases from the Qwik team
August 19th, 2026
Major Changes
- ✨ routeLoader$ caching is controlled by the new
cacheControloption, replacingexpires/poll(by @wmertens in #8904)
Minor Changes
- ✨ loaders re-fetch on every navigation via the browser cache, and unchanged responses no longer rerender (by @wmertens in #8904)
Patch Changes
🐞🩹 preserve search params when submitting route actions (by @Varixo in #8846)
🐞🩹 enforce blocking loader guards for q-loader requests. (by @Varixo in #8852)
🐞🩹 prevent action query parameter pollution (by @Varixo in #8862)
🐞🩹 prevent error pages from exposing route data (by @Varixo in #8858)
🐞🩹 resolves virtual image modules on hmr or client-side navigation. (by @saboooor in #8864)
🐞🩹 avoid eager container resume for capture-free sibling handlers (by @Varixo in #8919)
🐞🩹
<Link />data prefetch doesn't fetch already present and still valid loader data (by @wmertens in #8870)🐞🩹 scope cached loader request state to loader paths. (by @Varixo in #8856)
🐞🩹 isolate server function requests from route middleware. (by @Varixo in #8853)
🐞🩹 ignore strict loader route hints outside dev mode. (by @Varixo in #8850)
Updated dependencies [
ab4874d,dfe3f66,fc8037b,afbdb6b,8d9ac4c,3818442,cf694e5,cbbfaed,ce80852,e4851c5,53231e8,87e4382,10d3b57,e0b6229,65661bf,c31d772,265803d]:
August 19th, 2026
August 19th, 2026
August 19th, 2026
Major Changes
✨ replace the
allowStalesignal option with an explicit.clear()method (by @wmertens in #8904)✨ remove
expires/poll/intervalfrom computed signals, useusePollfrom@qwik.dev/utilsinstead (by @wmertens in #8904)
Minor Changes
- breaking: show suspense fallbacks only during initial loading and remove
showStale(by @Varixo in #8869)
Patch Changes
🐞🩹 bundle-graph no longer drops reachable dependencies while it gets optimized to avoid transitive duplicates. (by @maiieul in #8907)
🐞🩹 support namespaced document and window event names (by @Varixo in #8920)
🐞🩹 render nested Each components on the server (by @Varixo in #8921)
🐞🩹 build optimizer before Vite ecosystem worker bundles (by @gioboa in #8905)
🐞🩹 avoid rerendering unchanged components after resume (by @Varixo in #8931)
🐞🩹 the minified build now emits valid
@__PURE__annotations so downstream bundlers can tree-shake it (by @maiieul in #8908)🐞🩹 handle async component rejections during SSR flushes. (by @Varixo in #8851)
🐞🩹 support Vite's Rolldown type definitions in the optimizer plugin (by @gioboa in #8874)
🐞🩹 avoid eager container resume for capture-free sibling handlers (by @Varixo in #8919)
🐞🩹
<Link />data prefetch doesn't fetch already present and still valid loader data (by @wmertens in #8870)🐞🩹 report repeated qrl chunk load failures only once (by @Varixo in #8845)
🐞🩹 encode vnode metadata keys in script output. (by @Varixo in #8866)
🐞🩹 require noSerialize values to carry the marker brand (by @Varixo in #8867)
🐞🩹 avoid projecting HMR placeholders into nested components (by @Varixo in #8865)
Updated dependencies [
53231e8]:
July 16th, 2026
Major Changes
✨ relocate built assets with output.assetFileNames; remove build.assetsDir handling (by @maiieul in #8817)
🐞🩹 sync computed$ errors also go in
.errorand also rethrow on.valueread (by @wmertens in #8807)
Minor Changes
✨
useComputed$accepts async functions and provides a compute context withtrack();useAsync$,createAsync$, andAsyncSignalare deprecated in favor of it (by @wmertens in #8807)✨ improve client resume responsiveness by splitting startup DOM processing into smaller tasks (by @Varixo in #8575)
✨ improve client resume responsiveness by splitting state processing into smaller tasks (by @Varixo in #8579)
✨ Add experimental
Showcontrol-flow component withwhen$,then$, and optionalelse$branches. (by @Varixo in #8624)
Patch Changes
🐞🩹 preserve deferred attribute values during server rendering (by @Varixo in #8839)
🐞🩹 preserve camelcase html attributes after client resume (by @Varixo in #8838)
🐞🩹 validate element names during server rendering (by @Varixo in #8839)
🐞🩹 preserve element keys during server rendering (by @Varixo in #8839)
🐞🩹 clientOnly async signals now resume on pages without other serialized state (by @wmertens in #8807)
🐞🩹 clientOnly option on useComputed$ now skips SSR computation (by @wmertens in #8807)
🐞🩹 dedupe the ssr already-streamed-chore dev warning to once per host (by @maiieul in #8808)
🐞🩹 the built-in dev-time eslint linter now targets es2022 (by @maiieul in #8810)
Dev-mode QRL segments now resolve even when their parent module was never loaded in the requesting Vite server (e.g. Vitest browser mode or SSR rendered in a separate server). The dev server transforms the parent on demand instead of erroring with "module does not exist in the build graph". (by @maiieul in #8816)
Fix SSR in-order streaming not flushing before awaiting a component-body promise. (by @AmariahAK in #8820)
🐞🩹 release pending store state after failed deserialization (by @Varixo in #8839)
🐞🩹 duplicate projected element children when a component throws a promise on first render (by @maiieul in #8715)
🐞🩹 resume multiple SSR containers on the same page (by @maiieul in #8799)
🐞🩹 validate serialized object data before restoration (by @Varixo in #8839)
🐞🩹 reject malformed byte arrays before allocating deserialized data (by @Varixo in #8839)
🐞🩹 filter callable properties while restoring errors (by @Varixo in #8839)
🐞🩹 preserve slot names during server rendering (by @Varixo in #8839)
🐞🩹 resuming component props when statePrewarm option is enabled (by @Varixo in #8784)
🐞🩹 ssg build no longer overwrites the deployed server entry with a broken re-export (by @wmertens in #8806)
🐞🩹 reject invalid serialized Promise dependencies (by @Varixo in #8839)
🐞🩹 reduce component rerender when props are the same (by @Varixo in #8735)
🐞🩹 surface a failed container resume — report it and unblock
whenContainerDataReadywaiters — instead of swallowing the error into a silent hang. (by @maiieul in #8772)🐞🩹 surface a failed vnode-data resume — report it and unblock the
whenVNodeDataReadywaiters — instead of swallowing the error into a silent hang. (by @maiieul in #8773)🐞🩹 prevent large updates that span multiple frames from restarting incorrectly and missing pending UI changes (by @Varixo in #8743)