iOS Stuck on 'Checking for Update'? Here's the Real Fix
Your iPhone's stuck on 'Checking for Update' when trying to update iOS. Here's the fix that actually works, no fluff.
Yeah, that's annoying as hell. You're trying to update your iPhone to the latest iOS version, and it just sits there spinning on 'Checking for Update' for 20 minutes. You've rebooted it once, maybe twice, and it still won't budge. I've seen this on everything from iPhone 11s to brand new 16 Pros running iOS 17 and 18. Here's the real fix.
The Fix: Force a DNS Change (Yes, Really)
Here's the thing—Apple's update servers can get hammered, or your ISP's DNS is slow to resolve them. The quickest fix is to switch your Wi-Fi DNS to Google or Cloudflare. Don't overthink it.
- Go to Settings > Wi-Fi.
- Tap the blue (i) next to your connected network.
- Scroll down to Configure DNS and tap it.
- Change from Automatic to Manual.
- Delete any existing DNS servers (tap the red minus).
- Tap Add Server and enter
8.8.8.8(Google's DNS). - Add another:
1.1.1.1(Cloudflare's DNS). - Tap Save in the top-right corner.
- Go back to Settings > General > Software Update and try again.
That's it. 9 times out of 10, the update will start downloading within 30 seconds. Had a client last month whose entire print queue died because of this—he'd been stuck for two days. DNS switch fixed it in one minute.
Why That Worked
Apple's update servers use a content delivery network (CDN) that relies on DNS resolution. When your ISP's DNS is slow, overloaded, or just plain dumb, it can't resolve mesu.apple.com (the update server) quickly enough. The iPhone sits there waiting for a response that never comes. Google and Cloudflare's DNS servers are faster and more reliable—they handle millions of queries per second without flinching.
The 'Checking for Update' process does a quick DNS lookup to find the nearest update server. If that lookup times out or takes too long, the spinner just keeps spinning. No error message, no timeout—just that endless loading circle. Switch DNS, and you skip the bottleneck.
Less Common Variations That Still Stink
1. The 'Update Requested' Loop
You tap 'Download and Install', it says 'Update Requested' for a few seconds, then goes back to 'Checking for Update'. Rare, but I've seen it on iPhone 12s running iOS 16. The DNS fix above works here too, but sometimes you need to force restart first: press Volume Up, press Volume Down, hold the Power button until you see the Apple logo. Then do the DNS swap.
2. The 'Unable to Check for Update' Error
This one throws an actual pop-up: 'Unable to Check for Update. An error occurred while checking for a software update.' I've seen it on older iPads (iPad Air 2) and iPhone 8s. Same DNS fix, but also try turning off VPN if you have one running. Some VPNs block Apple's update domains entirely.
3. The 'Software Update Failed' After Download
This is different—the download finishes, but installation fails. If you're hitting that, it's usually a storage issue or a corrupted download. Check your free space: Settings > General > iPhone Storage. Need at least 5-6GB free for a major update. If it's tight, offload some apps or delete old photos. Then restart and try the DNS method again—it forces a fresh download.
Prevention: Keep Your DNS Sane
Honestly, once you switch to Google or Cloudflare DNS, you can leave it that way. It'll speed up all your web browsing, not just updates. I've been running 8.8.8.8 and 1.1.1.1 on my own iPhone for years—never had a 'Checking for Update' hang since.
If you'd rather keep your ISP's DNS (maybe for parental controls or something), just remember this trick when an update gets stuck. Write it on a sticky note: 'DNS swap, then retry.' Saves you from factory resetting your phone every time, which I've seen people do out of frustration. Don't be that person.
One more thing—keep your iPhone's date and time set to automatic. Manual time settings can mess with Apple's certificate validity checks during updates. Settings > General > Date & Time—make sure 'Set Automatically' is on. That's rookie stuff, but I've seen it trip up even seasoned IT guys.
Was this solution helpful?