A library for implementing force update functionality in web applications
npm install @leancodepl/force-updateA library for implementing force update functionality in web applications.
``bash`
npm install @leancodepl/force-updateor
yarn add @leancodepl/force-update
This package provides utilities to monitor application versions and prompt users to refresh when a new version is
available. It includes a Vite plugin for version endpoint creation and utilities for user notification on new version
available.
Sets up version monitoring with customizable callback and polling interval.
Parameters:
- params: ForceUpdateParams - Configuration object for force update listeningparams.onNewVersionAvailable: () => void
- - Callback function triggered when a new version is detectedparams.versionCheckIntervalPeriod?: number
- - Optional polling interval in milliseconds (default: 3 minutes)
Returns: Cleanup function to stop version monitoring
React component that displays a browser prompt when a new version is available.
Parameters:
- props.message?: string - Optional custom message for notification prompt
Returns: React component that handles version checking and user notification
Vite plugin that creates a /version endpoint serving the current app version.
Parameters:
- options: ForceUpdatePluginOptions - Configuration options for the Vite pluginoptions.envVariableName?: string
- - Optional environment variable name (default: 'APP_VERSION')
Returns: Vite plugin instance
`typescript
import { listenOnForceUpdate } from "@leancodepl/force-update"
useEffect(() => {
const cleanup = listenOnForceUpdate({
onNewVersionAvailable: () => {
// Show notification to user or force reload
if (window.confirm("A new version is available. Reload now?")) {
window.location.reload()
}
},
versionCheckIntervalPeriod: 5 60 1000, // Check every 5 minutes (optional)
})
return cleanup
}, [])
`
You can also use component with default behavior - displaying browser prompt with window.confirm.
`typescript
import { ForceUpdateNotification } from "@leancodepl/force-update"
/>
`
Add the plugin to your vite.config.ts:
`typescript
import { defineConfig } from "vite"
import { vitePluginForceUpdate } from "@leancodepl/force-update"
export default defineConfig({
plugins: [vitePluginForceUpdate()],
})
`
Set the APP_VERSION environment variable during build.
1. The Vite plugin reads the APP_VERSION environment variable and creates a /version endpoint that serves thelistenOnForceUpdate
current version. Environment variable name can be overridden.
2. The fetches initial version from the endpoint and then periodically polls it.onNewVersionAvailable` callback.
3. When a version mismatch is detected, it triggers the
4. You can then prompt the user to reload or automatically refresh the page.