It needs to be reasonably high level and it needs to look nice and play nice.
Look nice It needs to have a 2D focus and have basic support for sprites, meshes and custom shaders.
It needs to be able to work with an existing WebGL context, play nice with context resize, play nice with the shared state (possibly by offering state resetting functionality), allow for a custom render loop, shouldn't call
requestAnimationFrame automatically. There are probably other requirements but you probably get the point; because of the GL shared state, you can't just drop anything in and expect it to work.
What I have tried Three.js works well, but it's very 3D-ish; I need something similar for 2D. I had a look at Pixi.js, Phaser.io and PhiloGL and I am still trying to understand how they fare in the "play nice" category.
I already tried Luma.gl, TWGL, regl and they work absolutely fine alongside our current engine; but they are very low level, I need something higher level and 2D-oriented.