Lots of depcriciations again.. Please stop renaming calls and classes

As with many updates, I get new log warnings about my integrations. My latest score with the current version are for example:

custom integration 'sureha' calls `async_add_job`, which is deprecated and will be removed in Home Assistant 2025.4
custom integration 'hacs' accesses hass.components.frontend. This is deprecated and will stop working in Home Assistant 2024.9
custom integration 'scheduler' calls `async_track_state_change` instead of `async_track_state_change_event` which is deprecated and will be removed in Home Assistant 2025.5
DEVICE_CLASS_PRESENCE was used from sureha, this is a deprecated constant which will be removed in HA Core 2025.1. Use BinarySensorDeviceClass.PRESENCE instead

Why are we changing these naming conventions all the time? I had this so many times with many integrations, while these integrations worked fine. It does in my opinion not make Home Assistant more stable, as it depends on all volunteers to invest their spare time and release yet another version, that needs to be tested and all users need to update them. Or is it a strategy to bash custom integrations?

Ok, when a manufacturer discontinues a service we can not help it. But in my opinion, a breaking change like this should come with a very, VERY good reason and examples why and how it has to be changed. For new features, introduce a new struct, but leave what we have please.

At the end these things might actually break the acceptance for Home Assistant.

Because people are using them incorrectly, which in turn is causing instability issues in HA. The api was refactored to make it clear what functions to use and when to use them. Also, the functions were deprecated because they cause unsafe threading issues which also lead to more instability issues. People then come to HA complaining that it’s unstable and crashes all the time, when in fact it’s not unstable, its some random custom integration using the API incorrectly.

The deprecation for these functions is extremely long, a year for each one.

Let the custom integration owner know so they can update the code.

TLDR: The changes are to make HA more stable and also notify custom integrations when they are miss-using the API.

That’s what y do very often.

These api changes have only happened once or twice over the life of HA (10 years). It’s really not that much. And it only affects custom integrations that are using the API incorrectly. I have custom integrations that I built ~4 years ago (and I haven’t updated them) that haven’t been impacted by any of these changes because I researched the proper API calls.

Strange thing is that I get new warnings for different integrations over time. The HACS warning message even seems not really appropriate. The ‘sureha’ integration and the ‘scheduler’ are new since this week. And what is the sense of depricating and actual removing a constant?

Because they should be using the Enum, not the constant for select entities. This is so that integrations can use translations for the selections in a dropdown list.

I’m not sure why you’re bent out of shape over this. At worse, you notify the custom integration owner to update their code.

Ok, thanks. Where can I read these kind of explainations, so I understand the urge?

You can read these changes in the developer documentation or on the developer blog.