salary.js always serves the current build.
Whether your site picks up a new build automatically depends on how you embedded it.
Two integration modes
Script tag — updates are automatic
If your page loads the widget at runtime:HTML
Bundled — you must redeploy
Some site builders and bundlers copy the widget into your own build output instead of fetching it at runtime. Framer does this, as do npm-based bundlers when you import the module. Your build then serves its own snapshot from your domain, usually under a content-hashed filename such assalary.a1b2c3.mjs.
That snapshot never changes on its own. Rebuild and redeploy to pick up a new version — and remember to do it for every environment, including staging and demo sites.
Which mode am I in?
Open your browser’s developer tools, go to the Network tab, reload the page, and find the calculator script.Which build am I running?
Check thelast-modified response header on the calculator script in the same Network tab. It tells you when the build you are running was published.
If it predates a fix you are expecting, you are on an older copy — either cached in your browser, or baked into your last deploy.
Forcing an update
1
Reload without the cache
A hard reload (
Cmd/Ctrl + Shift + R) makes your browser re-fetch the script. Enough to confirm what the current build does, but it only affects the machine you are sitting at.2
Add a version parameter for your visitors
A hard reload cannot clear your visitors’ caches. To push an update to everyone at once, change the URL by adding any parameter you control:Browsers treat this as a new URL and fetch it fresh. Bump the value whenever you want to guarantee everyone is on the latest build. The widget reads its key from the query string, so extra parameters are safe to add.
HTML
Testing an update before it goes live
Point a staging page at the staging widget to try a build against your own integration first:HTML