What's happening to watchfaces that calculate "active calories"?

I have been using watchfaces that calculated true "active calories" (AC) for many years. All of a sudden, they either don't show it anymore (show 0) or show IQ! instead of any data. More recent WFs seem to use a native AC which is strictly incorrect since it includes a resting calories component added to it.

What is going on? Surely, the most important number for weight loss, for example, is AC, yet this has always been a source of confusion. Those that chose to show it did the work to calculate it correctly, but now it seems Garmin have made changes that prevent that.

  • No worries! It does show a couple of things:

    - there must be some Garmin bug which caused your user profile data to get corrupted

    - some apps are clearly not validating their inputs (yes, your case is unusual, but I wonder what would happen if those apps were installed on a new watch where height, age or weight simply wasn't entered at all.)

    All's well that ends well tho. Glad you got it sorted it out!

    While doing that the "UserProfile" widget appeared

    lol classic garmin

  • Alfa-zulu is one (shows IQ! for AC)

    Alfa Zulu was last updated feb 2022.

    I have contacted the delveloper

    From my point of view, it is very likely that the program created in 2022 no longer fits the current IQ version due to the SDK used at that time.
    Has the developer replied? Most developers do this as a hobby, and you can't expect them to maintain their watchfaces for years.

  • Did you read the rest of the thread?

    The problem is solved. The root cause is that the OP’s user profile somehow became corrupted, causing their height to be read as 0 by CIQ apps. (It was previously established that height, weight and age are probably used to estimate active calories.)

    The proximate cause for the app crashes is clearly that certain apps were written with certain assumptions in mind, such as “height will never be zero or null”. Other apps likely had more defensive coding, which is why they displayed either 0 active calories or some nonsensical value.

    OP fixed the height in their user profile and everything works now.

    Amazingly, no firmware or app updates required. 

    From my point of view, it is very likely that the program created in 2022 no longer fits the current IQ version due to the SDK used at that time.
    Has the developer replied? Most developers do this as a hobby, and you can't expect them to maintain their watchfaces for years.

    In this case, your POV is incorrect (see above.)

    I will reiterate that it is neither necessary nor logical for developers to be constantly updating their apps solely to ensure they keep working (without making any other changes). If you had read my previous response, you would have seen that Garmin has postponed a significant change that they had planned to make to CIQ functionality on devices solely because they knew it would break many apps that are currently in the store (and installed on devices). This change was planned for years. In a nutshell, Garmin asked developers to stop using certain deprecated API functions, but developers did not comply. This example serves to demonstrate that Garmin actively seeks to avoid breaking existing applications, even when the cause of breakage would clearly be the developers’ “fault” (because they ignored Garmin’s request to stop using deprecated API functionality.)

    I will also once again point out that if you assume that any device firmware update is likely to cause CIQ apps to crash, and it’s a given that not every single developer of every single app will be able to instantly update their apps with new SDK versions, then we should expect to see apps crashing left and right every time a device firmware update is released. Again this is to say nothing of developers who have stopped maintaining an app for whatever reason (such as lack of interest or being hit by a bus). Even if this is the way it works (and I don’t think it is), that would clearly be very bad for the reputation of Connect IQ and Garmin itself. 

    TL;DR I think Connect IQ apps are supposed to be forwards compatible with new device firmware updates (or device firmware should be backwards compatible as far as CIQ goes). If a device firmware update breaks a CIQ app, that should be the exception to the rule, and in most cases, I think it would be unintentional.

    Yes Garmin sometimes introduces bugs / changes in behavior that affect CIQ apps. No, it’s not a given that every CIQ app is guaranteed to instantly break just because device firmware is updated. The nature of these bugs / changes often means they affect apps that rely on very complex, subtle or esoteric device behavior. In this case, calculating active calories from height, weight, age and total calories sounds fairly simple.

  • Most developers do this as a hobby, and you can't expect them to maintain their watchfaces for years.

    You make a great case here for why Garmin wouldn’t want to break existing CIQ apps with firmware updates

  • I think Connect IQ apps are supposed to be forwards compatible with new device firmware updates (or device firmware should be backwards compatible as far as CIQ goes).

    In that case, why can't you install some apps (or app updates) until you have updated the device firmware?

  • I edited my last comment to remove some stuff where I implied you’ve never worked as a software dev bc I thought it sounded arrogant, but I should’ve left it in. I also want to add that this kind of exchange is what I absolutely hate about these forums. Nothing personal.

    The people who are the most intelligent and knowledgeable are also the ones who dig in the most when they have some incorrect opinion which oversteps the bounds of their knowledge. Ngl, I’ve done it too and I’m not proud of it. Everyone knows what they know, but sometimes we don’t know what we don’t know.

    I mean, you can probably tell I at least develop for Connect IQ as a hobby, but you’re talking to me as if I have no idea what I’m saying, even though I was able to help OP solve their problem.

    In that case, why can't you install some apps (or app updates) until you have updated the device firmware?

    You think this is some kind of amazing gotcha, but it isn’t.

    It’s absolutely the case that when you build a new app (or new version of an existing app), the app version uses the latest CIQ “device files” (which are more or less tied to the latest SDK). This is Garmin’s method for ensuring new app versions have the latest required CIQ / firmware version on compatible devices. If you look back, I never suggested that new apps (or new app versions) don’t require new firmware.

    There is no such restriction for old apps. Old apps were built with the old device files, which means they can be installed on devices with old firmware. If this wasn’t the case, then you might expect Garmin to automatically disable or uninstall old apps whenever new device firmware is installed. After all, if new firmware is likely to break old CIQ apps, that would save Garmin a lot of embarrassment, right? Except they don’t do that because it would obviously piss users off. Same as regularly breaking old apps with new firmware would also piss users off. Even Apple, with their famous non-commitment to backwards compatibility, doesn’t go around breaking old apps for no reason. (Yes, I’m aware of several times they intentionally broke backwards compatibility, but they always announced it beforehand.) I have a pace calculator app from 2015 installed on my iPhone 14. Yeah, I would expect stuff like games and anything that requires an account to break if they were that old, but a simple pace calculator still works fine.

    Anyway, a CIQ app built in 2015-2023 should continue to work on devices for which it was originally built as long as the device doesn’t receive an update that either contains a bug or some sort of change in behavior that affects the app in question. As a matter of fact, since old devices eventually stop getting updates, then old apps on old devices are practically guaranteed to work forever.

    In OP’s case, something even more subtle happened - user profile data was somehow corrupted (which seems like it would point to a garmin bug somewhere). Even if an app was written so it wouldn’t crash when it reads a height of 0 (some of the watchfaces didn’t crash) clearly there’s nothing the app developer can do about bad input data.

  • Some devices may require a certain minimum SDK version ! 

  • I will also add that the Connect IQ store has a special feature called auto migration, where old apps automatically receive support for new devices without the developer lifting a finger, under certain circumstances. Note that the developer has to explicitly specify which devices are supported at compile time, and auto migration works for devices that didn’t exist when the app was last updated.

    Here’s a screenshot of the CIQ app option which enables or disables auto migration:

    If that doesn’t signal that Connect IQ was designed with backwards compatibility in mind, idk what does. Again I will say that old apps can receive support for new devices without dev lifting a finger. If Garmin intended that devs should be required to constantly recompile their apps with new SDKs, they would not have implemented that feature. On the contrary, the existence of that feature implies that Garmin knows devs won’t always be constantly recompiling their apps with new SDKs (and for new devices).

    But go off about how developers must constantly recompile their apps with new SDKs simply to avoid breakage. Especially when that false assumption had nothing to do with the problem in this thread.

    I will also add that even in the cases where device firmware updates break CIQ apps, it is usually not enough to simply recompile the app with the latest SDK. This is because, as I said, the reason CIQ apps break with device updates is because of new bugs or new behavior that impact apps in significant ways. It’s usually the case that either code has to be changed to work around bugs / new behavior, and/or developers have to contact Garmin and get them to fix whatever new problem was introduced (meaning the ultimate fix is either a new SDK version and/or new device firmware)

    But idk what I’m talking about bc I’ve gone against folk Garmin forum wisdom. ¯\_(ツ)_/¯

    All I can say is that on both the Garmin forums, the Garmin subreddit and certain clickbait blogs (not DCR), I see a ton of misinformation and misconceptions about the most basic Connect IQ concepts, as people who don’t actually develop CIQ apps try to figure out how it all works form the outside looking in. It’s fine, but it’s pretty frustrating to actually put in a bit of work to try to help someone figure out a problem, only to be told that the real problem is actually something else. In this case, no amount of app or firmware updates would have helped OP, unless a firmware update could’ve uncorrupted their user profile. Contacting the developer might have helped if the dev was willing to go through all the troubleshooting steps that I did.

    So maybe next time I won’t try to help.

  • Don't stop helping!  You saved me countless hours and should feel good about your contribution. Forums are places where some take advantage of the anonimity forums offer. 

    Thanks again.