Ah I see, I figured that your windowed system would probably allow isolation of WebGL components if you really engineered it well, but figured that it's a fairly hefty requirement for a side project so didn't really expect it - so I'm impressed that you did.
The overall system was just so smooth that it also seemed that you may have been using WebGL for the 2D rendering as well, since I wrote the tightest render loops that I could in HTML5 canvas a few years back, and still couldn't manage persistent performance (Could also just be that your machines are better than mine, or that browsers have improved significantly since then, or the effects of caching if you're reusing the same grid image). The case was actually very similar, where I was doing scrolling blocks of infinite procedural terrain, drawing a grid in each block (which later became a wire mesh. Sort like this
Out of curiosity, if you're still around, are you using the canvas print/stroke text functions? Or your own text renderer? I've just been fighting different browser behaviours for stroke/print text, and am considering writing my own text printing library, but you guys seem to be one step ahead of me in general UI capabilities (I've been writing a lot of rendering libraries, procedural stuff, and AI stuff, for an indie project, but am now trying to make a perfectionist's canvas UI library from scratch with slow success).