Skip to content

Change Log

Please refer to the corresponding installation section:

SvelteKit Single-page App Support from v0.6.7

From v0.6.7, @vite-pwa/sveltekit adds support for single-page apps, including also:

  • add static-adapter fallback in the service worker precache manifest in SPA mode
  • update globPatterns to include __data.json files when using static-adapter with load functions

Check the SvelteKit documentation for further details.

Vite 6 support from v0.21.1

From v0.21.1, vite-plugin-pwa adds support for Vite 6:

  • should also work with Vite 3, 4 and 5.
  • still not using the Vite 6 Environment API.

If you want to use vite-plugin-pwa with Vite 6 Environment API, check this PR: feat!: add Vite 6 Environment API support: install the vite-plugin-pwa version from pkg-pr-new using the last commit (click on the commit link in the pkg-pr-new comment ):

bash
pnpm add -D https://pkg.pr.new/vite-plugin-pwa@88b2e45
bash
yarn add -D https://pkg.pr.new/vite-plugin-pwa@88b2e45
bash
npm i -D https://pkg.pr.new/vite-plugin-pwa@88b2e45

INFO

vite-plugin-pwa should still work with Vite 3, 4 and 5.

Workbox 7.3.0 from v0.21.0

From v0.21.0, vite-plugin-pwa updates workbox to 7.3.0.

Workbox 7.3.0 from v0.21.0

From v0.21.0, vite-plugin-pwa updates workbox to 7.3.0.

Service worker build from v0.20.2

From v0.20.2, the plugin will throw an error if the maximumFileSizeToCacheInBytes warning is present when building the service worker.

Workbox 7.1.0 from v0.20.0

From v0.20.0, vite-plugin-pwa updates workbox to 7.1.0.

Workbox has deprecated workbox-google-analytics, it is not compatible with newer Google Analytics v4.

Updated Vite Build from v0.19.6

These new features are meant to be used only from integrations.

From v0.19.6, vite-plugin-pwa adds envOptions option to injectManifest to allow customizing the environment options for the service worker build output:

  • envDir: you can change the envDir, the plugin will use the Vite's envDir option if not configured
  • envPrefix: you can change the envPrefix, the plugin will use the Vite's envDir option if not configured

vite-plugin-pwa also includes the new configureCustomSWViteBuild integration option to allow you to change the Vite's build options for the custom service worker build, check the PWAIntegration type definition for more details.

PWA Assets from v0.19.0 experimental

From v0.19.0, vite-plugin-pwa adds experimental support for @vite-pwa/assets-generator to serve, generate and inject PWA assets on the fly.

Check the PWA Assets Generator Integrations section for more details.

New Vite Build from v0.18.0

From v0.18.0, vite-plugin-pwa adds five new options to injectManifest option to allow customizing the service worker build output:

  • target: you can change the target build, the plugin will use the Vite's build.target option if not configured
  • minify: you can change the minify build, the plugin will use the Vite's build.minify option if not configured
  • sourcemap: you can change the sourcemap build, the plugin will use the Vite's build.sourcemap option if not configured
  • enableWorkboxModulesLogs: you can enable/disable the workbox modules log for a development or production build, by default, the plugin will use process.env.NODE_ENV (Workbox modules logs logic will be removed from the service worker in production build: dead code elimination)
  • buildPlugins: you can add custom Rollup and/or Vite plugins to the service worker build

The new Vite build will allow you to use .env Files, the mode option in your PWA configuration will not be used when using injectManifest strategy, the plugin will use the Vite's mode option instead:

  • use import.meta.env.MODE to access the Vite mode inside your service worker.
  • use import.meta.env.DEV or import.meta.env.PROD to check if the service worker is running on development or production (equivalent to process.env.NODE_ENV), check Vite NODE_ENV and Modes docs.

TIP

If you are using TypeScript in your service worker accessing import.meta.env variables, if TypeScript complains, add the following reference to the beginning of your service worker code:

ts
/// <reference types="vite/client" />

Rollup 4 and Vite 5

Rollup 4 has changed the asset name layout format, it is using ascii letters (no encoding, including also dash and underscore), previous Rollup versions are using hex encoding:

This change breaks the way vite-plugin-pwa build plugin builds the service worker, since it is using this regular expression /[.-][a-f0-9]{8}\./ for dontCacheBustURLsMatching in workbox and injectManifest options.

From version v0.17.0, vite-plugin-pwa configures dontCacheBustURLsMatching with a regular expression using the Vite's build.assetsDir option (defaults to assets):

  • workbox.dontCacheBustURLsMatching = /^assets\//
  • injectManifest.dontCacheBustURLsMatching = /^assets\//

You can refer to this issue for more details about dontCacheBustURLsMatching: Workbox appears to be needlessly generating revision hashes.

@vite-pwa/vitepress

From version v0.3.0, @vite-pwa/vitepress configures dontCacheBustURLsMatching in a similar way to how vite-plugin-pwa does, but using the VitePress' assetsDir option (defaults to assets).

@vite-pwa/nuxt

From version v0.4.0, @vite-pwa/nuxt requires Vite 5 and Nuxt 3.9+.

From version v0.3.3, @vite-pwa/nuxt configures dontCacheBustURLsMatching in a similar way to how vite-plugin-pwa does, but using the Nuxt's app.buildAssetsDir option (defaults to _nuxt).

@vite-pwa/astro

From version v0.3.1, you can use import.meta.env.PUBLIC_ variables in your custom service worker when configured using .env files.

From version v0.2.0, @vite-pwa/astro configures dontCacheBustURLsMatching in a similar way to how vite-plugin-pwa does, but using the Astro's build.assets option (defaults to _astro).

@vite-pwa/sveltekit

From version v0.3.0, @vite-pwa/sveltekit supports SvelteKit 2 (should also support SvelteKit 1).

From version v0.2.9, @vite-pwa/sveltekit configures dontCacheBustURLsMatching in a similar way to how vite-plugin-pwa does, but using the Sveltkit's appDir option (defaults to _app).

WARNING

From version v0.2.0, SvelteKitPWA plugin requires SvelteKit 1.3.1 or above.

If you're using a SvelteKit version prior to v1.3.1, you should use SvelteKitPWA plugin version 0.1.*.

Other integrations

If you're using vite-plugin-pwa or another integration with other meta frameworks (îles), review the generated service worker if you're using Vite 5 or Rollup 4, and update the dontCacheBustURLsMatching regular expression properly when required.

Released under the MIT License.