CDN scriptTag 404

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:

I experience the same issue, and two minutes later the CDN worked again. Seems that from time to time the CDN 404s?

Hey @Philo

Sorry for the late response for this - are you still seeing this happen? This may have been a temporary issue on our side.

Hey @Liam-Shopify

I haven’t seen this anymore or received any reports from merchants so it looks like this has been solved :slight_smile:

Glad to hear Philo!!

@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?

@Liam-Shopify once more a merchant is reporting an issue, and the CDN is returning a 404.

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.