Acknowledged
CIQQA-3489

Connect IQ store website falsely claims that Fenix 8-compatible app also supports Tactix 8 (app was last updated before Tactix 8 released)

The problem:

- A Fenix 8-compatible app was last updated in the store in January 2025 (before Tactix 8 was released). [It's not my app]

https://apps.garmin.com/apps/aa34e9ae-7ad1-44fd-a391-55439615d8fe 

- The CIQ store website says Tactix 8 AMOLED / Solar are compatible. (They're lumped in with Fenix 8 AMOLED / Solar, respectively)

- The CIQ store app does not say Tactix 8 is compatible (notably, the CIQ store app never lumps distinct models together)

- Users report the app won't install on Tactix 8

See: https://forums.garmin.com/developer/connect-iq/f/discussion/420066/watch-app-cannot-be-downloaded-on-device-device-is-listed-as-compatible-in-manifest-and-on-the-website-but-not-in-the-mobile-app 

The cause (afaict):

- CIQ store website's deviceTypes API endpoint (falsely?) claims Tactix 8 is associated with the (base) Fenix 8 part numbers (006-B4536-0 and 006-B4533-0).

The same endpoint also has separate Tactix 8-only part numbers (006-B4775-00, 006-B4776-00). These seem to be the *real* part numbers for Tactix 8

- This means the Connect IQ website falsely claims that apps which support Fenix 8 (B4536 / B4533) also automatically support Tactix 8 (even if those apps do not support B4775 and B4776)

- The Connect IQ app makes no such claim

Investigation:

The deviceTypes API endpoint used by the Compatible Devices tab in the store website has the following Tactix 8-related part numbers:

[https://apps.garmin.com/api/appsLibraryExternalServices/api/asw/deviceTypes]

...
{
    "id": "308",
    "partNumber": "006-B4536-00",
    "name": "fēnix® 8 AMOLED (47mm/51mm)",
    "additionalNames": ["quatix® 8 AMOLED (47mm/51mm)", "tactix® 8 AMOLED (47mm/51mm)"],
    "imageUrl": "https://res.garmin.com/en/products/010-02905-00/v/pd-06-sm.jpg",
    "urlName": "fenix8-51mm"
},
...
{
    "id": "311",
    "partNumber": "006-B4533-00",
    "name": "fēnix® 8 Solar (51mm)",
    "additionalNames": ["fēnix® 8 Dual Power (51mm)", "tactix® 8 Solar (51mm)"],
    "imageUrl": "https://res.garmin.com/en/products/010-02907-10/v/rf-sm.jpg",
    "urlName": "fenix8s-51mm"
},
...
{
    "id": "324",
    "partNumber": "006-B4775-00",
    "name": "tactix® 8 – 47 mm, AMOLED",
    "additionalNames": ["tactix® 8 – 51 mm", "AMOLED"],
    "imageUrl": "https://res.garmin.com/en/products/010-03405-00/v/pd-07-sm.jpg",
    "urlName": "tactix8-47-51"
},
...
{
    "id": "335",
    "partNumber": "006-B4776-00",
    "name": "tactix® 8 – 51 mm, Solar",
    "additionalNames": ["tactix® 8 – 51 mm", "Solar", "Elite"],
    "imageUrl": "https://res.garmin.com/en/products/010-03407-00/v/pd-08-sm.jpg",
    "urlName": "tactix8s-51"
}

Note that Tactix 8 is listed as part of both the old base Fenix 8 part numbers (B4536 and B4533) and in its own new, dedicated part numbers (B4775, B4776).

My theory:

- (maybe) when Tactix 8 was released, the real devices always used the new part numbers (I can't confirm or deny this as I don't have the real hardware)

- the new part numbers were ofc added to fenix8*/compiler.json (this can be easily confirmed - new versions of those files have the new part numbers, and old version from before the Tactix release in Feb 2025 do not)

- the new part numbers were ofc added to the part number mapping in the deviceTypes API

So far so good.

But it seems that *also*:

- the mappings for the old part numbers (for Fenix 8) were also updated to refer to Tactix 8 

I'm not sure why this happened. I don't know if Tactix 8 *used* to have the same part numbers as Fenix 8, or if they always had the new part numbers.

But either way, this dev's *appears* to support Tactix 8 (at least on the CIQ website) but in reality it doesn't.

Ofc this can almost certainly be rectified by rebuilding (re-exporting) the project and updating the app in the store. (When I export for fenix8* now, ofc the new Tactix 8 part numbers are included.)

But I'm curious about why/how this happened and how it can be fixed / prevented in the future.

Should the mappings for B4536 and B4533 be reverted so they no longer refer to Tactix 8?

Why doesn't the Connect IQ store app have the same problem - does it use different part number mapping data? [*] Does it have something to do with the fact that store app doesn't group multiple similar models together (e.g. Fenix, Enduro, Quatix, Tactix) like the website does? Based on the rendering of the product names, and the fact the 47mm and 51mm variants are separate in the Connect IQ store app (but combined in the deviceTypes API), it seems that it is using different mapping data.

[*] If so, can the store website be updated to use the same part number mapping as the store app?

  • Based on everything I said above, I would expect apps which *actually* support Tactix 8 models (meaning they support part numbers B4775 and/or B4776) to have *double* entries in the supported devices tab:

    - one for each of the real Tactix 8 part numbers (with text like "Tactix 8...")

    - one for each of the base Fenix 8 part numbers (with text like "Fenix 8.../ Quatix 8..../ Tactix 8...")

    And as a matter of fact, this is true for the popular Crystal watchface.

    I'm sure it would be true for any app that was built recently, which targets the fenix847mm and fenix8solar51mm Connect IQ devices 

    https://apps.garmin.com/apps/9fd04d09-8c80-4c81-9257-17cfa0f0081b 

    Obviously the 1st and 3rd entries below are for B4536/B4533

    Obviously these are the entries for B4775/B4776

  • I will point out this seems to be the inverse of the Enduro 2 situation last year, where the real device's part number was supposed to be changed to match the base Fenix 7X part number (both "models" are part of the fenix7x CIQ device config). The Enduro 2 part number was removed from the fenix7x config (compiler.json), which resulted in devs being unable to build apps for Enduro 2 for a couple of months.

    It turned out that the device team never got around to changing that part number (in that period of time)

    But regardless of that, the mapping in the deviceTypes API was never changed. The base Fenix 7X part number description did not refer to Enduro 2, meaning that even if apps built for fenix7x (without the Enduro 2 part number) were successfully installable on Enduro 2 in the *future* (once the part number was changed in firmware), the CIQ store website would not list Enduro 2 as a compatible device.

    In the end, the old Enduro 2 part number was added back to fenix7x/compiler.json, simply for display purposes.

    (Tbh I have no idea if the real part number was ever changed in the end.)

    So in that case, one problem was that the description in the deviceTypes mapping would not be changed to reflect reality. And instead of changing the description in the mapping, an old, unused, part number was retained in the device config.

    This seems to be the opposite problem, where new software part numbers were added to support Tactix 8 (under the umbrella of existing CIQ device configs / hardware part numbers). The deviceTypes mapping (description) for the base Fenix 8 part numbers has been changed, but maybe it shouldn't have been?

    Maybe there's some insight that I'm missing, since I don't know all the details.

  • For context:

    - The fenix847mm Connect IQ device config used to only have the 006-B4536-00 part number (before Tactix 8 was released). Now it also has 006-B4775-00.

    - The fenix8solar51mm Connect IQ device config used to only have the 006-B4533-00 part number (before Tactix 8 was released). Now it also has 006-B4776-00.

    --

    B4536 is mapped in the deviceTypes API to Fenix 8 / Quatix 8 / Tactix 8 (47/51mm AMOLED)

    B4775 is mapped in the deviceTypes API to Tactix 8 (47/5mm AMOLED)

    --

    B4533 is mapped in the deviceTypes API to Fenix 8 / Quatix 8 / Tactix 8 (51mm Solar)

    B4776 is mapped in the deviceTypes API to Tactix 8 (51mm Solar)

    -- 

    Clearly there is an overlap/discrepancy here. For example, a given physical instance of a Tactix 8 51mm Solar can only have one part number - either B4533 or B4776. And that part number determines which apps can be installed on the physical device. If any Tactix 8 51mm Solar ever had a part number of B4533 (it's not clear to me that it did), then the app mentioned in OP would've installable on it. But any Tactix 8 51mm solar which has a part number of B4776 will not be able to install their app.

    Again I think B4775/B4776 are the real part numbers for Tactix 8, and the mapping for B4536/B4533 should not have any references to Tactix 8, unless some change is made so apps which support those part numbers (and not B4775/B4776) can be installed on Tactix 8 devices

    In other words, the current mapping of the old part numbers to Tactix 8 models only has an effect for display purposes, but not actually for allowing the app to be installed.

    So either apps supporting B4533 (for example) should be installable on either B4533 OR B4776 devices, or the fake B4533 -> Tactix 8 mapping should be removed.

    Same goes for B4536 and B4775.

    Again it's not clear to me if any Tactix 8 device in real life ever used the old part number. But maybe it wouldn't hurt to allow B4536 apps to install on B4775 devices and B4533 apps to install on B4776 devices, becomes it would mean people like the dev of the app mentioned in the bug report wouldn't have to rebuild their apps to gain Tactix 8 support. Maybe it would be a special form of auto-migration.

    Anyway I don't know what the proper solution is, but the current situation seems to be problematic.