May 21st, 2025
The latest news releases from the Qwik team
May 21st, 2025
Minor Changes
✨ Major improvements to prefetching with automatic bundle preloading (by @wmertens in #7453)
- This removes the need for service workers, and instead utilize
modulepreloadlink tags for better browser integration. - Improves initial load performance by including dynamic imports in the prefetch
- Reduces complexity while maintaining similar (and even better) functionality
- Enables some preloading capabilities in dev mode (SSR result only)
- Includes path-to-bundle mapping in bundle graph (this improves the experience using the
<Link>component, AKA "single page app" mode) - Server now has built-in manifest support (so no need to pass
manifestaround) - Moves insights-related build code to insights plugin
⚠️ ATTENTION:
- Keep your service worker code as is (either
<ServiceWorkerRegister/>or<PrefetchServiceWorker/>). - Configure your server to provide long caching headers.
Service Worker:
This new implementation will use it to uninstall the current service worker to reduce the unnecessary duplication.
The builtin service workers components are deprecated but still exist for backwards compatibility.
⚠️ IMPORTANT: Caching Headers:
The files under build/ and assets/ are named with their content hash and may therefore be cached indefinitely. Typically you should serve
build/*andassets/*withCache-Control: public, max-age=31536000, immutable.However, if you changed the rollup configuration for output filenames, you will have to adjust the caching configuration accordingly.
You can configure the preload behavior in your SSR configuration:
// entry.ssr.ts export default function (opts: RenderToStreamOptions) { return renderToStream(<Root />, { preload: { // Enable debug logging for preload operations debug: true, // Maximum simultaneous preload links maxIdlePreloads: 5, // Minimum probability threshold for preloading preloadProbability: 0.25 // ...and more, see the type JSDoc on hover }, ...opts, }); }Optional for legacy apps:
For legacy apps that still need service worker functionality, you can add it back using:
npm run qwik add service-workerThis will add a basic service worker setup that you can customize for specific caching strategies, offline support, or other PWA features beyond just prefetching.
- This removes the need for service workers, and instead utilize
Patch Changes
🐞🩹 linting errors which were previously being ignored across the monorepo. (by @better-salmon in #7418)
🐞🩹 now qwikloader is loaded only once in all cases (by @wmertens in #7506)
May 21st, 2025
May 21st, 2025
Minor Changes
🐞🩹 qwik-city no longer forces
q-data.jsondownloads, instead relying on the cache headers. This means that you have to make sure yourq-data.jsonis served withCache-Controlheaders that suit you. That file contains all the information about the route and is read for each qwik-city navigation. By default the data is cached for one hour. (by @wmertens in #7537)🛠 the service workers have been deprecated and replaced with entries that unregister them. If you have it enabled in production, you can remove it after a while once you are sure all your users have the new version. (by @wmertens in #7453)
Patch Changes
May 19th, 2025
May 19th, 2025