With the announcement that Cubase is dropping VST2 support (https://helpcenter.steinberg.de/hc/en-us/articles/4409561018258), it seems that VST3 replaces VST2 is going to be important going forward. However, I had it disabled in the initial release of my VST3 plugin.
Unfortunately there is this comment:
Enable this if you want your VST3 plug-in to load and save VST2 compatible
state. This allows hosts to replace VST2 plug-ins with VST3 plug-ins. If
you change this option then your VST3 plug-in will be incompatible with
previous versions.
Is it just the saved chunks that are incompatible? Is it possible to work around that?
Or is it because getFUIDForVST2ID is used for the plugin ID instead of DECLARE_CLASS_IID?
So once the decision is made, there is no way to change your mind later.
Changing this define will make your plugin appear as a different plugin to the Host, so this will be a session breaking change. I remember having a hard time figuring out why a plugin wasn’t recognized anymore after porting it from a Projucer project to CMake a while ago and in the end I found out that it was because of both projects defining JUCE_VST3_CAN_REPLACE_VST2 different. This topic is about exactly that
Do hosts allow a session saved with a VST2 to be loaded with a VST3 version of the same plugin (let’s say you do set up as correctly as possible on the plugin dev side)?