Releases: QwikDev/qwik
[email protected]
[email protected]
Minor Changes
- ✨ our eslint plugin now supports eslint 9 (by @better-salmon in #7418)
Patch Changes
- ✨ Improve types and README documentation with clear configuration examples for ESLint 9+ (flat config). Added
globalIgnores
for more clarity andtseslint.config
for better type inference inside theparserOptions
option. (by @better-salmon in #7418)
[email protected]
[email protected]
Patch Changes
-
🐞🩹 create-qwik logAppCreated.ts now displays correct next steps for deno. (by @LogProphet in #7566)
After using the create-qwik command, the logAppCreated.ts file was not displaying the correct next steps for deno. Prior to this fix it would display "deno start" instead of "deno task start". This would cause a failure to run, as deno requires the 'task' keyword. This fixes bug 7520
-
🐞🩹 linting errors which were previously being ignored across the monorepo. (by @better-salmon in #7418)
@builder.io/[email protected]
@builder.io/[email protected]
@builder.io/[email protected]
Minor Changes
-
✨ Major improvements to prefetching with automatic bundle preloading (by @wmertens in #7453)
- This removes the need for service workers, and instead utilize
modulepreload
link 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
manifest
around) - 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-worker
This 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)
@builder.io/[email protected]
@builder.io/[email protected]
@builder.io/[email protected]
Minor Changes
-
🐞🩹 qwik-city no longer forces
q-data.json
downloads, instead relying on the cache headers. This means that you have to make sure yourq-data.json
is served withCache-Control
headers 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)