A deployment can be successful while one browser still shows the old page. The usual reason is not mysterious: several caching layers may keep copies of HTML, CSS, JavaScript, images or fonts.
Why refresh is not always a full reload
A normal refresh can still reuse cached resources. That means new HTML can occasionally meet an old JavaScript bundle. A hard refresh, a private window or another browser is a useful comparison before changing the deployment again.
There may be more than one cache
With a CDN the path is origin → edge cache → browser cache. Clearing the browser cannot fix an old edge copy. PWA sites add another layer because a service worker can serve Cache Storage even when the network version has changed.
Why hashed filenames help
Build tools often emit names such as app.8fa2c1.js. When the content changes, the URL changes, which makes it much harder for an old asset to masquerade as the new one.
For mobile failures, the mobile browser debugging guide explains how to inspect service workers and Cache Storage instead of guessing.