# CrimsonBear: Glucose data on pebble. PebbleKit JS timers suspended on iOS

**URL:** <https://forum.repebble.com/t/crimsonbear-glucose-data-on-pebble-pebblekit-js-timers-suspended-on-ios/1557>\
**Category:** Watchapp/Face Developers Corner\
**Created:** [September 4, 2026, 9:39am UTC](https://forum.repebble.com/t/crimsonbear-glucose-data-on-pebble-pebblekit-js-timers-suspended-on-ios/1557 "2026-09-04T09:39:10Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![dabear](https://avatars.discourse-cdn.com/v4/letter/d/f4b2a3/32.png) [@dabear](https://forum.repebble.com/u/dabear)\
**Post date:** [September 4, 2026, 9:39am UTC](https://forum.repebble.com/t/crimsonbear-glucose-data-on-pebble-pebblekit-js-timers-suspended-on-ios/1557/1 "2026-09-04T09:39:10Z")

</div>

Hi. I’m developing CrimsonBear ( [GitHub - dabear/CrimsonBearPebbleWatchFace · GitHub](https://github.com/dabear/CrimsonBearPebbleWatchFace) ), a Pebble CGM watchface. Its PebbleKit JS phone companion polls Nightscout—a glucose data source—roughly every five minutes and sends new readings to the watch.

I instrumented an adaptive setTimeout and an independent 30-second setInterval. With Developer Connection enabled, both fired within 3–8 ms. With it disabled and the Pebble app backgrounded on iOS:

- setTimeout fired 259 seconds late.
- setInterval fired 477 seconds late.
- Both resumed at essentially the same moment.
- No fetch, AppMessage, connectivity, or companion-restart errors occurred.

This suggests to me that iOS suspends the entire PKJS runtime while the Pebble app is backgrounded.

Has anyone found a reliable way to perform five-minute background polling from PebbleKit JS on iOS, or must it be driven by watch-originated AppMessages or native iOS background scheduling?

The watch has a fallback that requests fresh data from the phone when updates stop for some additional time. It works, but I’d prefer not to rely on frequent watch-originated AppMessages because of their potential battery impact. I currently get about 9–10 days of watch runtime.

---

<div class="post-metadata">

**Author:** ![Flynn](https://yyz1.discourse-cdn.com/flex033/user_avatar/forum.repebble.com/flynn/32/73_2.png) [@Flynn](https://forum.repebble.com/u/Flynn)\
**Post date:** [September 4, 2026, 5:48pm UTC](https://forum.repebble.com/t/crimsonbear-glucose-data-on-pebble-pebblekit-js-timers-suspended-on-ios/1557/2 "2026-09-04T17:48:06Z")

</div>

> [@dabear](#):
>
> It works, but I’d prefer not to rely on frequent watch-originated AppMessages because of their potential battery impact

You’ve verified that it actually impacts the battery?
