Watch app cannot be downloaded on device. Device is listed as compatible in manifest and on the website, but not in the mobile app.

I keep getting emails from people saying they can't install my app on the Tactix 8. Everything on my end looks correct. On the Website, it lists the tactix 8 as compatible, but not in the connect iq mobile app. My manifeset has the lowest minimum api possible (1.2.0) and has all the appropiate devices ticked. (Looks good in the xml, but I wont copy the entire thing here unless requested). Furthermore, people are able to download it on the fenix 8, which I assumed would be in the same boat as the tactix 8. Anyone have any ideas or suggestions? Thanks.

App URL: https://apps.garmin.com/apps/aa34e9ae-7ad1-44fd-a391-55439615d8fe?tid=1

Screenshot from website:

Screenshot from mobile app:

manifest:

  • What about "App migration"? Is that enabled? It might "fix" what Garmin broke.

  • What about "App migration"? Is that enabled? It might "fix" what Garmin broke.

    If app migration was able to fix what Garmin supposedly broke, then clearly it isn't enabled, otherwise this problem wouldn't exist in the first place.

    And if OP were to enable it now, it wouldn't work retroactively. (I think one of the CIQ team members explicitly mentioned that it's not retroactive.)

    I'm not sure why the proposed solution of rebuilding the app and updating it in the store isn't good enough.

    Or were you asking in an attempt to rule out the possibility that app migration would've fixed it? i.e. If OP says "yes it's enabled", then you know for sure that app migration wouldn't have fixed it. If OP says "no, it's disabled", then we don't know anything either way (unless by some miracle, enabling it now actually does fix the problem).

    Tbh I don't think it matters. It's almost certain that Garmin broke something, and I don't think it matters that an optional setting would've fixed for it for some devs, except that maybe it would've served to mask the problem. Clearly it's broken for OP, and it shouldn't be.

    But since you mentioned it, I am kind of curious. Too bad there's probably no way we could know for sure unless we someone has a time machine.

    --

    EDIT - I take it back. Assuming that Tactix 8 always only had the new part numbers, then maybe there's a chance app migration would've (or should've) worked.

    But it's kinda moot now.

  • Looking into this further it seems that Tactix 8 was only released in February 2025, which ofc explains why the new part numbers didn't exist in January 2025.

    Now the real question is why Garmin did both of the following things:

    - added new part numbers for Tactix 8 to the existing fenix8* devices. (this seems correct)

    - changing the mapping for the existing Fenix 8 part numbers to suggest they also refer Tactix 8 models (this seems incorrect)

    Maybe the new part numbers in the config always referred to the real part numbers for actual Tactix 8 devices and the changes to the existing mappings were always "fake" (for display purposes only).

    But if the idea was to allow older Fenix 8 apps to automatically gain support for Tactix 8, obviously it didn't work.

  • I opened a bug report for this. Maybe we can get clarity instead of having to guess:

    https://forums.garmin.com/developer/connect-iq/i/bug-reports/connect-iq-store-website-falsely-claims-that-fenix-8-compatible-app-also-supports-tactix-8-app-was-last-updated-before-tactix-8-released 

    I still think this problem should be resolvable by rebuilding the project and uploading it to the store tho

  • What do you mean by "changing the mapping for the existing Fenix 8 part numbers to suggest they also refer Tactix 8 models"? There isn't a tactix8 "device". It's under fenix8, isn't it? So what was the change and where?

  • Please read the rest of the thread or even the first post (which has been edited a few times). I also tried to explain this more succinctly in the bug report.

    I never said there was a tactix8 Connect IQ device, I'm saying there are distinct Tactix 8 part numbers.

    Just as there used to be a distinct part number for Enduro 2 - different from the part number for Fenix 7X, even though both were in the same fenix7x device definition. As I said before, Garmin actually broke the Enduro 2 build by removing the Enduro 2 part number from the device configs, because the real Enduro 2 was supposed to be changed to use the Fenix 7X part number. They eventually put it back, for display purposes.

    It's just like how the single venu2 CIQ device has 4 part numbers for Venu 2 (WW), Venu 2 (APAC), Mercedes-Benz Venu 2 (WW), and Mercedes-Benz Venu 2 (APAC).

    From the customer's POV those are separate products. Just like how FR235 (WW) is different from FR235 (APAC). They even have different names (FR235 is called ForeAthlete 235 in Asia).

    And we all know that if you have certain build settings, you can include a given device (like fr235), but not all of its part numbers may be included in the build.

    Similarly, if you build for a given device (like fenix847mm) in the past, and it only had one part number at that time, any future part numbers won't be retroactively added to the app (disregarding app migration).

    To be clear fenix847mm and fenix8solar51mm used to have one part number each (in compiler.json) before Tactix 8 was released. Now they have two part numbers each.

    --

    I purposely wrote "Tactix 8" to refer to the model that the customer sees, not tactix8 to refer to a separate Connect IQ device ID.

    If I meant there was a separate tactix8 Connect IQ device ID, I would've said so. but I don't think I said that.

    So what was the change and where?

    As explained upthread, there is a deviceTypes API which maps part numbers (seen in compiler.json/partNumbers) to human-friendly model names (as well as product images, and store URLs), for the purpose of the compatible devices tab in the store website.

    You can actually look at this API to determine the store URL for variants like Fenix 8*, which is *not* always obvious from the Connect IQ device ID. For example, the store URL for Fenix 8 AMOLED (47mm/51mm) apps is https://apps.garmin.com/en-US/devices/fenix8-51mm/apps. Most ppl did not guess this, and instead falsely assumed there was no such URL. If you look at the deviceTypes API result, you can determine this with ease.

    I have actually explained this in the forums multiple times, but I don't blame you for missing it. I did explain it in this very thread.

    If you look at the endpoint, you will see that the base part numbers for the fenix8* devices are mapped to both Fenix 8 and Tactix 8.

    You will also see that Tactix 8 has its own part numbers which are associated with Fenix 8 models.

    Those are the two changes:

    - Existing part numbers B4536/B4533 (previously only for Fenix 8) were updated to also refer to Tactix 8 (and Quatix 8) in the deviceTypes API

    - But new part numbers B4775/B4776 (only for Tactix 8) were *also* added to the deviceTypes API

    I am saying that I think B4775/B4776 are the real part numbers for Tactix 8. But because of the changes to B4536/B4533, the store falsely claims that any app which supports B4536/B4533 (Fenix 8) also supports Tactix 8.

  • Sorry it's such a long thread, but I don't think it's a simple topic.

    Here's what I'm talking about:

    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"
    }

    Maybe you can see for yourself that part numbers of B4536/B4533 will be described as "Fenix 8 / Quatix 8 / Tactix 8" in the store (for AMOLED and Solar variants), but part numbers of B4775/B4776 will be described only as "Tactix 8".

    Yet a given Tactix 8 physical device [like a Tactix 8 AMOLED or Tactix 8 Solar] can clearly only have *one* part number. Both sets of part numbers can't be correct.

    My conjecture:

    - B4775/B4776 are the real part numbers for Tactix 8 (maybe always have been, since the Feb 2025 release)

    - B4536/B4533 are not used for Tactix 8 (not now and maybe not ever). Perhaps the name in the mapping was changed to include Tactix 8 in an attempt to be backwards compatible, but if so, there was a missing step somewhere (the step to allow apps supporting these part numbers to actually install on Tactix 8 devices). Maybe it's only for display purposes, but that doesn't make sense either.

    So if your app supports B4536/B4533, the store website will claim it's compatible with Tactix 8 but in reality, it isn't.

    And the store app reflects this reality. I think it uses different mapping data. You can see that the store app never lumps distinct models together, and it renders the names a bit differently (different uses of parens, trademark symbols, etc.). One example is that the store website lumps 47mm/51mm together but the app does not.

  • Sorry if I didn't write this clearly enough for you to understand. If you can do better, or if you wanna summarize with chatgpt, go for it.

    Sometimes I wonder what's the point of trying to analyze any kind of complex problem when you just won't be believed or understood.

  • Maybe you can see for yourself that part numbers of B4536/B4533 will be described as "Fenix 8 / Quatix 8 / Tactix 8" in the store (for AMOLED and Solar variants)

    Note that this EXACTLY matches OP's experience. Note that their app metadata indicates the app supports B4536/B4533 and not B4775/B4776, which makes sense since Tactix 8 and those part numbers did not exist in January 2025:

    [https://apps.garmin.com/api/appsLibraryExternalServices/api/asw/apps/aa34e9ae-7ad1-44fd-a391-55439615d8fe]

  • When I see your long posts my first thought is usually: TLDR. When It's a topic I'm really interested in, and I have time I'll probably still read it, but contemplating some specific information in a 20 word post is still easier than in 5 posts of 200 words each.