Matter.js
Matter.js is a JavaScript physics engine with support for a wide array of features: physical properties (mass, area, density etc.), rigid bodies of any convex polygon, restitution (elastic and inelastic collisions), conservation of momentum, friction and resistance, constraints, composite bodies, sleeping and static bodies, collisions, time scaling, canvas renderer, WebGL renderer (requires pixi.js) and much more.