Skip to content

The latest news releases from the Qwik team

April 6th, 2026

@qwik.dev/core@2.0.0-beta.31

Minor Changes

  • useAsync now accepts a negative interval to invalidate the cache without recalculating, for lazy cache invalidation. (by @wmertens in #8503)

  • asyncSignal.invalidate(info: unknown) allows passing info to the calculation function. This can for example be used to request cache busting while reloading. (by @wmertens in #8503)

Patch Changes

  • fix(vite): skip qwikloader emitFile in serve mode (by @SchahinRohani in #8512)

  • 🐞🩹 crash when inserting dom nodes near an errored-host (by @Varixo in #8494)

  • 🐞🩹 improve preloader scheduling so large preload batches yield more reliably in the browser (by @Varixo in #8510)

  • The issue is caused by cli.mjs eagerly loading migrate-v2 code at startup. That migration path has top-level imports of ts-morph, ignore, and semver, so even normal CLI usage in third-party apps can fail with ERR_MODULE_NOT_FOUND when those migrate-only dependencies are not installed. (by @JerryWu1234 in #8507)

  • Updated dependencies [152e65b]:

Contributors:

  • wmertens
  • SchahinRohani
  • Varixo
  • JerryWu1234
  • qwik
  • 2

March 26th, 2026

2.0.0-beta.30

@qwik.dev/core@2.0.0-beta.30

Major Changes

  • BREAKING: useTask() and useVisibleTask() now await their cleanup functions before running the next invocation. If this is not what you want, do not return the cleanup Promise (and handle errors). (by @wmertens in #8481)

Minor Changes

  • ✨ introduce Each component for fast list operations (by @Varixo in #8434)

Patch Changes

  • 🐞🩹 prevent auto-exports for variables shadowed inside catch/do-while/switch/labeled blocks (by @Varixo in #8458)

  • 🐞🩹 imported css passed to useStyles$ is now deduplicated (by @wmertens in #8436)

  • fix(core): useSerializer$ now can handle thrown Promises while initializing. (by @wmertens in #8473)

  • Split the optimizer bindings into the new @qwik.dev/optimizer package. (by @wmertens in #8469) @qwik.dev/core/optimizer now re-exports the optimizer runtime from that package while keeping the Vite plugin bundled in core.

  • 🐞🩹 exported variables passed to $ functions are no longer incorrectly inlined into segments (by @Varixo in #8458)

  • 🐞🩹 sibling node duplication when toggling elements with dangerouslySetInnerHTML (by @Varixo in #8461)

  • Updated dependencies [4e54bce]:

@qwik.dev/optimizer@2.0.1-beta.0

Patch Changes

  • ✨ the Qwik optimizer is now in a separate package, which reduces download size for the qwik package (by @wmertens in #8483)

@qwik.dev/react@2.0.0-beta.30

Patch Changes

@qwik.dev/router@2.0.0-beta.30

Patch Changes

Full Changelog: https://github.com/QwikDev/qwik/compare/@qwik.dev/core@2.0.0-beta.29...@qwik.dev/core@2.0.0-beta.30

Contributors:

  • qwik
  • 2
  • wmertens
  • Varixo

March 15th, 2026

@qwik.dev/router@2.0.0-beta.29

Major Changes

  • BREAKING: The route configuration object has changed. The routes are now a more efficient trie structure and the config no longer includes menus. This should not impact you. (by @wmertens in #8414)

Minor Changes

  • ✨ SSG now runs in a separate process using Workers, and it can be re-run by running server/run-ssg.js (by @wmertens in #8414)

  • ✨ eTag and in-memory cache for SSR pages. You can define an eTag property on your page modules, which will be used to generate an ETag header for the response, and which is checked before rendering the page, returning 304 if possible. (by @wmertens in #8414) If you define a cacheKey function on your page module, it will be used to generate a cache key for the page, which is used to store the rendered HTML in an in-memory cache. This allows for faster responses for pages that are expensive to render and do not change often. The cache can be cleared using the clearSsrCache function from the request handler middleware.

  • ✨ Add routeConfig export as a unified alternative to separate head, eTag, and cacheKey exports (by @wmertens in #8414)

    The new routeConfig export groups all page-level configuration into a single export with the same resolution rules as head (static object or function). When a module exports routeConfig, separate head, eTag, and cacheKey exports on that module are ignored.

  • ✨ Custom 404.tsx error pages are now shown in dev mode, and you can now also create error.tsx pages for other HTTP status codes. (by @wmertens in #8414) Read the HTTP status with useHttpStatus().

Patch Changes

Contributors:

  • wmertens
  • saboooor
  • qwik
  • 2
1
...
11
12
13
...
30