Why your iPhone widget isn't updating (and how to fix it)
· Updated · Antoni, builder of WidgetAI
You glance at a widget on your Home Screen, see a number that's clearly wrong — a battery reading from two hours ago, a price that hasn't moved since breakfast — and wonder if the app is broken. Usually it isn't. iOS widgets update on rules that are stricter and stranger than most people expect, and once you understand them, a lot of "why won't this refresh" moments start to make sense.
We build a widget app, so we run into these rules every day. Here's how the system actually works, why things look stale, and what you can do about it.
A widget is not a tiny app
The first surprise is that a widget isn't your app running in a little box on the Home Screen. It's a snapshot. iOS asks the app to draw what the widget should look like, keeps that picture, and shows it to you. The app itself isn't awake while you're looking at it.
Apple's framework for this is called WidgetKit, and it works on a timeline. Instead of asking "what does the widget look like right now" every second, iOS asks the app for a batch of snapshots covering the next stretch of time, each stamped with the moment it should appear. A clock widget, for example, can hand over a snapshot for every minute of the next hour in one go. The system files them away and swaps them in on schedule, without waking the app again.
This is a deliberate trade. It's how you can have a dozen widgets on your Home Screen without your battery draining or your phone getting warm. The cost is that widgets are, by design, a little behind. They show a picture that was drawn earlier.
The refresh budget
Widgets can also ask iOS to rebuild their timeline — to come back later and get fresh data. But the system doesn't grant those requests freely. Each app gets a limited number of background refreshes per day, and iOS decides how to spend that budget.
Apple's guidance puts this at roughly 40 to 70 background refreshes a day, depending on how you use the widget. That's not a fixed number you can count on; it's a range the system tunes. Spread across a day, 40 to 70 refreshes works out to somewhere around one every 15 to 40 minutes at best — nowhere near real time. You can read Apple's own explanation in the WidgetKit documentation on keeping a widget up to date.
A few things move that budget up or down:
- How often you actually look at the widget. Widgets you view often get refreshed more generously. One buried on your last Home Screen page gets less.
- Charging and battery level. A plugged-in phone is more willing to spend refreshes than one running low.
- Low Power Mode. When it's on, iOS cuts background work hard, and widget refreshes are some of the first things to go.
So the same widget can feel snappy one afternoon and sluggish the next, and nothing changed in the app. The system simply had a different budget to spend.
Why a "live" value freezes
Here's the trap that catches people most, and it's worth understanding because it explains the weirdest kind of staleness.
Remember that a timeline is a batch of snapshots drawn ahead of time. If a widget shows a value that changes — your battery percentage, a heart rate, a stock price — that value gets frozen into each snapshot at the moment the snapshot is drawn. If the app builds an hour of snapshots and only reads your battery once at the start, every snapshot for that whole hour shows the same battery number. It can look hours old even though the widget is "updating" on schedule, because the picture is current but the data inside it isn't.
The fix is to read the live value fresh for each entry in the timeline and bake it into that snapshot, rather than reading it once and reusing it. It sounds obvious written down, but it's an easy mistake, and it's one we hit and engineered around in our own on-device widgets — battery in particular. (There's a separate wrinkle with battery specifically: iOS only reports it in 5% steps, so even a perfectly fresh reading jumps in chunks. We wrote about that in our iPhone battery widget guide.)
What you can do about a stale widget
If a widget is lagging more than you'd like, a few things genuinely help:
- Check Background App Refresh. Go to Settings, then General, then Background App Refresh, and make sure it's on for the app. With it off, the widget can only update when you open the app.
- Come off Low Power Mode. If your battery's in the yellow and refreshes have slowed to a crawl, that's often why. Low Power Mode throttles exactly this kind of background work.
- Look at the widget more. It sounds silly, but iOS really does refresh widgets you engage with more often. A widget you never look at is one the system deprioritizes.
- Adjust your expectations a little. A widget will lag by design. It's a snapshot on a schedule, not a live dashboard. Even a perfectly built widget can be a few minutes to half an hour behind, and that's the system working as intended — not a bug.
How to refresh a widget on iPhone manually
There's no "refresh" button on a Home Screen widget, but you can nudge one. In rough order of how well they work:
- Open the app the widget belongs to. Most apps, including ours, ask iOS to reload their widget timelines when they come to the foreground. This is the closest thing to a manual refresh, and it doesn't count against the background budget because you triggered it.
- Change something the widget depends on. Editing the widget in the app, changing its settings, or in WidgetAI simply making an edit in chat rebuilds the timeline immediately.
- Remove the widget and add it again. Long-press the widget, choose Remove Widget, then add it back from the widget gallery. iOS asks the app for a brand-new timeline on placement.
- Toggle Background App Refresh off and on for the app, or restart the phone. Blunt, but it clears a stuck timeline.
What does not work: tapping the widget repeatedly, swiping between Home Screen pages, or force-quitting the app. None of those ask iOS for a new timeline.
Can a widget refresh every 30 seconds?
No, and it's worth being blunt about it because several widget apps imply otherwise. Two different things get called "refresh":
- Showing a new pre-rendered snapshot. A clock widget can tick every minute because the app handed iOS sixty snapshots ahead of time, one per minute. That costs nothing at display time. It is why "every minute" exists as an option in WidgetAI: the timeline is built with an entry per minute, so anything the app already knows, like the time or a pre-fetched value, can change that often.
- Fetching new data. Getting a fresh price, a new headline or a current step count requires iOS to wake the app in the background, and that draws on the 40-to-70-a-day budget. Spread evenly that's one fetch every 20 to 35 minutes, and iOS front-loads it towards widgets you look at. A 30-second data refresh would need about 2,900 wakes a day. No app gets that.
So a widget can change every minute, but it can only learn something new a few dozen times a day. If you need a number that is never more than 30 seconds old, a Live Activity, a Lock Screen notification, or simply opening the app is the honest tool for that job. For everything else, set the refresh interval to what the data actually deserves: every minute for a clock, every 5 or 15 minutes for prices and weather, hourly for a quote or a calendar that rarely changes.
How WidgetAI handles it honestly
WidgetAI builds custom iPhone widgets from a chat — you describe what you want and the AI designs it. Because we live inside these constraints, we've tried to be straight about them rather than pretend they don't exist.
A few things we do:
- You pick the refresh interval. For each widget you can choose how often it tries to update, from every minute to hourly. "Every minute" is a target, not a promise — iOS still decides based on your budget — but it tells the system how eager to be.
- We cache connector data on our servers with per-source freshness windows. For internet data like weather, a crypto price, or a stock, the app fetches from us, and we hold a recent value with a freshness window that fits the source. That way a refresh spends its budget on showing you data, not waiting on a slow upstream API.
- On-device signals are baked per entry. For values read from your phone — battery, location, HealthKit and the rest — we read them fresh for each timeline entry so they don't freeze at the value from when the timeline was built.
What we won't do is promise real-time updates. No widget app can, because none of us control the refresh budget — Apple does. Anyone claiming second-by-second live widgets is either misunderstanding the system or hoping you don't. Widgets are a wonderful, glanceable, low-power part of iOS, and they're a little behind on purpose. The honest goal is to make them as fresh as the system allows, and to be clear about the rest. It's also worth knowing the other things iOS widgets can't do before you build one.
FAQ
Why is my widget not updating at all? Most often, Background App Refresh is turned off for the app, or you're in Low Power Mode. Check Settings, then General, then Background App Refresh. If it's on and you're not in Low Power Mode, the widget may just be waiting on its next scheduled refresh.
What's the fastest an iPhone widget can refresh? There's no guaranteed rate. Apple's budget works out to roughly 40 to 70 background refreshes a day, so in practice the best you'll typically see is an update every 15 minutes or so, and often less frequently. Opening the app forces a fresh read on the spot.
Why does my widget show old data even though it looks like it refreshed? This is the frozen-value trap: the snapshot is current but the live number inside it was read once when the timeline was built and never updated. A well-built widget reads the value fresh for each snapshot. It's a common bug, and it's one we specifically designed around.
Does looking at my widget more make it update faster? Yes, to a point. iOS refreshes widgets you engage with more generously than ones you ignore, so a widget you actually use tends to stay fresher.
How do I force a widget to refresh on iPhone? Open the app the widget belongs to. Most apps reload their widgets when they come to the foreground, and in WidgetAI any chat edit rebuilds the widget straight away. If that doesn't help, remove the widget and add it back, which makes iOS request a brand-new timeline.
Can a widget update every 30 seconds? Not with new data. A widget can display pre-rendered snapshots as often as every minute (that's how clocks tick), but fetching fresh data is limited by Apple's background refresh budget of roughly 40 to 70 times a day. Anything that needs to be under a minute old belongs in a Live Activity or the app itself.
WidgetAI is made for iPhone and Mac, and it's available on the App Store. The free plan gives you 1 widget and 10 AI edits a month; Pro lifts those limits as an in-app purchase.