Change8

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

Breaking Changes
📦 qwikView on GitHub →
1 breaking4 features🐛 3 fixes🔧 3 symbols

Summary

This release introduces significant updates to event handling markers (`passive:` and `capture:`) and adds `Temporal` serialization support. A breaking change in `useAsync$` renames the `interval` option to `expires`.

⚠️ Breaking Changes

  • The `interval` option of `useAsync$` has been renamed to `expires`. Users should update calls to `useAsync$` to use `expires` instead of `interval`.

Migration Steps

  1. Rename the `interval` option to `expires` when using `useAsync$`.
  2. If using `useAsync$`, consider adding the new `poll` option to control re-running behavior upon expiration.

✨ New Features

  • Qwik now supports `passive:eventname` markers for JSX event handlers, usable with matching `on*$/document:on*$/window:on*$` listeners for passive browser handling (e.g., touch events, scroll).
  • Added `Temporal` serialization support.
  • The optimizer now supports inline `@qwik-disable-next-line` hints to suppress specific diagnostics (like `preventdefault-passive-check`) for the next line.
  • Qwik now supports `capture:eventname` markers for JSX event handlers to force event execution in the capture phase.

🐛 Bug Fixes

  • Added `allowStale: false` option to AsyncSignal and routeLoader$. When false, invalidation clears the previous value, causing reads to suspend instead of returning stale data.
  • Fixed `preventdefault:*`, `stoppropagation:*`, and `sync$` event work to run synchronously in the loader for all nested events.
  • Preserved browser event execution order for async lazy-loaded handlers.

Affected Symbols