I’ve now had 2 reports from merchants in the past 24 hours that our app was not working. Upon investigation, the extension javascript (we are using the legacy ScriptTag) that is being served was returning a 404. Here’s a screenshot from one of our merchants:
@Liam-Shopify got another report today from a merchant, it did restore itself (while I was investigating the issue) but it basically broke the app for the duration that the script was not found. Any idea why this happens from time to time?
For anyone else who is experiencing this issue. Shopify has completed their research and confirmed the bug and a second one, they are working on a fix, for time being, disabling the cache is the way to go:
What we’ve confirmed
The CDN proxy layer that serves your cached ScriptTag assets has a bug where any brief, transient failure when fetching your asset from the origin — even a momentary network hiccup — causes it to store an HTML error page as the cached response, marked as publicly cacheable for 10 minutes. Once that bad cache entry is written, every visitor to any affected storefront receives that error page in place of your JavaScript file for the full cache duration, even after your origin has fully recovered. This is exactly consistent with the intermittent, self-resolving behaviour you’ve been reporting since April.
Your VPN test from US East was particularly valuable here: it confirmed your origin was healthy and returning the correct file at the very same time the proxy was serving a cached 404 to merchants. The evidence clearly places this bug in the proxy caching layer — not on your side.
A second related bug was also found
Separately, our team identified that the 15-minute cache TTL (max-age=900) you’ve configured on your ScriptTag is never actually being applied. A platform-side encoding bug causes the proxy to silently ignore your requested value and fall back to the 10-minute default every time. This is not something you could have known about or worked around through your app settings — it is a Shopify platform bug, and it is being tracked for a fix on a separate engineering track.
What we recommend right now
Your workaround of setting cache: false on the ScriptTag is the right call and we recommend extending it to all of your remaining merchants immediately. As you’ve already seen with the merchants you’ve updated, this bypasses the caching layer entirely and prevents the issue from occurring. It is the most reliable mitigation available while the platform fix is in progress.