I wanted to make an addition to my app , but because of the limitations, I ended up making a web tool called Flow Doctor . It’s still in beta, but I think it’s getting pretty good.
This is what you can do:
Scans every flow and flags broken ones, missing apps, missing devices, and deprecated cards.
Shows each app with a real usage signal — number of devices it owns and number of flows it appears in.
Issue details use real names (“Stue: Varmepumpe → Turn on”) instead of raw IDs.
Detects extension apps (like MELCloud extension) and credits them to their parent.
Flags updates, crashed apps, and genuinely unused apps so you can keep your install tidy.
Runs entirely in your browser — no backend, no app to install.
Available in English, Norwegian, German, and Dutch.
If you find anything strange, please use the “report bug” function to let me know. It will copy a lot of device info to your clipboard (needed to debug, along with a good description), but there shouldn’t be any private info there. Make sure you check it out, though.
Would it also be possible to have an option to filter out disabled flows (in the “info” section)?
(Or even made into a separate section besides “info” and “healthy”?
Thanks for the feedback. I actually had that filter, but removed it. I’ll put it back, but right now I’m trying to create some way of tracing execution.
That’s great, thx.
I also notice that when the tool detects an update for an app and you click the link to the Homey App Store, it redirects to the latest stable version, not the latest testversion.
Also, it seems that at first it showed testbuild updates as well, but now it doesn’t anymore…
I will see if I can detect if it’s running on test or not, but might have to rely on heuristics. If it’s == stable, then updated. If it’s < stable, then not updated. If it’s > stable, then test. If it’s > stable and < test, then might need update etc.
Isn’t is possible to just compare the latest version number on the Homey App Store (whether stable or test) to the installed version number? And if the installed version is lower, show that there is an update?
Since the tool doesn’t update an app itself, the user can always decide if hee chooses to update to a testversion or not…
Are you sure you actually have the test version installed? I install my app locally, so there’s nothing in the manifest to tell where it’s from. I then default to local, but I guess that’s a flaw - if the installed version is > app store && <= test, then it should be test. I could even add if it’s > test, then mark it as local (unless I find something else to use for tagging as local install).
Ok, so the manifest shows “appstore” or “devkit”, which translates into “official” or “side-loaded”. I’ll add a badge for side-loaded apps, and add both the app store and test versions for the app and links to both the normal and test versions.
Unfortunately, there doesn’t seem to be any method (that isn’t CORS blocked) to find the store versions if the app is side-loaded (both versions in the manifest are “null”), but at least it’s now marked as “dev” with links to both versions.
Sorry, I am afraid I do not understand what you are trying to say. I am not a developer, so forgive me my ignorance.
I have no sideloaded apps, btw.
Most logical for me would be that if the tool recognizes a higher version in the Homey App Store (whether stable of test) than installed (whether stable of test), it would show that there’s an update available and the user can choose to install it or not…
Well, CORS means I cannot read the information from Athom’s pages, and there doesn’t seem to be an API call to get it unless the app is downloaded from the store. When I develop my app, I load it directly as part of testing and when I discover something didn’t work I continue that circle until it works. I then upload it - but I don’t install it from the store. In that case, there’s no way to find the store versions.
As for apps installed from the store, I can only read the information provided with the app - I still cannot check with the store.
I’m looking into if there are any ways I can proxy the call to get around the CORS limitation. I’ll come back to you