How to "gracefully" introduce breaking change in existing homey app?

I made an app for homey-ismartgate integration. It was my first Homey app. I made a settings page where you can input id, username and password for your ismartgate device, and interact with it via flows. The problem with this approach is that it’s not so intuitive for users to have to go into settings to fill in username and password there, and it also means they are limited to one ismartgate device per Homey. I got some feedback that many users expect to be able to add their ismartgate as a device, so they can see it as a tile.

How could I transition from the current approach (settings-based) to the proposed approach without breaking people’s existing setup? In general, how do Homey app developers deal with breaking changes?

The issue is that, as far as I understand, you currently don’t provide a device driver but instead have the entire app act as a sort-of device. That makes things difficult to transition because with drivers you would have been able to deprecate the old one and create a new one for new users/devices to use.

You can start by implementing a proper driver for your device and place a big warning on the settings screen that people should use the device driver instead, and also encourage existing users to transition because at some point in the future the single-device-per-app method will not be supported anymore.

Then somewhere in the future, remove the settings page. You might still consider keeping the old code that handles the device based on the old settings, so flows don’t break, and then later also remove that code and hope people will have transitioned.

1 Like