I’d be keen to hear suggestions as well. Releasing AUv3 for macOS has some non-trivial implications that we’ve observed:
Sandboxing: it seems AUv3 on macOS runs in a sandbox which could mean that files (presets etc) saved by AUv2, VST, VST3 are not accessible (?)
Resizing: from what I’ve seen, an AUv3 plug-in size is determined by the host and not by the plug-in like AUv2, causing resizers etc to stop working
Logic seems to always open AUv3 if both AUv2 and AUv3 of the same plugin are installed, which could be challenging for users who don’t like the limitations that come with AUv3…
A way to allow JUCE plugins to work seamlessly between AUv2 on macOS and AUv3 in iOS would certainly be the easiest solution…
There are ways to disable file sandboxing in AUv3, so this shouldn’t be a problem as long this workarounds still work. Only network access is limited if i remember right. It will be impossible to add a subscription license in the future or verify the license because of this. This is the reason why i would like to stay with the AUv2 to keep this option open.
For my case, I now have good compatibility between logic ios and logic macos. But I think you still have to be extra careful for the ordering of parameters. if you’re not using JUCE_FORCE_USE_LEGACY_PARAM_IDS, juce will sort them differently in AUv3 and AUv2. If you set a different value for the versionHint of each of your parameter, you can control their order in the final flat list of parameters. Their index in that flat list is used by Logic for identifying that param in automation tracks: if you do not do that, then the wrong parameter will be automated when the project moves from ios to macos.
I’m also using JUCE_FORCE_USE_LEGACY_PARAM_IDS but I also enabled JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE. Think this breaks the parameter value scaling. I will make some tests if I have some time.