react-version-check
v1.0.8
Published
provide a react component to check your code version. when not latest, forces hard refresh on browser
Downloads
73
Maintainers
Readme
keep your code updated to its latest version!
Sometimes browsers cache websites, thus presenting an old version of them.
The <VersionCheck>
component checks if your version is the latest,
and if not, it forces a hard refresh to fix this.
No more backward compatibility headaches!
usage example
import { VersionCheck } from 'react-version-check';
import packageJson from "../package.json";
export function App() {
return (
<>
<VersionCheck currentVersion={packageJson.version} />
<div>your website</div>
</>
);
}
helper script
To make this work, you will need from time to time (and especially after big changes) to update the version number inside your package.json
---
and you will need a script to run on each build to copy this number from package.json
to public/meta.json
the script:
In the root of your project create a file named update-version.js
with this content:
import fs from "fs";
import packageJson from "./package.json" assert { type: "json" };
const jsonData = JSON.stringify({ version: packageJson.version });
fs.writeFile("./public/meta.json", jsonData, "utf8", function (err) {
if (err) return console.error("An error occurred while writing JSON Object to meta.json:", err);
console.log("meta.json file has been saved with latest version number");
});
running on each build/start:
I recommend running this script on each build/start.
In the package.json
file, inside the scripts
object add those line:
"scripts": {
"update-version": "node update-version",
"start": "npm run update-version && npm start", // you can replace ["npm start"] with whatever start-command you had before
"prebuild": "npm run update-version"
},
To test if this is working, go to package.json
and update the version number.
then, go to your terminal and run:
npm run update-version
Now check if the file public/meta.json
has been updated with this version number.
component props
The configurable props of <VersionCheck>
component:
| name | type | description |
|:--------------:|:---------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| currentVersion
| string
(required) | the version that will be compared against the version on the server. should pass it a value from package.json
|
| serverFilePath
| string
(default: "/meta.json"
) | the name of the file on the server that the component will fetch and take the version from.should be a name of a .json file under public
directory, that contains content like:{"version":"1.0.0"}
|
| dependencies
| any[]
(default: []
) | list of dependencies that will trigger re-checking of the version. when empty, the checking will only happen on first-render |
| logs
| boolean
(default: true
) | when true, the component will print console.log
that explain what it does |
| display
| boolean
(default: true
) | when true, render small text in the corner of the screen (version text / error text / loading text) |
| className
| string
| override the default design with your own custom className |
| style
| React.CSSProperties
| override the default design with your own custom style |
| side
| "left"
or "right"
(default: "left"
) | in which side of the screen should be displayed? |