What exceptions land in ERA viewer?

Do I have to do anything special for my app to report crashes to ERA?

I triggered an app crash by throwing an unhandled exception, but there was no ERA report generated.

  • Dumb questions:

    - is the app installed in the store? (I don't think you'll get an era for a sideload, unless it's also in the store)

    - did you sync the watch with connect following the crash? (this is when the crash log should be submitted)

    - is the app up to date? (ERAs are only available for the latest version of your app)

    - if you connect your device to a computer with the USB cable and browse its files/folders with File Explorer (windows) or OpenMTP (mac), check for ciq_log.yml and ciq_log.bak under \GARMIN\APPS\LOGS.

    If you have crashes and the logs haven't been submitted, they should be in ciq_log.yml. If logs have been submitted, they should be in ciq_log.bak. (ciq_log.yml is renamed to ciq_log.bak after sync)

  • An ERA report is just what's in the ciq_log.yml file from your device, with friendly stack traces.  There can be multiple crashes in the same file. Once synced, it's renamed ciq_log.bak. but that may not happen right away.  What do you see under apps/logs on your device?

  • - did you sync the watch with connect following the crash?

    Thanks, not such a dumb question. I did not think of that, though of course it is kind of logical that the device cannot send the report just over the air somehow.

    The device is not in my hand but in one of my users. I have a separate CIQ app registered for public beta testing, and that is what I used to give him a debug build that did not handle the exception, in hope of getting a stack trace out of it via ERA.

    In any case, we already found and solved the issue, but I will follow-up with the user and ask him to sync his device so that I can check if the ERA would have worked.

  • You can still ask the user to email you their ciq_log files.  If you see pc: values, look at this thread:

    https://forums.garmin.com/developer/connect-iq/f/discussion/231129/so-you-have-a-ciq_log-file-but-all-you-see-is-pc-without-a-friendly-stack-trace---what-to-do

    If you've updated your app in the store since the user installed it, you won't see it in ERA.

  • I have a separate CIQ app registered for public beta testing, and that is what I used to give him a debug build that did not handle the exception

    Hmmmm. There is no such thing as a *public* beta in Connect IQ (unless by that you mean an app where you just put "beta" in the title). If you actually marked the app as beta when you first uploaded it, it's more like a "private" beta that only you (the app dev) can download. (Funnily enough, a CIQ team member admitted that this implementation is not what was originally requested)

    So correct me if I'm wrong, but it sounds like you uploaded an app to store as a beta, but then you gave the end user a PRG for the same app to be sideloaded on to their device? Obviously in this case the end user would not have been able to download your app from the store unless you gave them your Connect credentials.

    In that case I don't think you can expect an ERA to be sent. I know what I said above ("is the app installed in the store?"), but better wording might have been: "Did the user install the app from the store?"

    [1/2]

  • If you look at an example CIQ_LOG.YML, you'll see that apps installed from the store include lines with Store-Id and Store-Version. Here's one of mine:

    Error: Unhandled Exception
    Time: 2025-03-22T23:55:22Z
    Part-Number: 006-B4024-00
    Firmware-Version: '22.24'
    Language-Code: eng
    ConnectIQ-Version: 5.0.2
    Store-Id: 18fb2cf0-1a4b-430d-ad66-988c847421f4
    Store-Version: 152
    Filename: ...
    Appname: Stryd Zones
    Stack:
      - pc: 0x10004842
      - pc: 0x100072b9

    Note that that the store-id is present in the store URL: [https://apps.garmin.com/en-US/apps/18fb2cf0-1a4b-430d-ad66-988c847421f4]

    Also note that the store-id is *not* the same as the UUID in manifest.xml.

    And note that sideloaded apps cannot have a store-id or store-version [as they weren't installed from the store]

    Sure, if you try to upload a PRG whose UUID duplicates another app in the store, it will fail. But none of the Connect IQ features for store-installed apps [like "off-device settings" and FIT file contributions] will work for a sideload, and I think ERA is one of those features. Especially since we know that ERA only works for the latest version of an app in the store, and if you sideload an app, there's no way to know which *store* version it corresponds to (if any). That's even assuming the store would do a "reverse lookup" from app ID to store ID for this purpose (which is doubtful imo, since it won't do that for settings or fit contributions).

    [2/2]

  • Ofc if you really meant that you just uploaded a normal app (without checking the beta checkbox) so any user could download it (while describing it as a "public beta"), then yeah, try asking the user to sync their device.

  • if you really meant that you just uploaded a normal app (without checking the beta checkbox)

    Sorry for not being clear earlier — yes, it's a normal app; I just include "beta" in the name and swap out the UUID when compiling for the beta version.

    The app displays data from an open-source server that people run at home to manage electric vehicle charging. The server data can vary significantly depending on each user’s setup, so having a few power users test it beforehand really helps improve quality before release.