Yeah, shaders can be pretty expensive, so you have to be careful with them, especially in web builds. You could make a simpler version of the shader for the web version, or disable some of the effects entirely using OS.has_feature("web").
The 120 physics tick rate could definitely be part of the problem too. Since the default is 60, you're making the game perform twice as many physics updates, which can be especially costly in the browser.
There could also be unnecessary _process() or _physics_process() calls, particles, lights, transparent materials, or too many draw calls, but it's hard to say without looking at the profiler or the code.
I played your game in the browser, and it runs pretty smoothly for me.