Skip to content

The latest news releases from the Qwik team

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
23
...
2930