Three.js can use WebGL to render your scenes on all modern browsers. For older browsers, especially Internet Explorer 10 and below, you may have to fallback to one of the other [link:https://github.com/mrdoob/three.js/tree/master/examples/jsm/renderers renderers] (CSS2DRenderer, CSS3DRenderer, SVGRenderer). Additionally, you may have to include some polyfills, especially if you are using files from the [link:https://github.com/mrdoob/three.js/tree/master/examples /examples] folder.
Note: if you don't need to support these old browsers, then it is not recommended to use the other renderers as they are slower and support less features than the WebGLRenderer.
Google Chrome 9+, Firefox 4+, Opera 15+, Safari 5.1+, Internet Explorer 11 and Microsoft Edge. You can find which browsers support WebGL at [link:https://caniuse.com/#feat=webgl Can I use WebGL].
Here are some features used in three.js. Some of them may require additional polyfills.
|Typed Arrays||Source||BufferAttribute, BufferGeometry, etc.|
|Web Audio API||Source||Audio, AudioContext, AudioListener, etc.|
|WebXR Device API||Source||WebXRManager|
|Promise||Examples||GLTFLoader, DRACOLoader, BasisTextureLoader, GLTFExporter, VRButton, ARButton, etc.|
|File API||Examples||GLTFExporter, etc.|
|URL API||Examples||GLTFLoader, etc.|
|Pointer Lock API||Examples||PointerLockControls|
Just import polyfills based on your requirements. Taking IE9 as an example, you need to polyfill at least these features: