<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://forums.garmin.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Connect IQ App Development Discussion - Recent Threads</title><link>https://forums.garmin.com/developer/connect-iq/f/discussion</link><description>A place to raise Connect IQ API questions, Connect IQ SDK questions, and ask general questions about Connect IQ app development.</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 11 Aug 2026 17:17:16 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://forums.garmin.com/developer/connect-iq/f/discussion" /><item><title>EGym</title><link>https://forums.garmin.com/thread/441717?ContentTypeID=0</link><pubDate>Tue, 11 Aug 2026 17:17:16 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:24055116-b5f4-443e-8dcb-ad805750d5a4</guid><dc:creator>chashob</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/441717?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441717/egym/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi as EGym equipment is becoming more common place in gyms, are there any plans to add the equipment to the exercise options on the strength training section&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Tinymetrix, install/crash analytics for Connect IQ apps (client SDK now open source)</title><link>https://forums.garmin.com/thread/441580?ContentTypeID=0</link><pubDate>Sun, 09 Aug 2026 17:43:18 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:6560a7fc-2f78-44f7-8890-1271de0d84b9</guid><dc:creator>testica</dc:creator><slash:comments>2</slash:comments><comments>https://forums.garmin.com/thread/441580?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441580/tinymetrix-install-crash-analytics-for-connect-iq-apps-client-sdk-now-open-source/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;The problem I kept hitting as a&amp;nbsp;Garmin&amp;nbsp;dev: once an app ships, you&amp;#39;re mostly flying blind. The store page gives you a rounded install count and nothing else, no breakdown by device, version or country, no idea if a firmware update broke something for one watch model. Garmin does have ERA for crash reporting, but it&amp;#39;s coarse, you get a ciq_log file per crash with no easy way to correlate it with your own app state, no aggregation across users, and no visibility into installs or usage at all. iOS and Android devs have had Firebase and App Store Connect for over a decade. We&amp;#39;ve mostly just gotten used to not having anything close to that.&lt;/p&gt;
&lt;p&gt;So I built &lt;a href="https://tinymetrix.com/"&gt;Tinymetrix&lt;/a&gt;. It&amp;#39;s a small SDK (a Connect IQ barrel) you add to your project that tracks installs, active devices, breakdown by device/version/country, and logs crashes and errors with your own context attached, custom events, user properties, whatever you want tagged onto an error before it happens, not just a raw stack trace after the fact. Metrics get sent to Tinymetrix&amp;#39;s backend, and you view them in a dashboard once you sign up and register your app there.&lt;/p&gt;
&lt;p&gt;Integration, roughly:&lt;/p&gt;
&lt;p&gt;1. Create an account on tinymetrix.com and register your app to get a token.&lt;/p&gt;
&lt;p&gt;2. Download the barrel and add it as a dependency in your jungle file.&lt;/p&gt;
&lt;p&gt;3. Initialize it in your app&amp;#39;s entry point with that token, and optionally call logInfo/logError/track wherever you want extra visibility.&lt;/p&gt;
&lt;p&gt;The part I take most seriously is the size cost, since I know background memory is tight on older devices. Current measured overhead is roughly 10 to 13 KB depending on how old/constrained the device is, measured per device rather than guessed. Happy to share the numbers for specific devices if anyone wants to check before adding it.&lt;/p&gt;
&lt;p&gt;The client SDK, the actual barrel that runs inside your app, is open source: &lt;a href="https://github.com/tinymetrix/client"&gt;github.com/tinymetrix/client&lt;/a&gt; (Apache 2.0). If you want to take a look at the code, report an issue, or contribute, it&amp;#39;s all there. Two example apps in there too (a watch face and a widget) if you&amp;#39;d rather see it wired up than read through the whole thing.&lt;/p&gt;
&lt;p&gt;There&amp;#39;s a free plan and it&amp;#39;s meant to stay genuinely usable, not a crippled trial, the goal is every Garmin dev having a real baseline of analytics to improve their apps, not just the ones who can pay. Running the backend costs money though, so extra features and longer data retention are what&amp;#39;s paid, not the basics.&lt;/p&gt;
&lt;p&gt;Installs and crashes solve the visibility problem, but they&amp;#39;re not the only thing missing here. No easy way to sell anything in-app, no way to see how your app is actually doing in the store over time beyond a snapshot, no way to fix a bad default without a full review cycle. I have loose ideas about some of that, nothing built yet, curious if any of it would actually be useful to you, or if the real gap for you is something else entirely.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Genuinely want feedback on this, and to hear what problems you&amp;#39;re running into that this doesn&amp;#39;t solve, that&amp;#39;s what actually shapes what gets built next. And if cost ends up being the reason you don&amp;#39;t try it, say so, I&amp;#39;d rather sort you out a code than have that be the blocker.&lt;/p&gt;
&lt;p&gt;What&amp;#39;s the thing that would actually stop you from adding something like this to your app? That kind of pushback is more useful to me than anything else in this post, so tell me if I&amp;#39;m wrong about parts of this too.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Hike recorded by app has shorter distance than actual</title><link>https://forums.garmin.com/thread/441569?ContentTypeID=0</link><pubDate>Sun, 09 Aug 2026 12:59:39 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:b1d53786-1dad-4b53-bb8e-5466a8c58abc</guid><dc:creator>flocsy&amp;#129312;</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/441569?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441569/hike-recorded-by-app-has-shorter-distance-than-actual/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Recently I started to get reports about the Hiker App recording shorter distance than the actual. Finally I could communicate with a user who experienced this on their Vivoactive 5 and they sent me the link to their activity. The records shows distance as 5.1miles while the user claims it was 6.67miles. Looking at it on the Garmin Connect website this is what I see:&lt;/p&gt;
&lt;p&gt;1. When looking at the graphs and the map &amp;quot;by Time&amp;quot; they all look right *. The map has a round route, and the elevation climbs up then back to the same elevation where it started, etc.&lt;/p&gt;
&lt;p&gt;2. When I switch to &amp;quot;by DIstance&amp;quot;, then the graphs get &amp;quot;cropped&amp;quot;. When I follow them and look at the map I can see the pointer on the map going on the path, and then stops in the middle. All the graphs (HR, pace, cadence, etc) are the same.&lt;/p&gt;
&lt;p&gt;*) So all the graphs in the &amp;quot;by Time&amp;quot; view have 2 hours 30 minutes &amp;quot;width&amp;quot;, the only interesting thing I can see when looking &amp;quot;by Time&amp;quot; is that around the same point where the graphs end in the &amp;quot;by Distance&amp;quot; view, the graphs on the &amp;quot;by Time&amp;quot; view are a bit unstable. There&amp;#39;s a 12 minute section where the pace has some gaps, the cadence has some more dots above and under the &amp;quot;average&amp;quot;. I can even see from the &amp;quot;GPS accuracy&amp;quot; graph that the accuracy was 4 for the whole 2:30, even during those 12 minutes.&lt;/p&gt;
&lt;p&gt;So it looks like the watch did record the data, even the GPS coordinates look correct, it&amp;#39;s on the path, the sensors did record data for most of the 2h30m (the last half an hour was totally normal on all of them) but somehow the distance reported by the watch misses the last ~40 minutes.&lt;/p&gt;
&lt;p&gt;My app does have experimental &amp;quot;auto pause&amp;quot;, but it&amp;#39;s disabled for this user, and even if that would kick in it would have a similar effect on the recorded data as stopping the activity, and then 12 minutes later resuming it (it uses session.stop(), session.start()), so I rule that or any related possible bug out because if that would happen then we wouldn&amp;#39;t see the graphs during the &amp;quot;paused&amp;quot; period.&lt;/p&gt;
&lt;p&gt;Did anyone ever got similar reports? Any idea if this can be somehow fixed by me?&lt;/p&gt;
&lt;p&gt;All I can think is that there might be some Garmin bug, as my app doesn&amp;#39;t have anything to do with the distance calculation, recording, it&amp;#39;s all being done by the watch.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>How to param connectIq on smartphone</title><link>https://forums.garmin.com/thread/441563?ContentTypeID=0</link><pubDate>Sun, 09 Aug 2026 10:39:59 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:99de1cc2-1297-4ffc-9d2c-f63ee8d0c011</guid><dc:creator>Baptou_250</dc:creator><slash:comments>1</slash:comments><comments>https://forums.garmin.com/thread/441563?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441563/how-to-param-connectiq-on-smartphone/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello Everyone&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;from a couple of week, I developp my own ConnectIq App&amp;nbsp;intended for my old Fenix ​​5.&lt;/p&gt;
&lt;p&gt;I would like Know How I can param my app from my smartphone&lt;/p&gt;
&lt;p&gt;I have build the ApplicationStorage sample but I havent the button &amp;quot;Parameters&amp;quot; on my smartphone&lt;/p&gt;
&lt;p&gt;Anyone can help me ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Has anyone been able to map strength exercises to Garmin Connect?</title><link>https://forums.garmin.com/thread/441539?ContentTypeID=0</link><pubDate>Sat, 08 Aug 2026 15:45:02 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:d8074e2b-32ae-40c0-a908-94ec416d245f</guid><dc:creator>jpcams</dc:creator><slash:comments>4</slash:comments><comments>https://forums.garmin.com/thread/441539?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441539/has-anyone-been-able-to-map-strength-exercises-to-garmin-connect/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;We&amp;rsquo;re in the process of building a strength training coach. We&amp;rsquo;ve managed to sync a workout to the watch and&amp;rsquo;s the activity as a strength training activity in Connect. But we have not been able to get the exercises, sets &amp;amp; reps along with set times into Garmin. We push the data but it comes up blank.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Heart rate and other stuff appear but come across as 1 exercise only. When there could be 4+ exercises in someone&amp;rsquo;s routine.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m curious if anyone has any experience and what the outcome was if you were successful.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;cheers!&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Face It – option to hide data field icons</title><link>https://forums.garmin.com/thread/441497?ContentTypeID=0</link><pubDate>Fri, 07 Aug 2026 16:28:07 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:f0601382-72c1-4bf2-add2-e93b81a19c31</guid><dc:creator>4487734</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/441497?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441497/face-it-option-to-hide-data-field-icons/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Add an option to hide the icon/symbol displayed next to data fields such as temperature, battery, steps, etc., while keeping the actual value visible.&lt;/p&gt;
&lt;p&gt;This would allow users to create much cleaner and more minimalist watch faces.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Connect Developer Program — what should a solo developer do while applications are paused?</title><link>https://forums.garmin.com/thread/441459?ContentTypeID=0</link><pubDate>Fri, 07 Aug 2026 02:41:45 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:eed52cc9-c890-4c6e-92ee-aa4b979b0ee3</guid><dc:creator>5953788</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/441459?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441459/connect-developer-program-what-should-a-solo-developer-do-while-applications-are-paused/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p class="p1"&gt;&lt;span class="s1"&gt;The Connect Developer Program access form has been removed, and a team member wrote here that new API access requests are paused with no projected reopening date:&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s2"&gt;&lt;a href="https://forums.garmin.com/developer/connect-iq/f/discussion/434761/apply-for-connect-developer-program-access-request-form-down"&gt;https://forums.garmin.com/developer/connect-iq/f/discussion/434761/apply-for-connect-developer-program-access-request-form-down&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;I build debrief (debrief.fit), an AI training-analysis app for runners. I want one-way Activity API sync: FIT files, each athlete&amp;#39;s own data, nothing else.&lt;/span&gt;&lt;/p&gt;
&lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;Three questions:&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;1. Is there a queue or waitlist a developer can join?&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;2. Is there another application channel while the form is down?&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;3. When the program reopens, will it be announced anywhere besides &lt;a href="http://developer.garmin.com/"&gt;&lt;span class="s2"&gt;developer.garmin.com&lt;/span&gt;&lt;/a&gt;?&lt;/span&gt;&lt;/p&gt;
&lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;There&amp;#39;s no public forum for the program itself, so I&amp;#39;m asking here.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Sub Second Flashing Graphic</title><link>https://forums.garmin.com/thread/441432?ContentTypeID=0</link><pubDate>Thu, 06 Aug 2026 15:09:16 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:18524288-3359-42bb-b1ea-65f78bb03529</guid><dc:creator>DaveBrillhart</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/441432?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441432/sub-second-flashing-graphic/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Is there a clever way to flash someone on screen in a datafield for less than a second. Say 300ms or so? onUpdate() fires approx once a second. But maybe some kind of animated GIF that is rendered once a second but only displays for a fraction of a second? I doubt that&amp;#39;ll work. But there might be a way.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Sound on datafield stopped working on 1050</title><link>https://forums.garmin.com/thread/441279?ContentTypeID=0</link><pubDate>Tue, 04 Aug 2026 07:37:36 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:377f725e-bc2a-4658-b4b1-fea46454e895</guid><dc:creator>BLACKEND</dc:creator><slash:comments>6</slash:comments><comments>https://forums.garmin.com/thread/441279?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441279/sound-on-datafield-stopped-working-on-1050/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p class="PDq2pG_selectionAnchorContainer" data-start="96" data-end="108"&gt;Hi everyone,&lt;span class="PDq2pG_selectionAnchor"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-start="110" data-end="296"&gt;I&amp;#39;m using the code below to play an alarm sound (and display an alert) when it&amp;#39;s time for the rider to eat or drink in my Connect IQ data field for &lt;strong data-start="258" data-end="271"&gt;CrankBite&lt;/strong&gt; (&lt;a class="decorated-link" href="https://crankbite.com" target="_new" data-start="273" data-end="294"&gt;https://crankbite.com&lt;/a&gt;).&lt;/p&gt;
&lt;div class="pointer-events-none absolute inset-x-4 top-12 bottom-4"&gt;
&lt;div class="pointer-events-none sticky z-40 shrink-0 z-1!"&gt;
&lt;div class="sticky bg-token-border-light"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="relative"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class=""&gt;
&lt;div class="relative"&gt;
&lt;div class=""&gt;
&lt;div class="relative z-0 flex max-w-full"&gt;
&lt;div id="code-block-viewer" dir="ltr"&gt;
&lt;div class="cm-scroller"&gt;
&lt;pre class="cm-content q9tKkq_readonly m-0"&gt;&lt;code&gt;&lt;span&gt;if (alarmSound) {
    if (!runningtimer.equals(storedTime)) {
        Attention.playTone(Attention.TONE_CANARY);
    }
}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p class="PDq2pG_selectionAnchorContainer" data-start="435" data-end="663"&gt;This has been working fine for a long time, but it suddenly stopped working on my &lt;strong data-start="517" data-end="530"&gt;Edge 1050&lt;/strong&gt;. The code still works correctly in the Connect IQ simulator, and the visual alert is displayed on the device, but there is no sound.&lt;span class="PDq2pG_selectionAnchor"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-start="665" data-end="783"&gt;I&amp;#39;m fairly confident that all sound settings are enabled on the Edge 1050, and even Garmin&amp;#39;s own alert popup is shown.&lt;/p&gt;
&lt;p data-start="785" data-end="898"&gt;The only thing that has changed recently is a firmware update, so I&amp;#39;m wondering if this could be related to that.&lt;/p&gt;
&lt;p data-start="900" data-end="1022"&gt;Has anyone else experienced this, or is there anything that has changed regarding &lt;code data-start="982" data-end="1004"&gt;Attention.playTone()&lt;/code&gt; on the Edge 1050?&lt;/p&gt;
&lt;p data-start="1024" data-end="1063"&gt;Any ideas would be greatly appreciated!&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Garmin Log File Generator</title><link>https://forums.garmin.com/thread/441250?ContentTypeID=0</link><pubDate>Mon, 03 Aug 2026 17:49:41 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:d841039e-bd1f-45ea-9ded-7da1be0e3954</guid><dc:creator>DaveBrillhart</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/441250?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441250/garmin-log-file-generator/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This is a great tool I developed to help me quickly list the CIQ App names and the associated LOG files you need to use if you want to capture app console messages. It works on Windows systems, for Garmin devices that mount as MTP or older removable drive letter type mounts. It doesn&amp;#39;t work for Mac or Linux system - but that would be easy to do. Here is the Users Guide and python script....&lt;/p&gt;
&lt;p&gt;&lt;a href="https://drive.google.com/drive/folders/1txPC-6UvRWUE6UDn_oa2Ru_FP7khvLq8?usp=drive_link"&gt;https://drive.google.com/drive/folders/1txPC-6UvRWUE6UDn_oa2Ru_FP7khvLq8?usp=drive_link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And an example I just ran on my system:&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/12/pastedimage1785779363318v1.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Historical Data / backfill endpoint returns 412 — HISTORICAL_DATA_EXPORT required</title><link>https://forums.garmin.com/thread/441197?ContentTypeID=0</link><pubDate>Mon, 03 Aug 2026 06:14:47 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:9bc30379-dab4-4eed-8596-cd60d3de35f4</guid><dc:creator>BartekStrozek</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/441197?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441197/historical-data-backfill-endpoint-returns-412-historical_data_export-required/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr"&gt;Does anyone know how to request/enable the Historical Data permission for an app &amp;mdash; is this available at the Evaluation tier, or does it require Production approval or a manual step on Garmin&amp;#39;s end?&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr"&gt;Requesting historical activity data via the backfill endpoint returns&lt;code&gt;&amp;nbsp; &amp;quot;&lt;/code&gt;&lt;code&gt;412 - Access denied for xxxxxxx required HISTORICAL_DATA_EXPORT&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr"&gt;Per Garmin&amp;#39;s support documentation on connected third-party apps, the &amp;quot;Historical Data&amp;quot; sharing toggle is off by default and not all third-party apps are compatible with this feature. My app appears to fall into that category: on my personal Garmin Connect account&amp;#39;s connected-apps settings, another connected app (Decathlon) shows a second toggle for &amp;quot;Historical Data&amp;quot; alongside &amp;quot;Activities,&amp;quot; but my my app&amp;nbsp; only shows the single &amp;quot;Activities&amp;quot; toggle &amp;mdash; Historical Data doesn&amp;#39;t appear as an option for my app at all.&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr"&gt;I&amp;#39;ve checked both the Endpoint Configuration and API Configuration pages in the developer portal and found no setting to enable this.&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr"&gt;&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr"&gt;Thanks!&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr"&gt;Bart&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>GPS Accuracy</title><link>https://forums.garmin.com/thread/441119?ContentTypeID=0</link><pubDate>Sat, 01 Aug 2026 14:08:00 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:998b9eb0-708c-4eac-a7c3-6a1c32c2c177</guid><dc:creator>DaveBrillhart</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/441119?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/441119/gps-accuracy/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Cool!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/12/pastedimage1785593224995v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Gemini: I have two Garmin devices. Here are the raw GPS coordinates from the same timestamps. How far apart are these?&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-path-to-node="14"&gt;Summary&lt;/h2&gt;
&lt;p data-path-to-node="15"&gt;Across this 4-second sample, the &lt;b data-path-to-node="15" data-index-in-node="33"&gt;EPIX Pro Gen 2&lt;/b&gt; and &lt;b data-path-to-node="15" data-index-in-node="52"&gt;Edge 1050&lt;/b&gt; were separated by an average of &lt;b data-path-to-node="15" data-index-in-node="94"&gt;1.29 meters&lt;/b&gt; (&lt;b data-path-to-node="15" data-index-in-node="107"&gt;4.23 feet&lt;/b&gt;), converging slightly from &lt;b data-path-to-node="15" data-index-in-node="144"&gt;1.68 m&lt;/b&gt; down to &lt;b data-path-to-node="15" data-index-in-node="159"&gt;1.06 m&lt;/b&gt;. This level of delta is well within standard multi-band GNSS accuracy offset when mounting one device on the handlebar and wearing the other on the wrist.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Log prints on Watches</title><link>https://forums.garmin.com/thread/440834?ContentTypeID=0</link><pubDate>Tue, 28 Jul 2026 16:26:19 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:a8320205-31fa-480d-9194-e418144de05c</guid><dc:creator>DaveBrillhart</dc:creator><slash:comments>1</slash:comments><comments>https://forums.garmin.com/thread/440834?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440834/log-prints-on-watches/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Interesting inconsistency.... Just FYI. Easy workaround putting it in the STOP method.&lt;/p&gt;
&lt;p&gt;For my EDGE devices, I can write out a final set of diagnostics to a LOG file in the onTimerReset() call, once you hit STOP and then either SAVE or DISCARD.&lt;/p&gt;
&lt;p&gt;That wasn&amp;#39;t happening on my EPIX PRO GEN2 watch. So I had to do that in onTimerStop(). Nothing was written to the LOG from the println statements in onTimerReset().&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>App communication with watch</title><link>https://forums.garmin.com/thread/440779?ContentTypeID=0</link><pubDate>Tue, 28 Jul 2026 00:37:05 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:d06fedbc-126f-46a2-aced-83e419b7113b</guid><dc:creator>Greg keene</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/440779?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440779/app-communication-with-watch/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;TITLE:&lt;br /&gt;iOS companion: device returns from getConnectedDevices but reports NOT_PAIRED, getApplicationInfo says NOT_INSTALLED, and every Communications.transmit() hits onError&lt;/p&gt;
&lt;p&gt;BOARD:&lt;br /&gt;Connect IQ &amp;gt; Connect IQ App Development Discussion&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;SETUP&lt;/p&gt;
&lt;p&gt;Watch: Forerunner 245 Music (fr245m), firmware current&lt;br /&gt;SDK: Connect IQ 9.2.0 on Windows, building with the monkeyc CLI (the VS Code&lt;br /&gt;extension is unusable for me - CIQQA-3791)&lt;br /&gt;Watch app: device app (type=&amp;quot;watch-app&amp;quot;), manifest declares Positioning and&lt;br /&gt;Communications permissions and lists fr245m&lt;br /&gt;Companion app: iOS, React Native / Expo, using the community wrapper&lt;br /&gt;react-native-connect-iq-mobile-sdk over the official iOS Mobile SDK&lt;br /&gt;Distribution: the watch app is uploaded to the Connect IQ Store as a beta app&lt;br /&gt;and installed on the watch through the Connect IQ mobile app (not sideloaded).&lt;br /&gt;The manifest appId and the store appId match.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;WHAT WORKS&lt;/p&gt;
&lt;p&gt;The AppDelegate openURL hook is wired up and confirmed firing. Garmin Connect&lt;br /&gt;returns a well-formed callback, for example:&lt;/p&gt;
&lt;p&gt;myscheme://device-select-resp?ciqApp=Connect&amp;amp;ciqBundle=com.garmin.connect.mobile&lt;br /&gt;&amp;amp;ciqSdkVersion=10000&amp;amp;d0ID=&amp;lt;uuid&amp;gt;&amp;amp;d0Model=Forerunner%20245%20Music&lt;br /&gt;&amp;amp;d0Name=Forerunner%20245%20Music&amp;amp;d0PartNumber=006-B3077-00&lt;/p&gt;
&lt;p&gt;getConnectedDevices() returns exactly one device with the correct friendlyName&lt;br /&gt;(&amp;quot;Forerunner 245 Music&amp;quot;).&lt;br /&gt;setDevice() on that returned object succeeds.&lt;br /&gt;registerForAppMessages(appId) resolves without error.&lt;br /&gt;The watch and phone are paired and connected normally. Garmin Connect Mobile and&lt;br /&gt;the Connect IQ app both show the watch as Connected, syncing works, and the&lt;br /&gt;watch&amp;#39;s &amp;quot;Find My Phone&amp;quot; successfully makes the phone ring - so the BLE link and&lt;br /&gt;the device-level pairing are clearly healthy.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;WHAT FAILS&lt;/p&gt;
&lt;p&gt;1. The device status callback reports NOT_PAIRED for that device ID (the same&lt;br /&gt; UUID that came back in the d0ID param).&lt;br /&gt;2. getApplicationInfo(appId) reports {&amp;quot;status&amp;quot;:&amp;quot;NOT_INSTALLED&amp;quot;,&amp;quot;version&amp;quot;:&amp;quot;0&amp;quot;},&lt;br /&gt; even though the app is installed via the store and visibly runs on the watch.&lt;br /&gt;3. On the watch, Communications.transmit(payload, null, listener) always lands in&lt;br /&gt; ConnectionListener.onError(). Confirmed on-device by drawing the result on the&lt;br /&gt; watch screen, since System.println isn&amp;#39;t visible on real hardware.&lt;br /&gt;4. No message is ever delivered to the companion app&amp;#39;s message listener.&lt;/p&gt;
&lt;p&gt;One other oddity: in the Connect IQ mobile app, &amp;quot;My Device Apps&amp;quot; showed a count&lt;br /&gt;of 1 for this watch while rendering an empty list.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;CONTROL TEST - GARMIN&amp;#39;S OWN COMM SAMPLE FAILS THE SAME WAY&lt;/p&gt;
&lt;p&gt;To check whether my watch code was at fault, I built the SDK&amp;#39;s own Comm sample&lt;br /&gt;(added fr245m to its products list, no other changes), sideloaded it, and pointed&lt;br /&gt;my companion app&amp;#39;s registerForAppMessages at the Comm sample&amp;#39;s own app id&lt;br /&gt;(a3421feed289106a538cb9547ab12095).&lt;/p&gt;
&lt;p&gt;I sent &amp;quot;hello world&amp;quot; from the Comm sample&amp;#39;s Send menu on the watch. Nothing&lt;br /&gt;arrived at the companion app. getApplicationInfo for the Comm sample&amp;#39;s app id&lt;br /&gt;also returns NOT_INSTALLED, and the device still reports NOT_PAIRED.&lt;/p&gt;
&lt;p&gt;So Garmin&amp;#39;s own reference watch app behaves identically to mine, which seems to&lt;br /&gt;rule out my watch-side code.&lt;/p&gt;
&lt;p&gt;I can&amp;#39;t run Garmin&amp;#39;s iOS example companion app to complete the isolation - no Mac&lt;br /&gt;or Xcode available - which is why I&amp;#39;m asking here.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;ALREADY RULED OUT&lt;/p&gt;
&lt;p&gt;- Registering for app messages with an empty-string appId - no effect&lt;br /&gt;- Sideload vs store install - same behavior either way&lt;br /&gt;- appId mismatch - manifest appId and store appId now match; also tried the phone&lt;br /&gt; side registering an older appId to match an older build&lt;br /&gt;- App id format - tried both a dashed GUID and a conventional undashed 32-hex id&lt;br /&gt; (including Garmin&amp;#39;s own sample id); identical results&lt;br /&gt;- Handing setDevice() a hand-constructed device object vs. the object returned by&lt;br /&gt; getConnectedDevices() - same result either way. Note the returned object&amp;#39;s&lt;br /&gt; status field comes back undefined through the wrapper.&lt;br /&gt;- Call ordering - re-registered the device-event and app-message listeners&lt;br /&gt; immediately after setDevice(), in case registerForDeviceEvents was being called&lt;br /&gt; before a device existed. No change.&lt;br /&gt;- Companion app backgrounded - the app is open and in the foreground during tests&lt;br /&gt;- Bluetooth range or connection - the watch is connected and syncing throughout&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;QUESTIONS&lt;/p&gt;
&lt;p&gt;What causes a device to report NOT_PAIRED when it was just returned by the device&lt;br /&gt;selection flow, and is that status the reason transmit() is refused? My working&lt;br /&gt;assumption is that everything else here (NOT_INSTALLED, the refused transmits,&lt;br /&gt;the empty app list) is downstream of that one status, since an invalid device&lt;br /&gt;can&amp;#39;t be queried about apps or routed messages.&lt;/p&gt;
&lt;p&gt;Is there a registration step between setDevice() and registerForAppMessages()&lt;br /&gt;that I&amp;#39;m missing on iOS?&lt;/p&gt;
&lt;p&gt;Is getApplicationInfo expected to return NOT_INSTALLED for a beta store app that&lt;br /&gt;is installed on the device? If beta apps stay permanently &amp;quot;pending&amp;quot;, does that&lt;br /&gt;block app-message routing?&lt;/p&gt;
&lt;p&gt;Happy to provide logs or put together a minimal repro.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Watch LOG file Generator</title><link>https://forums.garmin.com/thread/440608?ContentTypeID=0</link><pubDate>Sat, 25 Jul 2026 22:09:20 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:ed442cd8-5f80-43b6-91b5-c808a370b96c</guid><dc:creator>DaveBrillhart</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/440608?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440608/watch-log-file-generator/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;My prompts to Gemini.&lt;/p&gt;
&lt;p&gt;I also loaded my GRADE CIQ code into Claude and it came up with a bunch of optimizations. I then gave it screenshots of the FIT GRADE plot with elevaton and speed, and it found additional rewrites. It now works SO well.&lt;/p&gt;
&lt;p&gt;Man how did we survive before AI!? lol&lt;/p&gt;
&lt;p&gt;I knew the answer to the first prompt but sent that for context to start the process...&lt;/p&gt;
&lt;p&gt;------&lt;/p&gt;
&lt;p&gt;Hey Gemini - I have a Garmin Epix Pro Gen 2 watch. I want to create LOG files so my CIQ applications can write diagnostic console print messages. But when I connect my watch to my Windows desktop via USB, I can&amp;#39;t find the PRG files, like I can on my Garmin EDGE cycling computer.&lt;br /&gt;...&lt;br /&gt;Ok, can you write a Python script that automatically scans the GarminDevice.xml file and generates a set of TXT files I can load on my watch to capture the messages from each of those CIQ apps?&lt;br /&gt;...&lt;br /&gt;Perfect. I want to click on this Python script from File Explorer so it runs in a command windows. It will ask me to confirm that I&amp;#39;ve copied the latest GarminDevice.xml file from the watch to the folder where this is run from. If I acknowledge and continue, it should warn me if the file is missing. If the file is there, it should list out all the CIQ Apps it finds and the LOG files it creates. And the command window should not close until I hit RETURN in the window.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/12/pastedimage1785016997345v1.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Is it possible to know whether Battery Saver is enabled?</title><link>https://forums.garmin.com/thread/440606?ContentTypeID=0</link><pubDate>Sat, 25 Jul 2026 20:55:59 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:002db843-8abc-4da7-b380-c6d369e7f1a9</guid><dc:creator>Olesh</dc:creator><slash:comments>1</slash:comments><comments>https://forums.garmin.com/thread/440606?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440606/is-it-possible-to-know-whether-battery-saver-is-enabled/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Basically just trying to get the status of the battery saver mode to trigger my code appropriately, but I can&amp;#39;t find the needed method to get that...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>No Negative Values in FIT Plot</title><link>https://forums.garmin.com/thread/440564?ContentTypeID=0</link><pubDate>Sat, 25 Jul 2026 01:58:32 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:b6bcb9b9-3111-449d-aa4a-8e470897e1c0</guid><dc:creator>DaveBrillhart</dc:creator><slash:comments>4</slash:comments><comments>https://forums.garmin.com/thread/440564?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440564/no-negative-values-in-fit-plot/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This is new. My GRADE field properly calculates and even displays mGRADE as positive (climbs) and negative values (descents) on screen. And in the FIT file I&amp;#39;m seeing the valid pos/neg GRADE values. My createField is set to FLOAT.&lt;/p&gt;
&lt;p&gt;But the GRADE plot in Garmin Connect web doesn&amp;#39;t render the negative GRADES.&lt;/p&gt;
&lt;p&gt;Wow - ok just for fun I just checked the same activity in Garmin Connect Mobile (iPhone) and it does show the negative grades. So it is just a GC Web bug I guess.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/12/pastedimage1784944350711v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/12/pastedimage1784944700949v4.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Upload an app</title><link>https://forums.garmin.com/thread/440491?ContentTypeID=0</link><pubDate>Fri, 24 Jul 2026 04:57:25 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:b60374ab-ec41-4a49-9615-54157bea9377</guid><dc:creator>Kepka</dc:creator><slash:comments>1</slash:comments><comments>https://forums.garmin.com/thread/440491?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440491/upload-an-app/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello everyone,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;For the second day in a row, I haven&amp;rsquo;t been able to upload my app to the Garmin Store. It keeps saying there are problems with the servers and so on, but I can still update my existing apps.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Is anyone else experiencing the same issue, or is it just me?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Proposal to add a feature</title><link>https://forums.garmin.com/thread/440406?ContentTypeID=0</link><pubDate>Wed, 22 Jul 2026 22:35:21 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:79924654-1bd8-4000-afe2-80bb03f0f45a</guid><dc:creator>3841043</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/440406?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440406/proposal-to-add-a-feature/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello, I&amp;rsquo;ve noticed that the heart rate alerts on my Garmin 265 only work by displaying a message on the watch screen. I don&amp;rsquo;t understand why the watch doesn&amp;rsquo;t vibrate. It would be great to add a feature that makes the watch vibrate along with the message, as I don&amp;rsquo;t look at my watch constantly during the day&amp;mdash;especially when I&amp;rsquo;m at rest.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Background temporal events never fire — registerForTemporalEvent silently ignored</title><link>https://forums.garmin.com/thread/440376?ContentTypeID=0</link><pubDate>Wed, 22 Jul 2026 15:16:36 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:1c1040b5-ba8a-4755-86c5-8601d8a960d3</guid><dc:creator>1234222</dc:creator><slash:comments>1</slash:comments><comments>https://forums.garmin.com/thread/440376?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440376/background-temporal-events-never-fire-registerfortemporalevent-silently-ignored/rss?ContentTypeId=0</wfw:commentRss><description>&lt;h1 dir="ltr" data-sourcepos="1:1-1:105;0-104"&gt;Background temporal events never fire on Epix 2 Pro (47mm) &amp;mdash; registerForTemporalEvent silently ignored&lt;/h1&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr" data-sourcepos="3:1-6:80;106-269"&gt;&lt;strong&gt;Device:&lt;/strong&gt; Epix 2 Pro 47mm &lt;strong&gt;SDK:&lt;/strong&gt; connectiq-sdk-mac-8.3.0 &lt;strong&gt;minApiLevel:&lt;/strong&gt; 3.4.0 &lt;strong&gt;App type:&lt;/strong&gt; watch-app (sideloaded via USB for development, not yet published)&lt;/p&gt;
&lt;h2 dir="ltr" data-sourcepos="8:1-8:11;271-281"&gt;Summary&lt;/h2&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr" data-sourcepos="10:1-10:327;283-609"&gt;&lt;code&gt;Background.registerForTemporalEvent()&lt;/code&gt; is called successfully (no exceptions, confirmed via on-device debug log written to Storage), but &lt;code&gt;ServiceDelegate.onTemporalEvent()&lt;/code&gt; is &lt;strong&gt;never invoked&lt;/strong&gt; by the system &amp;mdash; confirmed across two separate real-device test windows of 53 minutes and &amp;gt;7 hours, with zero invocations in either.&lt;/p&gt;
&lt;h2 dir="ltr" data-sourcepos="12:1-12:31;611-641"&gt;Manifest (relevant excerpt)&lt;/h2&gt;
&lt;div class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100" data-sourcepos="14:1-22:4;643-936"&gt;
&lt;div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"&gt;
&lt;div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="text-text-500 font-small p-3.5 pb-0"&gt;xml&lt;/div&gt;
&lt;div class="overflow-x-auto"&gt;
&lt;pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5"&gt;&lt;code class="language-xml"&gt;&lt;span&gt;&lt;span class="token token"&gt;&amp;lt;&lt;/span&gt;&lt;span class="token token"&gt;iq:&lt;/span&gt;&lt;span class="token token"&gt;application&lt;/span&gt;&lt;span class="token token"&gt; &lt;/span&gt;&lt;span class="token token"&gt;id&lt;/span&gt;&lt;span class="token token attr-equals"&gt;=&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;159a32c1-1d84-496e-ad00-1a3557457abb&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt; &lt;/span&gt;&lt;span class="token token"&gt;type&lt;/span&gt;&lt;span class="token token attr-equals"&gt;=&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;watch-app&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="token token"&gt;    &lt;/span&gt;&lt;span class="token token"&gt;entry&lt;/span&gt;&lt;span class="token token attr-equals"&gt;=&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;BodyCharge.MainApp&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt; &lt;/span&gt;&lt;span class="token token"&gt;minApiLevel&lt;/span&gt;&lt;span class="token token attr-equals"&gt;=&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;3.4.0&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span&gt;    &lt;span class="token token"&gt;&amp;lt;&lt;/span&gt;&lt;span class="token token"&gt;iq:&lt;/span&gt;&lt;span class="token token"&gt;permissions&lt;/span&gt;&lt;span class="token token"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span&gt;        &lt;span class="token token"&gt;&amp;lt;&lt;/span&gt;&lt;span class="token token"&gt;iq:&lt;/span&gt;&lt;span class="token token"&gt;uses-permission&lt;/span&gt;&lt;span class="token token"&gt; &lt;/span&gt;&lt;span class="token token"&gt;id&lt;/span&gt;&lt;span class="token token attr-equals"&gt;=&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;Background&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span&gt;        &lt;span class="token token"&gt;&amp;lt;&lt;/span&gt;&lt;span class="token token"&gt;iq:&lt;/span&gt;&lt;span class="token token"&gt;uses-permission&lt;/span&gt;&lt;span class="token token"&gt; &lt;/span&gt;&lt;span class="token token"&gt;id&lt;/span&gt;&lt;span class="token token attr-equals"&gt;=&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;SensorHistory&lt;/span&gt;&lt;span class="token token"&gt;&amp;quot;&lt;/span&gt;&lt;span class="token token"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span&gt;    &lt;span class="token token"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="token token"&gt;iq:&lt;/span&gt;&lt;span class="token token"&gt;permissions&lt;/span&gt;&lt;span class="token token"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span&gt;&lt;span class="token token"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="token token"&gt;iq:&lt;/span&gt;&lt;span class="token token"&gt;application&lt;/span&gt;&lt;span class="token token"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr" data-sourcepos="24:1-24:155;938-1092"&gt;(No &lt;code&gt;&amp;lt;iq:background&amp;gt;&lt;/code&gt; element &amp;mdash; confirmed this is not a valid child in this manifest schema version; build fails with a schema validation error if added.)&lt;/p&gt;
&lt;h2 dir="ltr" data-sourcepos="26:1-26:27;1094-1120"&gt;Code (relevant excerpt)&lt;/h2&gt;
&lt;div class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100" data-sourcepos="28:1-51:4;1122-1801"&gt;
&lt;div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"&gt;
&lt;div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="text-text-500 font-small p-3.5 pb-0"&gt;monkeyc&lt;/div&gt;
&lt;div class="overflow-x-auto"&gt;
&lt;pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5"&gt;&lt;code class="language-monkeyc"&gt;&lt;span&gt;(:background)
&lt;/span&gt;&lt;span&gt;class BgService extends Sys.ServiceDelegate {
&lt;/span&gt;&lt;span&gt;    function initialize() { Sys.ServiceDelegate.initialize(); }
&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;    function onTemporalEvent() {
&lt;/span&gt;&lt;span&gt;        // This log line is written to Storage as the VERY FIRST statement.
&lt;/span&gt;&lt;span&gt;        // It never appears in 7+ hours of real-device testing.
&lt;/span&gt;&lt;span&gt;        try { dbgLog(&amp;quot;BG-ENTER&amp;quot;); } catch(eLog) {}
&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;        registerBgSoon(); // re-arms next event
&lt;/span&gt;&lt;span&gt;        try {
&lt;/span&gt;&lt;span&gt;            performCheck(&amp;quot;BG&amp;quot;);
&lt;/span&gt;&lt;span&gt;        } catch (ex) {}
&lt;/span&gt;&lt;span&gt;        BG.exit({ &amp;quot;ts&amp;quot; =&amp;gt; nowSec() });
&lt;/span&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;span&gt;}
&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;function registerBgSoon() {
&lt;/span&gt;&lt;span&gt;    try {
&lt;/span&gt;&lt;span&gt;        BG.registerForTemporalEvent(Time.now().add(new Time.Duration(60)));
&lt;/span&gt;&lt;span&gt;    } catch(e) { /* not hit */ }
&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr" data-sourcepos="53:1-53:158;1803-1960"&gt;&lt;code&gt;getServiceDelegate()&lt;/code&gt; is implemented on &lt;code&gt;AppBase&lt;/code&gt; and returns &lt;code&gt;[new BgService()]&lt;/code&gt;. Build succeeds with the compiler explicitly confirming background wiring:&lt;/p&gt;
&lt;div class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100" data-sourcepos="55:1-59:4;1962-2144"&gt;
&lt;div class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"&gt;
&lt;div class="absolute right-0 h-8 px-2 items-center inline-flex z-10"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="overflow-x-auto"&gt;
&lt;pre class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5"&gt;&lt;code&gt;&lt;span&gt;WARNING: epix2pro47mm: The entry point &amp;#39;$.xxx.MainApp&amp;#39; was implicitly
&lt;/span&gt;&lt;span&gt;added to the background process since the app contains declarations
&lt;/span&gt;&lt;span&gt;annotated with (:background).&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 dir="ltr" data-sourcepos="61:1-61:32;2146-2177"&gt;What I&amp;#39;ve verified/ruled out&lt;/h2&gt;
&lt;ul dir="ltr" data-sourcepos="63:1-68:177;2179-2841"&gt;
&lt;li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="63:1-63:118;2179-2296"&gt;&lt;code&gt;registerForTemporalEvent()&lt;/code&gt; call itself does not throw (wrapped in try/catch, confirmed via persistent debug log).&lt;/li&gt;
&lt;li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="64:1-64:69;2297-2365"&gt;Manifest permissions &lt;code&gt;Background&lt;/code&gt; and &lt;code&gt;SensorHistory&lt;/code&gt; are present.&lt;/li&gt;
&lt;li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="65:1-65:185;2366-2550"&gt;App works perfectly when kept in the foreground &amp;mdash; the alarm logic itself (threshold crossing, debounce, vibration+tone) fires correctly and has been confirmed working live on-device.&lt;/li&gt;
&lt;li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="66:1-66:53;2551-2603"&gt;Tested with request interval as low as 60 seconds.&lt;/li&gt;
&lt;li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="67:1-67:61;2604-2664"&gt;No Do Not Disturb / Sleep mode active during test windows.&lt;/li&gt;
&lt;li class="font-claude-response-body whitespace-normal break-words pl-2" data-sourcepos="68:1-68:177;2665-2841"&gt;Simulator: manually triggering &amp;quot;Simulate Temporal Event&amp;quot; invokes &lt;code&gt;onTemporalEvent()&lt;/code&gt; correctly and the alarm logic runs as expected. The issue is specific to the real device.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 dir="ltr" data-sourcepos="70:1-70:12;2843-2854"&gt;Question&lt;/h2&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr" data-sourcepos="72:1-72:294;2856-3149"&gt;Is there a known issue with &lt;code&gt;registerForTemporalEvent&lt;/code&gt; on Epix 2 Pro (or this firmware version), or an additional device-side permission/setting (e.g. via Garmin Connect Mobile) required for a sideloaded app to actually receive background wake-ups, beyond the manifest &lt;code&gt;Background&lt;/code&gt; permission?&lt;/p&gt;
&lt;p class="font-claude-response-body break-words whitespace-normal" dir="ltr" data-sourcepos="74:1-74:107;3151-3257"&gt;Any pointers appreciated &amp;mdash; happy to provide the full watch firmware version or additional logs on request.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Best practices for heading/compass indicators on Watch Faces given magnetometer power gating?</title><link>https://forums.garmin.com/thread/440345?ContentTypeID=0</link><pubDate>Wed, 22 Jul 2026 08:07:09 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:0d29699c-7db8-483a-8288-5a8eadb8d5e9</guid><dc:creator>ovv20</dc:creator><slash:comments>2</slash:comments><comments>https://forums.garmin.com/thread/440345?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440345/best-practices-for-heading-compass-indicators-on-watch-faces-given-magnetometer-power-gating/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-path-to-node="6"&gt;Hi everyone,&lt;/p&gt;
&lt;p data-path-to-node="7"&gt;I&amp;#39;m currently developing a Connect IQ Watch Face (targeting AMOLED/MIP devices like Epix Gen 2 and Forerunner series) where the design incorporates a direction/heading arrow pointing along the bezel.&lt;/p&gt;
&lt;p data-path-to-node="8"&gt;I&amp;rsquo;m encountering the standard OS behavior where &lt;code data-path-to-node="8" data-index-in-node="48"&gt;ActivityInfo.currentHeading&lt;/code&gt; briefly updates for a few seconds (usually right after exiting a native app that activated the magnetometer) before freezing as the system power-gates the compass sensor to conserve battery.&lt;/p&gt;
&lt;p data-path-to-node="9"&gt;I fully understand the platform constraints&amp;mdash;specifically that &lt;code data-path-to-node="9" data-index-in-node="62"&gt;Toybox.Sensor&lt;/code&gt; events are restricted in &lt;code data-path-to-node="9" data-index-in-node="101"&gt;WatchFace&lt;/code&gt; apps to prevent excessive battery drain, and that continuous polling of the hardware compass isn&amp;#39;t permitted in low-power or even high-power watch face modes.&lt;/p&gt;
&lt;p data-path-to-node="10"&gt;Before pivoting the project structure, I would love to get advice from experienced developers on how you usually handle or approach this:&lt;/p&gt;
&lt;ol start="1" data-path-to-node="11"&gt;
&lt;li&gt;
&lt;p data-path-to-node="11,0,0"&gt;&lt;b data-path-to-node="11,0,0" data-index-in-node="0"&gt;UX / Fallback Patterns:&lt;/b&gt; When designing a watch face with a heading indicator, how do you gracefully handle stale heading data? Do you prefer hiding the indicator entirely when &lt;code data-path-to-node="11,0,0" data-index-in-node="176"&gt;currentHeading&lt;/code&gt; becomes &lt;code data-path-to-node="11,0,0" data-index-in-node="199"&gt;null&lt;/code&gt;/stale, or keeping the last valid bearing frozen?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-path-to-node="11,1,0"&gt;&lt;b data-path-to-node="11,1,0" data-index-in-node="0"&gt;Repurposing the Indicator:&lt;/b&gt; Have you found good design alternatives for an outer arrow on a watch face (e.g., repurposing it as a barometric trend indicator, wind direction pointer, or a high-power second hand)?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p data-path-to-node="11,2,0"&gt;&lt;b data-path-to-node="11,2,0" data-index-in-node="0"&gt;App Architecture:&lt;/b&gt; If live compass feedback is a core requirement, do you recommend switching to a &lt;code data-path-to-node="11,2,0" data-index-in-node="98"&gt;Watch App&lt;/code&gt; assigned to a HotKey, or pairing a Watch Face with a Glance/Widget?&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node="12"&gt;Any tips, architectural suggestions, or design best practices would be greatly appreciated!&lt;/p&gt;
&lt;p data-path-to-node="13"&gt;Thanks in advance!&lt;img style="max-height:240px;max-width:320px;" src="https://forums.garmin.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/12/3073.Screenshot_5F00_1.jpg" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>No response from support regarding missing payout &amp; missing June sales data</title><link>https://forums.garmin.com/thread/440337?ContentTypeID=0</link><pubDate>Wed, 22 Jul 2026 04:13:34 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:18227612-593f-4cae-9709-90e1f043dfce</guid><dc:creator>Cecan</dc:creator><slash:comments>3</slash:comments><comments>https://forums.garmin.com/thread/440337?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440337/no-response-from-support-regarding-missing-payout-missing-june-sales-data/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;br /&gt;Hi everyone,&lt;br /&gt;I&amp;#39;m writing here to ask if anyone else is experiencing severe delays with Garmin&amp;#39;s developer support.&lt;br /&gt;I&amp;rsquo;ve been trying to resolve a clear issue with my payouts for two weeks now, but I have received zero response or acknowledgment from the team:&lt;br /&gt;May payout underpaid: Report shows 585.09 CZK, but I only received 125.09 CZK across two transactions (missing 460 CZK).&lt;br /&gt;June sales data missing: Received only 34.86 CZK despite download stats clearly showing higher activity.&lt;br /&gt;I am extremely disappointed with the total lack of communication from support on financial matters. It&amp;#39;s frustrating to build for a platform when basic payout issues and support tickets are simply ignored.&lt;br /&gt;Has anyone had success reaching them regarding payout discrepancies recently?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Is there a way to see the exact number of downloads?</title><link>https://forums.garmin.com/thread/440277?ContentTypeID=0</link><pubDate>Tue, 21 Jul 2026 13:42:36 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:8e958118-5250-4d6d-8de7-bd75e88da2a2</guid><dc:creator>Finch&amp;#233; reggo</dc:creator><slash:comments>3</slash:comments><comments>https://forums.garmin.com/thread/440277?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440277/is-there-a-way-to-see-the-exact-number-of-downloads/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;Hi everyone,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I recently published my first application on the Connect IQ Store.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I was wondering if there is a way to view the &lt;/span&gt;&lt;span&gt;exact number of downloads&lt;/span&gt;&lt;span&gt;. I would like to know the precise number to understand how many installations my application has actually generated.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Is there a section in the Developer Portal, a report, or any other tool that allows developers to view the exact number of downloads in real time?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thank you in advance for your help!&amp;nbsp;&lt;span class="emoticon" data-url="https://forums.garmin.com/cfs-file/__key/system/emoji/1f60a.svg" title="Blush"&gt;&amp;#x1f60a;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Check out the new CIQ Sales Dashboard!!!!</title><link>https://forums.garmin.com/thread/440267?ContentTypeID=0</link><pubDate>Tue, 21 Jul 2026 10:41:01 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:472da064-028a-470d-b05c-02a2500b3e49</guid><dc:creator>Silvero Studios</dc:creator><slash:comments>0</slash:comments><comments>https://forums.garmin.com/thread/440267?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440267/check-out-the-new-ciq-sales-dashboard/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;&lt;span&gt;You can now see all your downloads, stats, country sales and much more. As well as you can now also compare 2 .csv files to see how much you have made in comparison, and what is selling better.&lt;/span&gt;&lt;a id="" href="https://garmin.silverostudios.com/dashboard/"&gt;&lt;br /&gt;https://garmin.silverostudios.com/dashboard/&lt;br /&gt;&lt;img src="https://forums.garmin.com/cfs-file/__key/communityserver-discussions-components-files/12/pastedimage1784285241206v1.png" alt=" " /&gt;&lt;img src="https://forums.garmin.com/cfs-file/__key/communityserver-discussions-components-files/12/pastedimage1784285241206v1.png" alt=" " /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Simulator problem</title><link>https://forums.garmin.com/thread/440220?ContentTypeID=0</link><pubDate>Mon, 20 Jul 2026 12:02:52 GMT</pubDate><guid isPermaLink="false">a9571b57-dd57-479e-8763-8f8a603e40aa:73891443-f908-4fa3-9102-baccc93331c1</guid><dc:creator>7333836</dc:creator><slash:comments>12</slash:comments><comments>https://forums.garmin.com/thread/440220?ContentTypeID=0</comments><wfw:commentRss>https://forums.garmin.com/developer/connect-iq/f/discussion/440220/simulator-problem/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello, I would need some advice regarding the simulator.&lt;/p&gt;
&lt;p&gt;I used to create some watch faces in VS Code, but now I have a problem even with a new, clean project. When I try to start the simulation, the simulator opens, the selected watch briefly flashes on the screen, and then an empty simulator window remains open. Debug does not start, and no error message appears.&lt;/p&gt;
&lt;p&gt;Can anyone advise me what might be wrong?&lt;/p&gt;
&lt;p&gt;I have the latest version of VS Code, the latest Garmin SDK as well, and I have tried different Java versions, from Java 8 up to the latest one.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>