Nuxt module that detects update to Nuxt app.
When you publish updates, users won't get the new version until they hard refresh the browser page. Client-side navigation with <nuxt-link>
doesn't trigger updates. Users may continue working with outdated versions of your app for days or even weeks.
nuxt-update
publishes the current app version at a JSON endpoint, and then periodically checks on the client if the version has changed on the server. When an update is detected, an event is emitted which you can handle with some kind of user notifcation (or simply refresh the page automatically).
To save bandwidth and prevent unexpected network activity, updates are only checked during client-side navigation, with a customizeable minimum interval.
Install:
npm install nuxt-update
Add nuxt-update
to the modules
section of nuxt.config.ts
:
export default defineNuxtConfig({
modules: ["nuxt-update"],
})
Create plugins/update.client.ts
with your own update handler:
export default defineNuxtPlugin(() => {
const { $update } = useNuxtApp()
$update.on("update", (version) => {
// TODO: Use some fancy toast library.
if (confirm(`New version ${version} available. Update?`)) {
location.reload()
}
})
})
Define NUXT_PUBLIC_UPDATE_VERSION
when starting Nuxt app:
export NUXT_PUBLIC_UPDATE_VERSION="1.2.3"
# or
export NUXT_PUBLIC_UPDATE_VERSION=$(git rev-parse --short HEAD)
npx nuxi start
The following defaults are used:
export default defineNuxtConfig({
modules: ["nuxt-update"],
update: {
// Minimum interval between update checks (in seconds).
checkInterval: 60,
// URL path where the current version is published.
path: "/version.json",
},
})