
๐ง Better control over reactivity with untrack()
In Qwik, any read of a signal or store inside a reactive context automatically creates a dependency. This means the code will re-run every time that value changes.
Problems arise when that read is secondary, yet still triggers costly re-executions.
In this example, useTask$ will re-run every timeuserSignal changes, even if the read is only used for debugging or observation.
With untrack(), you can read the value without creating a reactive dependency.
Since Qwik 1.19.0, untrack() can accept signals and stores directly, without requiring an intermediate function, making the intent clearer and more explicit.
๐ก Pro tip (reactivity)
Use untrack() only when automatic re-execution would be a logical bug. If your code is meant to react to changes, do not use it. untrack() exists to remove dependencies, not to hide design mistakes.
โก Less JavaScript loaded too early with useVisibleTask$
useVisibleTask$ is commonly used to load code only when the user actually sees an element.
The trap appears when this task depends on heavy libraries. Before Qwik 1.19.0, these dependencies could be preloaded too early due to automatic bundle merging.
In this case, the library could be loaded even before the element was actually visible on screen.
Qwik 1.19.0 now prevents these segments from being merged in risky scenarios, ensuring that the code is loaded only when it is genuinely needed.
๐ก Pro tip (performance)
useVisibleTask$ is ideal for interaction- or visibility-related effects. Avoid placing critical or render-blocking logic there. If code is required to render the page, it should not be deferred.
๐ฆ Cleaner SSR outputs
A bug sometimes caused duplicate preloading of certain bundles during SSR. This behavior has been fixed.
At the same time, internal references such as core.jsand preloader.js are now filtered out of manifests and unnecessary graphs.
This reduces noise, simplifies debugging, and makes outputs easier to read for tooling.
๐งช Easier testing and development with Qwik City
It is now possible to mock route loaders and actions in a Qwik City context.
This allows testing a route without relying on external services or real data, significantly improving the local development and testing experience.
๐ Improved robustness in SPA and at the edge
A bug causing URL origin inconsistencies between client and server in SPA mode has been fixed.
New getOrigin options are also available for Bun and Deno, allowing explicit configuration of the correct origin.
Finally, an official Cloudflare Workers adapter is now available, confirming Qwikโs clear direction toward edge computing.
๐ Safer server-side events
Server-side RequestEvents are nowreadonly instead of being frozen objects.
This change does not affect runtime behavior, but it improves TypeScript safety and ergonomics by preventing accidental mutations, while offering better performance than frozen objects.
This is an internal adjustment, transparent for most applications, yet it strengthens the overall robustness of the server model.
๐ Should you update an existing project?
Qwik 1.19.0 introduces no breaking changes. Updating is therefore not mandatory, but it is strongly recommended for active or evolving projects.
If your project uses an older version of Qwik, updating will automatically apply fixes and improvements from intermediate releases. These changes are mostly internal and aim to make behavior stricter, more predictable, and more performant.
What happens when updating from an older version?
Updating directly to the latest 1.x version is the recommended approach. There is no need to go through each release one by one.
In some cases, the update may expose fragile existing behavior, such as implicit reactive dependencies or excessive JavaScript loading. These are not regressions, but fixes that make such issues visible.
Simple framework update
If your project uses Qwik City (routing, SSR, loaders, actions), make sure to update both @builder.io/qwik and@builder.io/qwik-city to keep versions aligned.
Recommended checks after updating
Once the dependency is updated, a few simple checks are enough for most projects.
Pay special attention to pages usinguseVisibleTask$, SSR rendering, and critical routes. If these work correctly, the update is generally safe.
๐ Upgrade guide (summary)
- Create a dedicated update branch
- Update Qwik via your package manager
- Run the project in dev mode and then build
- Verify SSR, critical routes, and deferred tasks
In the vast majority of cases, no code changes are required after the update.
๐ฏ What this release says about Qwik
Qwik 1.19.0 does not change how you write applications. It improves how applications behave in real-world scenarios that are often difficult to diagnose.
This is a release that reduces invisible traps, reinforces predictability, and increases confidence in production.
Have questions, issues, or feedback?
Join our official Learn Qwik Discord server to get help and connect with the community.
๐ Keep improving with Qwik
These improvements make the most sense when you understand Qwikโs mental model and architectural choices.