Parameters removal safety (automations/state recall)

Hello devs,

I was wondering if it’s currently safe to remove an existing automatable parameter from a plug-in.
My main concern is related to automations and parameters indexing, it would obviously be unavoidable to lose automation data for the parameter that is getting removed and I’m ok with that, but I’m worried I may break the indexing and consequently other saved parameter automations or even have the plug-in not being able to recall its state correctly depending on the plug-in format specifications. I’ve read about a similar issue with AU plug-ins but that was addressed long ago (JUCE 4.2.1), so I’m assuming the state recall is fine now (as long as the setStateInformation handles the missing parameter correctly, but that’s on me).
Has any of you ever done that? Any cons or things I should keep in mind to guarantee backward compatibility as much as possible?

Thanks in advance,
Federico Berti

This is safe for VST3 and AAX. It’s not particularly safe for other formats.

If your plugin is used in Logic Pro or GarageBand, then it’s not safe to remove automatable parameters. These hosts recall automation using parameter indices, rather than parameter identifiers; removing a parameter will cause the indices of subsequent parameters to change, breaking automation recall. This is a quirk of those hosts. Most other AU hosts use parameter identifiers when saving and recalling automation, so removing automatable parameters will be safe in programs like Live and Reaper.

The safest thing to do would be to leave the parameter in-place with the same index and identifier, and rename it to make it clear that it no longer does anything.

Thanks for chiming in, reuk.

Yes, this is what we’ve been doing so far, I hate it but it seems like it’s the only completely safe solution.

Thanks a lot,
Federico Berti