IPluginCompatibility category class

When is the class category set to “Plugin Compatibility Class”? Is that only when using the IPluginCompatibility interface? Or also when providing the Compatibility array inside the moduleinfo.json file? I haven’t seen this class category set in any example.

Also, what is the DAW supposed to do when there are multiple values inside the Compatibility Array for “Old”? Would the first valid value be used?


The IPluginCompatibility interface could be used when the use of moduleinfo.json is not possible (not a bundle plugin for example on Windows). It is recommended to use moduleinfo.json for compatibility information. [3.7.5] Module Info and Plug-in Compatibility - VST 3 Developer Portal (steinbergmedia.github.io)

If plugin A and plugin B could replace the old plugin C:
the host could decide to use the first found in its registered plugins or inform the user about it and let him decide which one should replace plugin C (when not present): A or B?

1 Like

Thank you! @Yvan !
But what about the class category kPluginCompatibilityClass ("Plugin Compatibility Class")?
Is the DAW supposed to check for the IPluginCompatibility interface only when the moduleinfo.json file doesn’t exist AND the category is set to kPluginCompatibilityClass?

If the moduleInfo is used, no need to check for kPluginCompatibilityClass.
If there is no moduleInfo, and there is a kPluginCompatibilityClass exported as factory class then the host should use it. Check the example code in the SDK:

  • public.sdk/samples/vst-hosting/validator/source/validator.cpp

void Validator::testModule … check plugCompatibility


  • public.sdk/source/vst/testsuite/general/plugcompat.cpp*
1 Like