The best 2D physics for JavaScript — fast, lightweight, and intuitive.
fast2d.com · zero dependencies · TypeScript-first · renderer-agnostic
Fast2D is a 2D physics engine built to beat Matter.js on both raw speed and developer ergonomics. The core is pure, allocation-conscious TypeScript with no runtime dependencies and no rendering baked in — drive it with WebGPU, WebGL, or a Canvas2D fallback. The long-term scope grows from rigid bodies to soft bodies to fluids.
Status: early foundation (M0). Collisions, constraints, and the demo gallery are on the roadmap.
npm install fast2dimport { World, Bodies } from "fast2d";
const world = new World({ gravity: [0, 9.81] });
const ball = world.add(Bodies.circle({ position: [0, 0], radius: 0.5 }));
world.add(Bodies.rectangle({ position: [0, 10], width: 20, height: 1, isStatic: true }));
world.step(1 / 60);
console.log(ball.position.y);Positions accept a Vec2, a [x, y] tuple, or { x, y } — whatever reads best.
- Fast — allocation-free hot paths, precomputed inverse mass/inertia, a data-oriented solver.
- Lightweight — zero runtime dependencies, tree-shakeable ESM + CJS, ships types.
- Intuitive — a tiny, well-documented API (
World,Bodies,Body,Vec2). - Renderer-agnostic — the core never touches the DOM; you own the pixels.
npm install
npm run typecheck
npm test
npm run build
npm run benchMIT © instafluff