Skip to content

instafluff/Fast2D

Repository files navigation

⚡ Fast2D

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.

Quick start

npm install fast2d
import { 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.

Why Fast2D?

  • 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.

Docs

Develop

npm install
npm run typecheck
npm test
npm run build
npm run bench

License

MIT © instafluff

About

The best 2D physics for JavaScript

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors