Why does my Shopify checkout sometimes freeze, and only work after a refresh?
A checkout that hangs and then loads fine on refresh almost always points to a specific slow or blocked request — here's how to find it instead of just telling customers to reload.
What's going on
A merchant notices that customers occasionally get stuck on checkout — the page hangs, spins, or fails to move to the next step — and that hitting refresh sometimes gets them through. Because it's intermittent and "fixable" by refreshing, it's easy to dismiss, but every customer who hits it and doesn't think to refresh is a lost order.
This kind of intermittent hang is almost never a single obvious bug. It's usually one specific request — a third-party script, a pixel firing on customer events, an app's checkout extension, or occasionally a transient Shopify or payment-gateway blip — that stalls or fails silently, and a refresh either re-fetches that resource successfully or routes around it. Because Shopify's hosted checkout is templated and locked down (script/CSS injection was retired in favor of Checkout UI extensions and the Web Pixels API), the most common causes today are apps adding weight through pixels and extensions rather than raw theme code.
Why it happens
Checkout pulls in more than just Shopify's own code: installed apps can add Web Pixels for tracking, Checkout UI extensions for upsells or messaging, and third-party scripts for chat, reviews, or fraud checks. If any one of these is slow to respond, blocked by a network hiccup, or waiting on a server that's temporarily down, the checkout page can appear to hang even though the core Shopify checkout itself is fine.
A refresh often "fixes" it simply because the retry succeeds where the first attempt didn't, or because the browser serves a cached version of an asset instead of re-fetching a failing one. That's why the symptom looks random: it's rarely the same request failing every time, and it's rarely visible without actually capturing the network traffic while it happens.
Less commonly, the cause is on the customer's side (an ad blocker or extension silently blocking a script Shopify or an app expects to load) or on Shopify's/the payment gateway's side (a brief regional incident). Both of these also "resolve" on refresh without anything on the merchant's store actually changing.
5 ways to fix it
Capture a HAR file while it's actually hanging
Open your browser's DevTools (F12), go to the Network tab, check "Preserve log," and start recording before you load checkout — not after. Walk through checkout until it hangs, then export as HAR (right-click any request > Save all as HAR). Look for requests stuck in "pending" or returning 4xx/5xx status, especially from third-party domains (analytics, chat widgets, review apps, upsell apps). This is the single most useful piece of evidence because it turns "checkout is slow" into "this specific request to this specific domain is stalling," which is what you need to actually fix the cause instead of the symptom.
Rule out the browser itself before blaming Shopify
Reproduce the hang in an incognito/private window with extensions disabled, and ideally on a second device or network. Ad blockers, privacy extensions, and corporate proxies are a very common cause of checkout scripts silently failing to load, and a refresh "fixes" it only because the retry happens to get through or a cached asset loads instead. If the problem disappears in a clean browser profile, the issue is client-side interference, not your store.
Audit what your apps are injecting into checkout
Since Shopify moved checkout.liquid script/CSS injection to Checkout UI extensions and the Web Pixels API (server-side and sandboxed pixel tracking), a poorly built or overloaded app can still slow the page down by loading heavy scripts, firing many pixel events, or making blocking calls. In your Shopify admin, review Settings > Checkout for any customizations and Settings > Customer events for installed pixels. Temporarily disable non-essential pixels/extensions one at a time (in a test order) to see if the hang stops — this isolates which app, if any, is responsible so you can report it to that app's developer or remove it.
Check for a platform-side incident before troubleshooting further
Before spending more time, check status.shopify.com for open incidents affecting checkout or payments in your region, and if you're on Shopify Plus, look at the checkout performance/speed report in your admin. Intermittent, self-resolving slowness that affects many merchants at once is usually a transient Shopify-side or payment-gateway issue rather than something in your store's configuration, and it typically clears on its own within minutes.
Don't train customers to just hit refresh
Refreshing can occasionally recover a stuck checkout by re-fetching a fresh session, but telling customers to "just refresh" as a blanket instruction risks duplicate orders, lost discount codes, or an abandoned cart if they give up first. Once you've identified the actual slow or failing resource from the HAR file, fix or remove it (optimize the app, ask its developer for a fix, or switch to a lighter-weight alternative in that category) rather than relying on refresh as a permanent workaround. If the culprit turns out to be a heavy or poorly optimized app rather than a one-off incident, a lighter-weight, purpose-built alternative in that same app category is usually the more durable fix.
Bottom line
There's no single Shopify setting that causes "refresh sometimes fixes checkout" — it's a symptom, and the fix depends on what a HAR capture and an incognito test actually show. Most cases trace back to a browser extension, a slow or failing third-party script (pixel, chat widget, upsell app) loaded into checkout, or a brief platform-side blip, not something wrong with your theme. Work through the diagnosis in order above before assuming you need new software; if the root cause turns out to be one specific bloated app, replacing it with a lighter, purpose-built app in that category (rather than adding another layer on top) is usually the more durable fix than any performance-audit tool alone.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.