Data Refresh Problems
Learn more about widget refresh rates and how to improve them.
Numerics is designed to automatically update your dashboards as frequently as possible. Since Numerics has no servers that store your data, the app makes direct secure connections to the relevant data source to update each of your KPIs. Because of this, the updating frequency of the app is closely related to the app’s lifecycle and various system conditions. Here’s a quick primer on how updates work behind the scene:
Dashboard updates when the Numerics app is active
When active and on screen, Numerics updates each widget on a dashboard every 60 seconds by default. However, many of the services that Numerics connects to impose various kinds of limits to how often an app can make API calls or request data from them. Numerics is pre-programmed with relevant API limiting strategies for each integrated service. Based on these limits and the number of active widgets connecting to the same API, Numerics intelligently schedules the updates to ensure it never exhausts the available API calls to maintain connectivity to the source and prevent access blockage.
Users can always manually force a refresh by tapping on the refresh button in the widget detail view. A manual refresh overrides all limit checking and forces the widget to fetch new data immediately.
Note: when manual refreshes are triggered, incase the API limits have been exhausted already, the widget may go into an error state indicated by an ‘!’ mark at the bottom of the widget and continue to show the previous data for the widget. In such a scenario, Numerics will intelligently re-check for updates when API access resumes and exit the error state for the widget automatically on success.
All custom data integration widgets (JSON, CSV etc.) are not restricted by any rate limiting strategies and will always update each widget every 60 seconds, as long as the app is active and in the foreground of the device.
Numerics immediately syncs any newly received data to iCloud, which in turn sends a push update from the iCloud servers to all other connected devices to update the data for dashboards across all your devices.
Dashboard updates when the Numerics app is in the background
This is where things get a little tricky for apps without servers doing the work for them! Numerics relies on the iOS / tvOS Background Fetch APIs to update your dashboards when in the background. While these native OS APIs designed by Apple are highly optimized to the users device conditions and usage patterns, they significantly limit the app's ability to control the frequency of updates.
When in the background, the OS provides the Numerics app with an ‘opportunity’ to request for updates from services over the network, at times the OS determines based on several factors, including times just before the user is most likely to use Numerics. When this happens, Numerics immediately requests for updates to all widgets that are eligible for updates based on API limits. Numerics goes back to sleep in the background while the OS downloads the data in the background. Once the OS received the data, it wakes Numerics again, this time to process the received data. Numerics processes the data in the background and updates the user via system notifications if enabled and initiates a background sync with iCloud to update other devices.
It is important to note here that the frequency of the ‘opportunity’ to fetch data in the background varies widely based on various conditions, here are a few that we have identified:
Remaining battery
Battery health
Charger plugged in
Wifi availability
Device generation / age
Number of apps fetching data in the background
Number of update requests being made by Numerics each ‘opportunity’
To optimize background updates and reduce background load Numerics only updates widgets in the background that have either of the following switches turned on:
Change Notifications
Show on Apple Watch
The above described flow is a simplified explanation of the background activities performed by Numerics. However, since inception, we have added various enhancements to make the OS provide Numerics with more background fetch opportunities, and we are continuously working on making updates smarter. For example, if a Numerics widget is set as a complication on the Apple Watch, it will attempt to wake the Numerics iOS app in the background every few minutes and request an update for the widget’s data (within API limits of course). This frequency is again computed by the watch OS but is significantly higher than the regular background fetch frequencies.
Improving background updates
If you are not receiving timely updates for your widgets, here are a few things you can do to improve background notifications:
The obvious one: Please re-check that Numerics has permissions to give you Notifications on update. You can check this in device Settings –> Notifications –> Numerics.
Ensure that you have enabled the switch to receive ‘Change Notifications’ for the required widgets.
Have a fewer number of widgets enabled for Change Notifications or Apple Watch. This will ensure that every background update opportunity is used for the most critical widgets.Note: The total number of widgets in the app has no impact on background performance. So you can have as many dashboards and widgets in Numerics you like without adversely affecting performance.
Using Numerics on the Apple Watch improves update performance for Numerics on the iPhone.
Adding Numerics as a favorite app in your Apple Watch Dock, not only lets you easily access it on your watch, it further improves frequency of updates.
Using a Numerics complication on the Apple Watch further improves the frequency of background fetch opportunities for Numerics.
Open the Numerics app often. This tells the OS that you are interested in Numerics and that it should keep it updated!
Updates from some integrated services may be slower than others due to stricter / lower API limits. If you have widgets for different services connected to your Numerics, try enabling updates for widgets in each of them to observe if the API limits are a cause of the lack of updates.
Replacing an ageing device battery often helps to improve background performance.
Use an Apple TV as a Numerics Dashboard Server - This is by far the most reliable way to keep your Numerics updated across all your devices. By keeping Numerics active on your Apple TV, the app will keep your dashboards updated in the most optimal update frequencies and sync the updates using iCloud. This will in turn send a push notification to all your iCloud connected devices to update their Numerics dashboards. This works even if the TV screen is turned off. Just ensure that the setting to “Disable Screensaver” is turned on in Numerics for tvOS. Being a relatively inexpensive and a very low energy consuming device, we find the Apple TV to be the perfect device to perform as a realtime dashboard server for users who value realtime updates.
If the above tips are not helping, please get in touch with us via the ‘Let us know’ section of the relevant widget, This will send the widget’s log as an attachment to us so that we can analyze problems with it.