Is WebGL2 easier to lose context than WebGL1?

I embedded about eight 3D views in one page. Previously WebGL1 has no problem in displaying them. After I switch to WebGL2, WebGL context was lost for a few of the 3D views. Is this expected? Or maybe there is a way to improve it? My page is at iCn3D: Web-based 3D Structure Viewer .

Is WebGL2 easier to lose context than WebGL1?

I would say no. If you experience this issue in a browser, I suggest you file a bug at the respective vendor.

Looking at your browser console, you definitely want to make sure that your shaders do no throw warnings like:

THREE.WebGLProgram: Program Info Log: WARNING: Output of vertex shader ‘fogDepth’ not read by fragment shader
WARNING: Output of vertex shader ‘webgl_6be9069b2f9ad619’ not read by fragment shader
WARNING: Output of vertex shader ‘webgl_df9f2baffb0c7e86’ not read by fragment shader

BTW: I would recommend that you implement your app differently and completely avoid animation loops. Instead, use the change event listeners of controls classes like OrbitControls to redraw the scene if the user performs an interaction. This kind of “on demand” rendering will make your app much more resource efficient. Most viewer applications do it this way. They only use an animation loop if animations (like a walk animation of a character) are actually played.