I’ll put this here again, as I’ve talked about it deep down into another topic
In short, I tag my repo with a version number (associated to the plugin). So let’s say Core breaks my plugin, I’ll tag the current state of my plugin as a specific version and then start the development of the next version that works with latest.
This permits those on older versions of Discourse to still use my plugin, they just have to alter their app.yml to reference the tag/branch. And those that run latest, can pull down latest without any issue as well.
It has worked well for the subset of plugins I maintain. It took me a while to get in the habit of doing those steps, and I know a few of the plugins I built have had people make use of the tag/branch until they could upgrade their Discourse instance accordingly.