IIR filter pops when state changes (even with crossfading)

You maybe use a topology preserving filter (like the ones described by vladim) if you want to make fast modulations to the filter. For example when you modulate the filter with an oscillator.

For a normal use case a common IIR filter should be enough stable also when the user changes the value with a slider. Just make sure you smooth the filter cutoff value. I think JUCE already offers solutions for this. See here:

I never used the JUCE internal filter classes, so i can’t tell you how this works when you do block processing.