Alert on App updates?

Since not every App update is an improvement, or worse, might create problems, i’ve got auto-update off on alle my Apps (and Homey itself btw).

Is there a way to get an alert when a App is updated, instead of checking them all one-by-one from time tot time ?

You could try this one in the community store Homey Community Space

doesn’t look like I’m able to download it…

Did you download and run the HCS installer first?
https://homeycommunity.space/download



You can also use a little script, with this kind of flow:

Show available updates:

// Show updates for all apps installed
let myUpdatesArr = await Homey.apps.getApps().then(f => Object.values(f).reduce((r,b)=>Object.assign(r, b.updateAvailable ? {[b.name]: b.updateAvailable} : '' ), {}));
// timestamp
let SysInfo = await Homey.system.getInfo(); 
// Extract local time
var localTime = SysInfo.dateHuman.slice(SysInfo.dateHuman.indexOf(' ')+1); 

let myAppUpdates = JSON.stringify(myUpdatesArr, null, 1);
  //console.log ('Available app updates:' , myAppUpdates); 
  if ( myAppUpdates === '{}' ) {
    return 'No apps available updates';
  }
  if ( myAppUpdates != '{}' ) {
    return 'All apps available updates: \n' + localTime + ' \n' + myAppUpdates;
  }

Somehow sometimes apps get auto-update enabled after an update, and I want to be informed about that:
Show apps with auto-update enabled:

// Get list of apps with Auto Update enabled
let myAppUpdateEnabledArr = await Homey.apps.getApps().then(f => Object.values(f).reduce((r,b)=>Object.assign(r, b.autoupdate ? {[b.name]:b.autoupdate} : '' ), {}));

let myAppUpdateEnabled = JSON.stringify(myAppUpdateEnabledArr, null, 2);
// timestamp
let SysInfo = await Homey.system.getInfo(); 
// Extract local time
var localTime = SysInfo.dateHuman.slice(SysInfo.dateHuman.indexOf(' ')+1); 

return 'Apps with Auto Update enabled:\n' + localTime + '\n' + myAppUpdateEnabled;
1 Like

Script looks nice, but haven’t done anything yet with scripts

You only have to copy paste the code into this Homeyscript “Then” card: Run code and return Text-tag, Johan.
No script editing needed.
The script output gets stored into the local tag [Result], which you can use in notification cards:



But I get it if you prefer an app like Version Checker.

I"m just afraid I jump in to scripts as I did with Advanced Flows and go beserk :roll_eyes::laughing:

So much to do and learn, so little time :grin:

I hear you hehe. Did you manage to install the HCS app?
If that succeeded, you can install the Version checker app.

Ok, installed and ran script. But looks like the output is a bit garbled, dit I copy-paste incorect ?

This is in the Result-tag :

All apps available updates: 
17de april 2025 08:34:59 
{
 "Somfy TaHoma & Connexoon": {
  "version": "4.0.99",
  "permissions": []
 },
 "KlikAanKlikUit": {
  "version": "7.5.3",
  "permissions": [
   "homey:wireless:433"
  ]
 }
}
1 Like

I always used the VersionChecker app too, but a script might even be better (saves another app); thx @Peter_Kawa!

Only the Update available app doesn’t show all updates: I my case it only return an update for the Sonos app, but not the update for the Eufy Security app, which is reported by the VersionChecker app.

Does it check both stable and test updates? Because Sonos currently has a test-update, Eufy Security only stable updates…

1 Like

I like to view the app version and it’s permissions, but, to solely show the the app name from the JSON results (that’s the formatting you see), I’ll have to search and try on how to do that.

it’s more like I would expect an outpup without braces like :slight_smile:

ll apps available updates: 
17de april 2025 08:34:59 
 "Somfy TaHoma & Connexoon": {
  "version": "4.0.99",
  "permissions": []

 "KlikAanKlikUit": {
  "version": "7.5.3",
  "permissions": [ "homey:wireless:433" ]

Thanks @Henk_Renting !
You pay better attention than I do apparently :rofl: .
It should return test-app versions as well. I just installed the Version-Checker app for comparison
I’ll see what’s wrong here (no clue if I can fix it :rofl: )

1 Like

The braces can be filtered.

Oh, and I found out how to install the Version Checker app.
I just tried it, while I couldn’t get the windos installer to connect.
(All steps are done in your browser)

  1. Open https://homeycommunity.space
  2. Create a HCS account (‘person’ icon @ top right)
  3. All done & logged in? > hit ‘My Homeys’
  4. Select (one of) your Homey(s) and hit Install
  5. All done? > Hit ‘store’, select app and install

How do I do that ?

Haha, I was just letting you know, and went on the hunt for a fix in the meantime.
I guess you like this result better?:

To get it like that, just replace these three last lines:

  if ( myAppUpdates != '{}' ) {
    return 'All apps available updates: \n' + localTime + ' \n' + myAppUpdates;
  }

with these 4 lines lines

  if ( myAppUpdates != '{}' ) {
    myAppUpdates = myAppUpdates.replace(/{|}|[|]|"/g,'');
    return 'All apps available updates: \n' + localTime + ' \n' + myAppUpdates.replace(/ ,/g,'');
}

Can you let me know if it works on your side?



In case anyone’s interested about the how:
This part:
.replace(/{|}|[|]|"/g,'')
replaces any { or } or [ or ] or " signs with nothing ( '' means: an empty string).
(I can’t get my head around there’s still [ ] signs left in the result :face_with_peeking_eye: )

An example with words will be clearer:

let text = "Mr Blue has a blue house";
let result = text.replace(/blue/g, 'red');

the result becomes: “Mr Blue has a red house”

When using the case insensitive flag i:

let result = text.replace(/blue/gi, 'red');

it returns “Mr red has a red house”:

I found a way to have the script return non-stable apps;
Does this script below return the Sonos app, Henk?

// Show beta or test apps:

let myUpdatesArr = await Homey.apps.getApps().then(f => Object.values(f).reduce((r,b)=>Object.assign(r, b.channel ? {[b.name]: b.channel} : '' ), {}));

// Filter on test apps:
myUpdatesArr = Object.fromEntries(
    Object.entries(myUpdatesArr).
        filter(([key, value]) => 
            value !== "stable")
);

let myAppUpdatesBeta = JSON.stringify(myUpdatesArr, null, 1);
myAppUpdatesBeta = myAppUpdatesBeta.replace(/{|}|[|]|"|"/g, '');

return 'All test apps:' + myAppUpdatesBeta.replace(/ ,/g,'');

Yup works like a charm :

TYVM

[Edit] Did the same with the other one :

var localTime = SysInfo.dateHuman.slice(SysInfo.dateHuman.indexOf(’ ‘)+1);
myAppUpdateEnabled = myAppUpdateEnabled.replace(/{|}|[|]|"/g,’‘);
return ‘Apps with Auto Update enabled:\n’ + localTime + ‘\n’ + myAppUpdateEnabled.replace(/ ,/g,’');

1 Like

It does; but it outputs all my apps and whether the currently installed version of my apps are live or test…
So it does not show only the apps for which there is an update… :frowning:

@Peter_Kawa , when this script functions like it should, you should make a own topic about it. I think many would have a benefit of this script :slightly_smiling_face:

1 Like