I have a couple of designs using 74HC595BQ-Q100,115 shift registers. Some are using the SO-16 package, some the DHVQFN16. Some have five shift registers, some have three. ALL have a significant noise spike when the data is loaded to the output register. I am completely sure that it's not the update itself. Series resistors limit the rise and fall times of the control signals to values that are slow but within the chip data sheet, and if I disable the output update, the noise does not happen even though I'm re-writing the shift register.
I've gone as far as internal engineers at Nexperia who confirm that the SR itself is causing the noise "oscillating during update". The footprints for both packages don't support getting the bypass caps any closer than I currently am, and I've tried bypasses from 1nF to 10uF, multiple caps.. I can't afford the room for X2Y caps here, and no guarantee that that would solve the problem.
The outputs go to an LED display through series resistors. All that is within package ratings, and I can't change the output current demand. I have seen that the noise goes away if I completely disconnect the outputs, but even 4.7K resistors in series produce almost as much noise as the 68 ohm resistors currently used.
The frequency of interest is in the 100's of kHz so shielding materials work particularly poorly down there. I've tried Mu metal, Finemet, flexible ferrite.. Nothing makes a noticeable change.
As you can see, I'm forcing all the current in both VCC and GND paths to go through the capacitor pads, not even allowing a "T" connection.
I've actually toyed with the idea of using a programmed ARM here, I can get one in a very similar package, internal clock, and even at the same price! However that's a bit of a project with no guarantee of success.