In WebGL 2, instancing or instanced rendering is available by default. Instance rendering is a way to execute the same drawing commands many times in a row, with each producing a slightly different result. This can be a very efficient method for rendering a large amount of geometry with very few API calls.
Instancing is a great performance booster for certain types of geometry, especially objects with many instances but without many vertices. Good examples are grass and fur. Instancing avoids the overhead of an individual API call per object, while minimizing memory costs by avoiding storing geometric data for each separate instance.
Here's a quick example:
gl.drawArraysInstanced(gl.TRIANGLES, 0, 3, 2);